From 120a626d628edef3ce667e3c4943c28a5e73a8b5 Mon Sep 17 00:00:00 2001 From: Leandro Beretta Date: Thu, 11 Sep 2025 10:15:41 -0300 Subject: [PATCH 1/3] Support for configure grpc client to send logs to Loki --- api/flowcollector/v1beta2/helper.go | 9 + ...observ-operator.clusterserviceversion.yaml | 6 +- .../v1.9.2-community/bundle.yaml | 84 ++ .../v1.9.2-community/index.yaml | 6 + .../v1.9.2-community/other.yaml | 7 + .../unreleased/v1.9.2-community/bundle.yaml | 840 ++++++++++++++++++ .../unreleased/v1.9.2-community/index.yaml | 6 + .../unreleased/v1.9.2-community/other.yaml | 7 + ...observ-operator.clusterserviceversion.yaml | 4 +- go.mod | 2 + go.sum | 22 +- .../consoleplugin/consoleplugin_objects.go | 22 +- .../consoleplugin/consoleplugin_test.go | 8 +- .../controller/flowcollector_controller.go | 2 +- internal/controller/flp/flp_controller.go | 2 +- .../controller/flp/flp_pipeline_builder.go | 101 ++- internal/controller/flp/flp_test.go | 4 +- internal/controller/flp/metrics_api_test.go | 2 +- internal/pkg/helper/loki_config.go | 49 +- .../flowlogs-pipeline/pkg/api/encode_prom.go | 1 - .../flowlogs-pipeline/pkg/api/write_loki.go | 73 +- vendor/modules.txt | 5 + 22 files changed, 1198 insertions(+), 64 deletions(-) create mode 100644 catalog/unreleased-legacy/v1.9.2-community/bundle.yaml create mode 100644 catalog/unreleased-legacy/v1.9.2-community/index.yaml create mode 100644 catalog/unreleased-legacy/v1.9.2-community/other.yaml create mode 100644 catalog/unreleased/v1.9.2-community/bundle.yaml create mode 100644 catalog/unreleased/v1.9.2-community/index.yaml create mode 100644 catalog/unreleased/v1.9.2-community/other.yaml diff --git a/api/flowcollector/v1beta2/helper.go b/api/flowcollector/v1beta2/helper.go index bbd5a93b5..92f3945e6 100644 --- a/api/flowcollector/v1beta2/helper.go +++ b/api/flowcollector/v1beta2/helper.go @@ -196,3 +196,12 @@ func (spec *FlowCollectorSpec) HasExperimentalAlertsHealth() bool { func (spec *FlowCollectorSpec) DeployNetworkPolicy() bool { return spec.NetworkPolicy.Enable != nil && *spec.NetworkPolicy.Enable } + +func (spec *FlowCollectorFLP) HasExperimentalLokiGRPCClientProtocol() bool { + if spec.Advanced != nil { + env := spec.Advanced.Env["LOKI_USE_GRPC_CLIENT_PROTOCOL"] + useGRPC, err := strconv.ParseBool(env) + return err == nil && useGRPC + } + return false +} diff --git a/bundle/manifests/netobserv-operator.clusterserviceversion.yaml b/bundle/manifests/netobserv-operator.clusterserviceversion.yaml index 6a3c914de..58f703cfa 100644 --- a/bundle/manifests/netobserv-operator.clusterserviceversion.yaml +++ b/bundle/manifests/netobserv-operator.clusterserviceversion.yaml @@ -480,6 +480,8 @@ spec: x-descriptors: - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Read timeout + path: loki.readTimeout - path: loki.advanced x-descriptors: - urn:alm:descriptor:com.tectonic.ui:hidden @@ -596,8 +598,6 @@ spec: path: loki.monolithic.tenantID - displayName: Url path: loki.monolithic.url - - displayName: Read timeout - path: loki.readTimeout - displayName: Namespace path: namespace - displayName: Network policy @@ -658,7 +658,7 @@ spec: - urn:alm:descriptor:io.kubernetes.conditions version: v1beta2 - description: '`FlowMetric` is the schema for the custom metrics API, which allows - to generate more metrics out of flow logs. You can find examples here: https://github.com/netobserv/network-observability-operator/tree/main/config/samples/flowmetrics' + to generate more metrics out of flow logs. You can find examples here: https://github.com/netobserv/network-observability-operator/tree/v1.9.2-community/config/samples/flowmetrics' displayName: Flow Metric kind: FlowMetric name: flowmetrics.flows.netobserv.io diff --git a/catalog/unreleased-legacy/v1.9.2-community/bundle.yaml b/catalog/unreleased-legacy/v1.9.2-community/bundle.yaml new file mode 100644 index 000000000..4263ff2a0 --- /dev/null +++ b/catalog/unreleased-legacy/v1.9.2-community/bundle.yaml @@ -0,0 +1,84 @@ +--- +image: quay.io/netobserv/network-observability-operator-bundle:v1.9.2-community +name: netobserv-operator.v1.9.2-community +package: netobserv-operator +properties: +- type: olm.gvk + value: + group: flows.netobserv.io + kind: FlowCollector + version: v1beta2 +- type: olm.gvk + value: + group: flows.netobserv.io + kind: FlowMetric + version: v1alpha1 +- type: olm.package + value: + packageName: netobserv-operator + version: 1.9.2-community +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjE2LjIifSwiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJmbG93Y29sbGVjdG9ycy5mbG93cy5uZXRvYnNlcnYuaW8ifSwic3BlYyI6eyJncm91cCI6ImZsb3dzLm5ldG9ic2Vydi5pbyIsIm5hbWVzIjp7ImtpbmQiOiJGbG93Q29sbGVjdG9yIiwibGlzdEtpbmQiOiJGbG93Q29sbGVjdG9yTGlzdCIsInBsdXJhbCI6ImZsb3djb2xsZWN0b3JzIiwic2luZ3VsYXIiOiJmbG93Y29sbGVjdG9yIn0sInNjb3BlIjoiQ2x1c3RlciIsInZlcnNpb25zIjpbeyJhZGRpdGlvbmFsUHJpbnRlckNvbHVtbnMiOlt7Impzb25QYXRoIjoiLnNwZWMuYWdlbnQudHlwZSIsIm5hbWUiOiJBZ2VudCIsInR5cGUiOiJzdHJpbmcifSx7Impzb25QYXRoIjoiLnNwZWMuYWdlbnQuZWJwZi5zYW1wbGluZyIsIm5hbWUiOiJTYW1wbGluZyAoRUJQRikiLCJ0eXBlIjoic3RyaW5nIn0seyJqc29uUGF0aCI6Ii5zcGVjLmRlcGxveW1lbnRNb2RlbCIsIm5hbWUiOiJEZXBsb3ltZW50IE1vZGVsIiwidHlwZSI6InN0cmluZyJ9LHsianNvblBhdGgiOiIuc3RhdHVzLmNvbmRpdGlvbnNbPyhALnR5cGU9PVwiUmVhZHlcIildLnJlYXNvbiIsIm5hbWUiOiJTdGF0dXMiLCJ0eXBlIjoic3RyaW5nIn0seyJqc29uUGF0aCI6Ii5zdGF0dXMuY29uZGl0aW9uc1s/KEAudHlwZT09XCJDb25maWd1cmF0aW9uSXNzdWVcIildLm1lc3NhZ2UiLCJuYW1lIjoiV2FybmluZ3MiLCJ0eXBlIjoic3RyaW5nIn1dLCJuYW1lIjoidjFiZXRhMiIsInNjaGVtYSI6eyJvcGVuQVBJVjNTY2hlbWEiOnsiZGVzY3JpcHRpb24iOiJgRmxvd0NvbGxlY3RvcmAgaXMgdGhlIHNjaGVtYSBmb3IgdGhlIG5ldHdvcmsgZmxvd3MgY29sbGVjdGlvbiBBUEksIHdoaWNoIHBpbG90cyBhbmQgY29uZmlndXJlcyB0aGUgdW5kZXJseWluZyBkZXBsb3ltZW50cy4iLCJwcm9wZXJ0aWVzIjp7ImFwaVZlcnNpb24iOnsiZGVzY3JpcHRpb24iOiJBUElWZXJzaW9uIGRlZmluZXMgdGhlIHZlcnNpb25lZCBzY2hlbWEgb2YgdGhpcyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuXG5TZXJ2ZXJzIHNob3VsZCBjb252ZXJ0IHJlY29nbml6ZWQgc2NoZW1hcyB0byB0aGUgbGF0ZXN0IGludGVybmFsIHZhbHVlLCBhbmRcbm1heSByZWplY3QgdW5yZWNvZ25pemVkIHZhbHVlcy5cbk1vcmUgaW5mbzogaHR0cHM6Ly9naXQuazhzLmlvL2NvbW11bml0eS9jb250cmlidXRvcnMvZGV2ZWwvc2lnLWFyY2hpdGVjdHVyZS9hcGktY29udmVudGlvbnMubWQjcmVzb3VyY2VzIiwidHlwZSI6InN0cmluZyJ9LCJraW5kIjp7ImRlc2NyaXB0aW9uIjoiS2luZCBpcyBhIHN0cmluZyB2YWx1ZSByZXByZXNlbnRpbmcgdGhlIFJFU1QgcmVzb3VyY2UgdGhpcyBvYmplY3QgcmVwcmVzZW50cy5cblNlcnZlcnMgbWF5IGluZmVyIHRoaXMgZnJvbSB0aGUgZW5kcG9pbnQgdGhlIGNsaWVudCBzdWJtaXRzIHJlcXVlc3RzIHRvLlxuQ2Fubm90IGJlIHVwZGF0ZWQuXG5JbiBDYW1lbENhc2UuXG5Nb3JlIGluZm86IGh0dHBzOi8vZ2l0Lms4cy5pby9jb21tdW5pdHkvY29udHJpYnV0b3JzL2RldmVsL3NpZy1hcmNoaXRlY3R1cmUvYXBpLWNvbnZlbnRpb25zLm1kI3R5cGVzLWtpbmRzIiwidHlwZSI6InN0cmluZyJ9LCJtZXRhZGF0YSI6eyJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsicGF0dGVybiI6Il5jbHVzdGVyJCIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwic3BlYyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgdGhlIEZsb3dDb2xsZWN0b3IgcmVzb3VyY2UuXG5cdTAwM2Niclx1MDAzZVx1MDAzY2JyXHUwMDNlXG4qOiB0aGUgbWVudGlvbiBvZiBcInVuc3VwcG9ydGVkXCIgb3IgXCJkZXByZWNhdGVkXCIgZm9yIGEgZmVhdHVyZSB0aHJvdWdob3V0IHRoaXMgZG9jdW1lbnQgbWVhbnMgdGhhdCB0aGlzIGZlYXR1cmVcbmlzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBieSBSZWQgSGF0LiBJdCBtaWdodCBoYXZlIGJlZW4sIGZvciBleGFtcGxlLCBjb250cmlidXRlZCBieSB0aGUgY29tbXVuaXR5XG5hbmQgYWNjZXB0ZWQgd2l0aG91dCBhIGZvcm1hbCBhZ3JlZW1lbnQgZm9yIG1haW50ZW5hbmNlLiBUaGUgcHJvZHVjdCBtYWludGFpbmVycyBtaWdodCBwcm92aWRlIHNvbWUgc3VwcG9ydFxuZm9yIHRoZXNlIGZlYXR1cmVzIGFzIGEgYmVzdCBlZmZvcnQgb25seS4iLCJwcm9wZXJ0aWVzIjp7ImFnZW50Ijp7ImRlc2NyaXB0aW9uIjoiQWdlbnQgY29uZmlndXJhdGlvbiBmb3IgZmxvd3MgZXh0cmFjdGlvbi4iLCJwcm9wZXJ0aWVzIjp7ImVicGYiOnsiZGVzY3JpcHRpb24iOiJgZWJwZmAgZGVzY3JpYmVzIHRoZSBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBlQlBGLWJhc2VkIGZsb3cgcmVwb3J0ZXIgd2hlbiBgc3BlYy5hZ2VudC50eXBlYFxuaXMgc2V0IHRvIGBlQlBGYC4iLCJwcm9wZXJ0aWVzIjp7ImFkdmFuY2VkIjp7ImRlc2NyaXB0aW9uIjoiYGFkdmFuY2VkYCBhbGxvd3Mgc2V0dGluZyBzb21lIGFzcGVjdHMgb2YgdGhlIGludGVybmFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGVCUEYgYWdlbnQuXG5UaGlzIHNlY3Rpb24gaXMgYWltZWQgbW9zdGx5IGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtZ3JhaW5lZCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLFxuc3VjaCBhcyBgR09HQ2AgYW5kIGBHT01BWFBST0NTYCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFNldCB0aGVzZSB2YWx1ZXMgYXQgeW91ciBvd24gcmlzay4gWW91IGNhbiBhbHNvXG5vdmVycmlkZSB0aGUgZGVmYXVsdCBMaW51eCBjYXBhYmlsaXRpZXMgZnJvbSB0aGVyZS4iLCJwcm9wZXJ0aWVzIjp7ImNhcE92ZXJyaWRlIjp7ImRlc2NyaXB0aW9uIjoiTGludXggY2FwYWJpbGl0aWVzIG92ZXJyaWRlLCB3aGVuIG5vdCBydW5uaW5nIGFzIHByaXZpbGVnZWQuIERlZmF1bHQgY2FwYWJpbGl0aWVzIGFyZSBCUEYsIFBFUkZNT04gYW5kIE5FVF9BRE1JTi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJlbnYiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6ImBlbnZgIGFsbG93cyBwYXNzaW5nIGN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdW5kZXJseWluZyBjb21wb25lbnRzLiBVc2VmdWwgZm9yIHBhc3NpbmdcbnNvbWUgdmVyeSBjb25jcmV0ZSBwZXJmb3JtYW5jZS10dW5pbmcgb3B0aW9ucywgc3VjaCBhcyBgR09HQ2AgYW5kIGBHT01BWFBST0NTYCwgdGhhdCBzaG91bGQgbm90IGJlXG5wdWJsaWNseSBleHBvc2VkIGFzIHBhcnQgb2YgdGhlIEZsb3dDb2xsZWN0b3IgZGVzY3JpcHRvciwgYXMgdGhleSBhcmUgb25seSB1c2VmdWxcbmluIGVkZ2UgZGVidWcgb3Igc3VwcG9ydCBzY2VuYXJpb3MuIiwidHlwZSI6Im9iamVjdCJ9LCJzY2hlZHVsaW5nIjp7ImRlc2NyaXB0aW9uIjoic2NoZWR1bGluZyBjb250cm9scyBob3cgdGhlIHBvZHMgYXJlIHNjaGVkdWxlZCBvbiBub2Rlcy4iLCJwcm9wZXJ0aWVzIjp7ImFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiSWYgc3BlY2lmaWVkLCB0aGUgcG9kJ3Mgc2NoZWR1bGluZyBjb25zdHJhaW50cy4gRm9yIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL3JlZmVyZW5jZS9rdWJlcm5ldGVzLWFwaS93b3JrbG9hZC1yZXNvdXJjZXMvcG9kLXYxLyNzY2hlZHVsaW5nLiIsInByb3BlcnRpZXMiOnsibm9kZUFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIG5vZGUgYWZmaW5pdHkgc2NoZWR1bGluZyBydWxlcyBmb3IgdGhlIHBvZC4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcnJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHNjaGVkdWxlciB3aWxsIHByZWZlciB0byBzY2hlZHVsZSBwb2RzIHRvIG5vZGVzIHRoYXQgc2F0aXNmeVxudGhlIGFmZmluaXR5IGV4cHJlc3Npb25zIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkLCBidXQgaXQgbWF5IGNob29zZVxuYSBub2RlIHRoYXQgdmlvbGF0ZXMgb25lIG9yIG1vcmUgb2YgdGhlIGV4cHJlc3Npb25zLiBUaGUgbm9kZSB0aGF0IGlzXG5tb3N0IHByZWZlcnJlZCBpcyB0aGUgb25lIHdpdGggdGhlIGdyZWF0ZXN0IHN1bSBvZiB3ZWlnaHRzLCBpLmUuXG5mb3IgZWFjaCBub2RlIHRoYXQgbWVldHMgYWxsIG9mIHRoZSBzY2hlZHVsaW5nIHJlcXVpcmVtZW50cyAocmVzb3VyY2VcbnJlcXVlc3QsIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZyBhZmZpbml0eSBleHByZXNzaW9ucywgZXRjLiksXG5jb21wdXRlIGEgc3VtIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBlbGVtZW50cyBvZiB0aGlzIGZpZWxkIGFuZCBhZGRpbmdcblwid2VpZ2h0XCIgdG8gdGhlIHN1bSBpZiB0aGUgbm9kZSBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIG1hdGNoRXhwcmVzc2lvbnM7IHRoZVxubm9kZShzKSB3aXRoIHRoZSBoaWdoZXN0IHN1bSBhcmUgdGhlIG1vc3QgcHJlZmVycmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQW4gZW1wdHkgcHJlZmVycmVkIHNjaGVkdWxpbmcgdGVybSBtYXRjaGVzIGFsbCBvYmplY3RzIHdpdGggaW1wbGljaXQgd2VpZ2h0IDBcbihpLmUuIGl0J3MgYSBuby1vcCkuIEEgbnVsbCBwcmVmZXJyZWQgc2NoZWR1bGluZyB0ZXJtIG1hdGNoZXMgbm8gb2JqZWN0cyAoaS5lLiBpcyBhbHNvIGEgbm8tb3ApLiIsInByb3BlcnRpZXMiOnsicHJlZmVyZW5jZSI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgbGFiZWxzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoRmllbGRzIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBmaWVsZHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwid2VpZ2h0Ijp7ImRlc2NyaXB0aW9uIjoiV2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBub2RlU2VsZWN0b3JUZXJtLCBpbiB0aGUgcmFuZ2UgMS0xMDAuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9fSwicmVxdWlyZWQiOlsicHJlZmVyZW5jZSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgYXJlIG5vdCBtZXQgYXRcbnNjaGVkdWxpbmcgdGltZSwgdGhlIHBvZCB3aWxsIG5vdCBiZSBzY2hlZHVsZWQgb250byB0aGUgbm9kZS5cbklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgY2Vhc2UgdG8gYmUgbWV0XG5hdCBzb21lIHBvaW50IGR1cmluZyBwb2QgZXhlY3V0aW9uIChlLmcuIGR1ZSB0byBhbiB1cGRhdGUpLCB0aGUgc3lzdGVtXG5tYXkgb3IgbWF5IG5vdCB0cnkgdG8gZXZlbnR1YWxseSBldmljdCB0aGUgcG9kIGZyb20gaXRzIG5vZGUuIiwicHJvcGVydGllcyI6eyJub2RlU2VsZWN0b3JUZXJtcyI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciB0ZXJtcy4gVGhlIHRlcm1zIGFyZSBPUmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBudWxsIG9yIGVtcHR5IG5vZGUgc2VsZWN0b3IgdGVybSBtYXRjaGVzIG5vIG9iamVjdHMuIFRoZSByZXF1aXJlbWVudHMgb2ZcbnRoZW0gYXJlIEFORGVkLlxuVGhlIFRvcG9sb2d5U2VsZWN0b3JUZXJtIHR5cGUgaW1wbGVtZW50cyBhIHN1YnNldCBvZiB0aGUgTm9kZVNlbGVjdG9yVGVybS4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGxhYmVscy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaEZpZWxkcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgZmllbGRzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbIm5vZGVTZWxlY3RvclRlcm1zIl0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifSwicG9kQWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJEZXNjcmliZXMgcG9kIGFmZmluaXR5IHNjaGVkdWxpbmcgcnVsZXMgKGUuZy4gY28tbG9jYXRlIHRoaXMgcG9kIGluIHRoZSBzYW1lIG5vZGUsIHpvbmUsIGV0Yy4gYXMgc29tZSBvdGhlciBwb2QocykpLiIsInByb3BlcnRpZXMiOnsicHJlZmVycmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJUaGUgc2NoZWR1bGVyIHdpbGwgcHJlZmVyIHRvIHNjaGVkdWxlIHBvZHMgdG8gbm9kZXMgdGhhdCBzYXRpc2Z5XG50aGUgYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIGFkZGluZ1xuXCJ3ZWlnaHRcIiB0byB0aGUgc3VtIGlmIHRoZSBub2RlIGhhcyBwb2RzIHdoaWNoIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtOyB0aGVcbm5vZGUocykgd2l0aCB0aGUgaGlnaGVzdCBzdW0gYXJlIHRoZSBtb3N0IHByZWZlcnJlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSB3ZWlnaHRzIG9mIGFsbCBvZiB0aGUgbWF0Y2hlZCBXZWlnaHRlZFBvZEFmZmluaXR5VGVybSBmaWVsZHMgYXJlIGFkZGVkIHBlci1ub2RlIHRvIGZpbmQgdGhlIG1vc3QgcHJlZmVycmVkIG5vZGUocykiLCJwcm9wZXJ0aWVzIjp7InBvZEFmZmluaXR5VGVybSI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIHBvZCBhZmZpbml0eSB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sIndlaWdodCI6eyJkZXNjcmlwdGlvbiI6IndlaWdodCBhc3NvY2lhdGVkIHdpdGggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtLFxuaW4gdGhlIHJhbmdlIDEtMTAwLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifX0sInJlcXVpcmVkIjpbInBvZEFmZmluaXR5VGVybSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgYXJlIG5vdCBtZXQgYXRcbnNjaGVkdWxpbmcgdGltZSwgdGhlIHBvZCB3aWxsIG5vdCBiZSBzY2hlZHVsZWQgb250byB0aGUgbm9kZS5cbklmIHRoZSBhZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgY2Vhc2UgdG8gYmUgbWV0XG5hdCBzb21lIHBvaW50IGR1cmluZyBwb2QgZXhlY3V0aW9uIChlLmcuIGR1ZSB0byBhIHBvZCBsYWJlbCB1cGRhdGUpLCB0aGVcbnN5c3RlbSBtYXkgb3IgbWF5IG5vdCB0cnkgdG8gZXZlbnR1YWxseSBldmljdCB0aGUgcG9kIGZyb20gaXRzIG5vZGUuXG5XaGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBlbGVtZW50cywgdGhlIGxpc3RzIG9mIG5vZGVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaFxucG9kQWZmaW5pdHlUZXJtIGFyZSBpbnRlcnNlY3RlZCwgaS5lLiBhbGwgdGVybXMgbXVzdCBiZSBzYXRpc2ZpZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJEZWZpbmVzIGEgc2V0IG9mIHBvZHMgKG5hbWVseSB0aG9zZSBtYXRjaGluZyB0aGUgbGFiZWxTZWxlY3RvclxucmVsYXRpdmUgdG8gdGhlIGdpdmVuIG5hbWVzcGFjZShzKSkgdGhhdCB0aGlzIHBvZCBzaG91bGQgYmVcbmNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCxcbndoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZSB3aG9zZSB2YWx1ZSBvZlxudGhlIGxhYmVsIHdpdGgga2V5IFx1MDAzY3RvcG9sb2d5S2V5XHUwMDNlIG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaFxuYSBwb2Qgb2YgdGhlIHNldCBvZiBwb2RzIGlzIHJ1bm5pbmciLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgYSBzZXQgb2YgcmVzb3VyY2VzLCBpbiB0aGlzIGNhc2UgcG9kcy5cbklmIGl0J3MgbnVsbCwgdGhpcyBQb2RBZmZpbml0eVRlcm0gbWF0Y2hlcyB3aXRoIG5vIFBvZHMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgaW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWlzbWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNaXNtYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IG5vdGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWlzbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtaXNtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZVNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIHRoZSBzZXQgb2YgbmFtZXNwYWNlcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBzZWxlY3RlZCBieSB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgbGlzdGVkIGluIHRoZSBuYW1lc3BhY2VzIGZpZWxkLlxubnVsbCBzZWxlY3RvciBhbmQgbnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLlxuQW4gZW1wdHkgc2VsZWN0b3IgKHt9KSBtYXRjaGVzIGFsbCBuYW1lc3BhY2VzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6Im5hbWVzcGFjZXMgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2YgbmFtZXNwYWNlIG5hbWVzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgc2VsZWN0ZWQgYnkgbmFtZXNwYWNlU2VsZWN0b3IuXG5udWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBhbmQgbnVsbCBuYW1lc3BhY2VTZWxlY3RvciBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhpcyBwb2Qgc2hvdWxkIGJlIGNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCB0aGUgcG9kcyBtYXRjaGluZ1xudGhlIGxhYmVsU2VsZWN0b3IgaW4gdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VzLCB3aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGVcbndob3NlIHZhbHVlIG9mIHRoZSBsYWJlbCB3aXRoIGtleSB0b3BvbG9neUtleSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2ggYW55IG9mIHRoZVxuc2VsZWN0ZWQgcG9kcyBpcyBydW5uaW5nLlxuRW1wdHkgdG9wb2xvZ3lLZXkgaXMgbm90IGFsbG93ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidG9wb2xvZ3lLZXkiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJ0eXBlIjoib2JqZWN0In0sInBvZEFudGlBZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaWJlcyBwb2QgYW50aS1hZmZpbml0eSBzY2hlZHVsaW5nIHJ1bGVzIChlLmcuIGF2b2lkIHB1dHRpbmcgdGhpcyBwb2QgaW4gdGhlIHNhbWUgbm9kZSwgem9uZSwgZXRjLiBhcyBzb21lIG90aGVyIHBvZChzKSkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IlRoZSBzY2hlZHVsZXIgd2lsbCBwcmVmZXIgdG8gc2NoZWR1bGUgcG9kcyB0byBub2RlcyB0aGF0IHNhdGlzZnlcbnRoZSBhbnRpLWFmZmluaXR5IGV4cHJlc3Npb25zIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkLCBidXQgaXQgbWF5IGNob29zZVxuYSBub2RlIHRoYXQgdmlvbGF0ZXMgb25lIG9yIG1vcmUgb2YgdGhlIGV4cHJlc3Npb25zLiBUaGUgbm9kZSB0aGF0IGlzXG5tb3N0IHByZWZlcnJlZCBpcyB0aGUgb25lIHdpdGggdGhlIGdyZWF0ZXN0IHN1bSBvZiB3ZWlnaHRzLCBpLmUuXG5mb3IgZWFjaCBub2RlIHRoYXQgbWVldHMgYWxsIG9mIHRoZSBzY2hlZHVsaW5nIHJlcXVpcmVtZW50cyAocmVzb3VyY2VcbnJlcXVlc3QsIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZyBhbnRpLWFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIHN1YnRyYWN0aW5nXG5cIndlaWdodFwiIGZyb20gdGhlIHN1bSBpZiB0aGUgbm9kZSBoYXMgcG9kcyB3aGljaCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIHBvZEFmZmluaXR5VGVybTsgdGhlXG5ub2RlKHMpIHdpdGggdGhlIGhpZ2hlc3Qgc3VtIGFyZSB0aGUgbW9zdCBwcmVmZXJyZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJUaGUgd2VpZ2h0cyBvZiBhbGwgb2YgdGhlIG1hdGNoZWQgV2VpZ2h0ZWRQb2RBZmZpbml0eVRlcm0gZmllbGRzIGFyZSBhZGRlZCBwZXItbm9kZSB0byBmaW5kIHRoZSBtb3N0IHByZWZlcnJlZCBub2RlKHMpIiwicHJvcGVydGllcyI6eyJwb2RBZmZpbml0eVRlcm0iOnsiZGVzY3JpcHRpb24iOiJSZXF1aXJlZC4gQSBwb2QgYWZmaW5pdHkgdGVybSwgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHdlaWdodC4iLCJwcm9wZXJ0aWVzIjp7ImxhYmVsU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgYSBzZXQgb2YgcmVzb3VyY2VzLCBpbiB0aGlzIGNhc2UgcG9kcy5cbklmIGl0J3MgbnVsbCwgdGhpcyBQb2RBZmZpbml0eVRlcm0gbWF0Y2hlcyB3aXRoIG5vIFBvZHMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgaW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWlzbWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNaXNtYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IG5vdGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWlzbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtaXNtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZVNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIHRoZSBzZXQgb2YgbmFtZXNwYWNlcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBzZWxlY3RlZCBieSB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgbGlzdGVkIGluIHRoZSBuYW1lc3BhY2VzIGZpZWxkLlxubnVsbCBzZWxlY3RvciBhbmQgbnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLlxuQW4gZW1wdHkgc2VsZWN0b3IgKHt9KSBtYXRjaGVzIGFsbCBuYW1lc3BhY2VzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6Im5hbWVzcGFjZXMgc3BlY2lmaWVzIGEgc3RhdGljIGxpc3Qgb2YgbmFtZXNwYWNlIG5hbWVzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIGxpc3RlZCBpbiB0aGlzIGZpZWxkXG5hbmQgdGhlIG9uZXMgc2VsZWN0ZWQgYnkgbmFtZXNwYWNlU2VsZWN0b3IuXG5udWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBhbmQgbnVsbCBuYW1lc3BhY2VTZWxlY3RvciBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInRvcG9sb2d5S2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhpcyBwb2Qgc2hvdWxkIGJlIGNvLWxvY2F0ZWQgKGFmZmluaXR5KSBvciBub3QgY28tbG9jYXRlZCAoYW50aS1hZmZpbml0eSkgd2l0aCB0aGUgcG9kcyBtYXRjaGluZ1xudGhlIGxhYmVsU2VsZWN0b3IgaW4gdGhlIHNwZWNpZmllZCBuYW1lc3BhY2VzLCB3aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGVcbndob3NlIHZhbHVlIG9mIHRoZSBsYWJlbCB3aXRoIGtleSB0b3BvbG9neUtleSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2ggYW55IG9mIHRoZVxuc2VsZWN0ZWQgcG9kcyBpcyBydW5uaW5nLlxuRW1wdHkgdG9wb2xvZ3lLZXkgaXMgbm90IGFsbG93ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidG9wb2xvZ3lLZXkiXSwidHlwZSI6Im9iamVjdCJ9LCJ3ZWlnaHQiOnsiZGVzY3JpcHRpb24iOiJ3ZWlnaHQgYXNzb2NpYXRlZCB3aXRoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIHBvZEFmZmluaXR5VGVybSxcbmluIHRoZSByYW5nZSAxLTEwMC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJwb2RBZmZpbml0eVRlcm0iLCJ3ZWlnaHQiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sInJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJJZiB0aGUgYW50aS1hZmZpbml0eSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQgYXJlIG5vdCBtZXQgYXRcbnNjaGVkdWxpbmcgdGltZSwgdGhlIHBvZCB3aWxsIG5vdCBiZSBzY2hlZHVsZWQgb250byB0aGUgbm9kZS5cbklmIHRoZSBhbnRpLWFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGEgcG9kIGxhYmVsIHVwZGF0ZSksIHRoZVxuc3lzdGVtIG1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS5cbldoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzLCB0aGUgbGlzdHMgb2Ygbm9kZXMgY29ycmVzcG9uZGluZyB0byBlYWNoXG5wb2RBZmZpbml0eVRlcm0gYXJlIGludGVyc2VjdGVkLCBpLmUuIGFsbCB0ZXJtcyBtdXN0IGJlIHNhdGlzZmllZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgYSBzZXQgb2YgcG9kcyAobmFtZWx5IHRob3NlIG1hdGNoaW5nIHRoZSBsYWJlbFNlbGVjdG9yXG5yZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlKHMpKSB0aGF0IHRoaXMgcG9kIHNob3VsZCBiZVxuY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoLFxud2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlIHdob3NlIHZhbHVlIG9mXG50aGUgbGFiZWwgd2l0aCBrZXkgXHUwMDNjdG9wb2xvZ3lLZXlcdTAwM2UgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoXG5hIHBvZCBvZiB0aGUgc2V0IG9mIHBvZHMgaXMgcnVubmluZyIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwibm9kZVNlbGVjdG9yIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJgbm9kZVNlbGVjdG9yYCBhbGxvd3Mgc2NoZWR1bGluZyBvZiBwb2RzIG9ubHkgb250byBub2RlcyB0aGF0IGhhdmUgZWFjaCBvZiB0aGUgc3BlY2lmaWVkIGxhYmVscy5cbkZvciBkb2N1bWVudGF0aW9uLCByZWZlciB0byBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL2Fzc2lnbi1wb2Qtbm9kZS8uIiwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJwcmlvcml0eUNsYXNzTmFtZSI6eyJkZXNjcmlwdGlvbiI6IklmIHNwZWNpZmllZCwgaW5kaWNhdGVzIHRoZSBwb2QncyBwcmlvcml0eS4gRm9yIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL3NjaGVkdWxpbmctZXZpY3Rpb24vcG9kLXByaW9yaXR5LXByZWVtcHRpb24vI2hvdy10by11c2UtcHJpb3JpdHktYW5kLXByZWVtcHRpb24uXG5JZiBub3Qgc3BlY2lmaWVkLCBkZWZhdWx0IHByaW9yaXR5IGlzIHVzZWQsIG9yIHplcm8gaWYgdGhlcmUgaXMgbm8gZGVmYXVsdC4iLCJ0eXBlIjoic3RyaW5nIn0sInRvbGVyYXRpb25zIjp7ImRlc2NyaXB0aW9uIjoiYHRvbGVyYXRpb25zYCBpcyBhIGxpc3Qgb2YgdG9sZXJhdGlvbnMgdGhhdCBhbGxvdyB0aGUgcG9kIHRvIHNjaGVkdWxlIG9udG8gbm9kZXMgd2l0aCBtYXRjaGluZyB0YWludHMuXG5Gb3IgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvcmVmZXJlbmNlL2t1YmVybmV0ZXMtYXBpL3dvcmtsb2FkLXJlc291cmNlcy9wb2QtdjEvI3NjaGVkdWxpbmcuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJUaGUgcG9kIHRoaXMgVG9sZXJhdGlvbiBpcyBhdHRhY2hlZCB0byB0b2xlcmF0ZXMgYW55IHRhaW50IHRoYXQgbWF0Y2hlc1xudGhlIHRyaXBsZSBcdTAwM2NrZXksdmFsdWUsZWZmZWN0XHUwMDNlIHVzaW5nIHRoZSBtYXRjaGluZyBvcGVyYXRvciBcdTAwM2NvcGVyYXRvclx1MDAzZS4iLCJwcm9wZXJ0aWVzIjp7ImVmZmVjdCI6eyJkZXNjcmlwdGlvbiI6IkVmZmVjdCBpbmRpY2F0ZXMgdGhlIHRhaW50IGVmZmVjdCB0byBtYXRjaC4gRW1wdHkgbWVhbnMgbWF0Y2ggYWxsIHRhaW50IGVmZmVjdHMuXG5XaGVuIHNwZWNpZmllZCwgYWxsb3dlZCB2YWx1ZXMgYXJlIE5vU2NoZWR1bGUsIFByZWZlck5vU2NoZWR1bGUgYW5kIE5vRXhlY3V0ZS4iLCJ0eXBlIjoic3RyaW5nIn0sImtleSI6eyJkZXNjcmlwdGlvbiI6IktleSBpcyB0aGUgdGFpbnQga2V5IHRoYXQgdGhlIHRvbGVyYXRpb24gYXBwbGllcyB0by4gRW1wdHkgbWVhbnMgbWF0Y2ggYWxsIHRhaW50IGtleXMuXG5JZiB0aGUga2V5IGlzIGVtcHR5LCBvcGVyYXRvciBtdXN0IGJlIEV4aXN0czsgdGhpcyBjb21iaW5hdGlvbiBtZWFucyB0byBtYXRjaCBhbGwgdmFsdWVzIGFuZCBhbGwga2V5cy4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiT3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byB0aGUgdmFsdWUuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEV4aXN0cyBhbmQgRXF1YWwuIERlZmF1bHRzIHRvIEVxdWFsLlxuRXhpc3RzIGlzIGVxdWl2YWxlbnQgdG8gd2lsZGNhcmQgZm9yIHZhbHVlLCBzbyB0aGF0IGEgcG9kIGNhblxudG9sZXJhdGUgYWxsIHRhaW50cyBvZiBhIHBhcnRpY3VsYXIgY2F0ZWdvcnkuIiwidHlwZSI6InN0cmluZyJ9LCJ0b2xlcmF0aW9uU2Vjb25kcyI6eyJkZXNjcmlwdGlvbiI6IlRvbGVyYXRpb25TZWNvbmRzIHJlcHJlc2VudHMgdGhlIHBlcmlvZCBvZiB0aW1lIHRoZSB0b2xlcmF0aW9uICh3aGljaCBtdXN0IGJlXG5vZiBlZmZlY3QgTm9FeGVjdXRlLCBvdGhlcndpc2UgdGhpcyBmaWVsZCBpcyBpZ25vcmVkKSB0b2xlcmF0ZXMgdGhlIHRhaW50LiBCeSBkZWZhdWx0LFxuaXQgaXMgbm90IHNldCwgd2hpY2ggbWVhbnMgdG9sZXJhdGUgdGhlIHRhaW50IGZvcmV2ZXIgKGRvIG5vdCBldmljdCkuIFplcm8gYW5kXG5uZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSB0cmVhdGVkIGFzIDAgKGV2aWN0IGltbWVkaWF0ZWx5KSBieSB0aGUgc3lzdGVtLiIsImZvcm1hdCI6ImludDY0IiwidHlwZSI6ImludGVnZXIifSwidmFsdWUiOnsiZGVzY3JpcHRpb24iOiJWYWx1ZSBpcyB0aGUgdGFpbnQgdmFsdWUgdGhlIHRvbGVyYXRpb24gbWF0Y2hlcyB0by5cbklmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMsIHRoZSB2YWx1ZSBzaG91bGQgYmUgZW1wdHksIG90aGVyd2lzZSBqdXN0IGEgcmVndWxhciBzdHJpbmcuIiwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwiY2FjaGVBY3RpdmVUaW1lb3V0Ijp7ImRlZmF1bHQiOiI1cyIsImRlc2NyaXB0aW9uIjoiYGNhY2hlQWN0aXZlVGltZW91dGAgaXMgdGhlIG1heCBwZXJpb2QgZHVyaW5nIHdoaWNoIHRoZSByZXBvcnRlciBhZ2dyZWdhdGVzIGZsb3dzIGJlZm9yZSBzZW5kaW5nLlxuSW5jcmVhc2luZyBgY2FjaGVNYXhGbG93c2AgYW5kIGBjYWNoZUFjdGl2ZVRpbWVvdXRgIGNhbiBkZWNyZWFzZSB0aGUgbmV0d29yayB0cmFmZmljIG92ZXJoZWFkIGFuZCB0aGUgQ1BVIGxvYWQsXG5ob3dldmVyIHlvdSBjYW4gZXhwZWN0IGhpZ2hlciBtZW1vcnkgY29uc3VtcHRpb24gYW5kIGFuIGluY3JlYXNlZCBsYXRlbmN5IGluIHRoZSBmbG93IGNvbGxlY3Rpb24uIiwicGF0dGVybiI6Il5cXGQrKG5zfG1zfHN8bSk/JCIsInR5cGUiOiJzdHJpbmcifSwiY2FjaGVNYXhGbG93cyI6eyJkZWZhdWx0IjoxMDAwMDAsImRlc2NyaXB0aW9uIjoiYGNhY2hlTWF4Rmxvd3NgIGlzIHRoZSBtYXggbnVtYmVyIG9mIGZsb3dzIGluIGFuIGFnZ3JlZ2F0ZTsgd2hlbiByZWFjaGVkLCB0aGUgcmVwb3J0ZXIgc2VuZHMgdGhlIGZsb3dzLlxuSW5jcmVhc2luZyBgY2FjaGVNYXhGbG93c2AgYW5kIGBjYWNoZUFjdGl2ZVRpbWVvdXRgIGNhbiBkZWNyZWFzZSB0aGUgbmV0d29yayB0cmFmZmljIG92ZXJoZWFkIGFuZCB0aGUgQ1BVIGxvYWQsXG5ob3dldmVyIHlvdSBjYW4gZXhwZWN0IGhpZ2hlciBtZW1vcnkgY29uc3VtcHRpb24gYW5kIGFuIGluY3JlYXNlZCBsYXRlbmN5IGluIHRoZSBmbG93IGNvbGxlY3Rpb24uIiwiZm9ybWF0IjoiaW50MzIiLCJtaW5pbXVtIjoxLCJ0eXBlIjoiaW50ZWdlciJ9LCJleGNsdWRlSW50ZXJmYWNlcyI6eyJkZWZhdWx0IjpbImxvIl0sImRlc2NyaXB0aW9uIjoiYGV4Y2x1ZGVJbnRlcmZhY2VzYCBjb250YWlucyB0aGUgaW50ZXJmYWNlIG5hbWVzIHRoYXQgYXJlIGV4Y2x1ZGVkIGZyb20gZmxvdyB0cmFjaW5nLlxuQW4gZW50cnkgZW5jbG9zZWQgYnkgc2xhc2hlcywgc3VjaCBhcyBgL2JyLS9gLCBpcyBtYXRjaGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uLlxuT3RoZXJ3aXNlIGl0IGlzIG1hdGNoZWQgYXMgYSBjYXNlLXNlbnNpdGl2ZSBzdHJpbmcuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifSwiZmVhdHVyZXMiOnsiZGVzY3JpcHRpb24iOiJMaXN0IG9mIGFkZGl0aW9uYWwgZmVhdHVyZXMgdG8gZW5hYmxlLiBUaGV5IGFyZSBhbGwgZGlzYWJsZWQgYnkgZGVmYXVsdC4gRW5hYmxpbmcgYWRkaXRpb25hbCBmZWF0dXJlcyBtaWdodCBoYXZlIHBlcmZvcm1hbmNlIGltcGFjdHMuIFBvc3NpYmxlIHZhbHVlcyBhcmU6XHUwMDNjYnJcdTAwM2Vcbi0gYFBhY2tldERyb3BgOiBFbmFibGUgdGhlIHBhY2tldHMgZHJvcCBmbG93cyBsb2dnaW5nIGZlYXR1cmUuIFRoaXMgZmVhdHVyZSByZXF1aXJlcyBtb3VudGluZ1xudGhlIGtlcm5lbCBkZWJ1ZyBmaWxlc3lzdGVtLCBzbyB0aGUgZUJQRiBhZ2VudCBwb2RzIG11c3QgcnVuIGFzIHByaXZpbGVnZWQgdmlhIGBzcGVjLmFnZW50LmVicGYucHJpdmlsZWdlZGAuXHUwMDNjYnJcdTAwM2Vcbi0gYEROU1RyYWNraW5nYDogRW5hYmxlIHRoZSBETlMgdHJhY2tpbmcgZmVhdHVyZS5cdTAwM2Niclx1MDAzZVxuLSBgRmxvd1JUVGA6IEVuYWJsZSBmbG93IGxhdGVuY3kgKHNSVFQpIGV4dHJhY3Rpb24gaW4gdGhlIGVCUEYgYWdlbnQgZnJvbSBUQ1AgdHJhZmZpYy5cdTAwM2Niclx1MDAzZVxuLSBgTmV0d29ya0V2ZW50c2A6IEVuYWJsZSB0aGUgbmV0d29yayBldmVudHMgbW9uaXRvcmluZyBmZWF0dXJlLCBzdWNoIGFzIGNvcnJlbGF0aW5nIGZsb3dzIGFuZCBuZXR3b3JrIHBvbGljaWVzLlxuVGhpcyBmZWF0dXJlIHJlcXVpcmVzIG1vdW50aW5nIHRoZSBrZXJuZWwgZGVidWcgZmlsZXN5c3RlbSwgc28gdGhlIGVCUEYgYWdlbnQgcG9kcyBtdXN0IHJ1biBhcyBwcml2aWxlZ2VkIHZpYSBgc3BlYy5hZ2VudC5lYnBmLnByaXZpbGVnZWRgLlxuSXQgcmVxdWlyZXMgdXNpbmcgdGhlIE9WTi1LdWJlcm5ldGVzIG5ldHdvcmsgcGx1Z2luIHdpdGggdGhlIE9ic2VydmFiaWxpdHkgZmVhdHVyZS5cbklNUE9SVEFOVDogVGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZSBhcyBhIFRlY2hub2xvZ3kgUHJldmlldy5cdTAwM2Niclx1MDAzZVxuLSBgUGFja2V0VHJhbnNsYXRpb25gOiBFbmFibGUgZW5yaWNoaW5nIGZsb3dzIHdpdGggcGFja2V0IHRyYW5zbGF0aW9uIGluZm9ybWF0aW9uLCBzdWNoIGFzIFNlcnZpY2UgTkFULlx1MDAzY2JyXHUwMDNlXG4tIGBFYnBmTWFuYWdlcmA6IFtVbnN1cHBvcnRlZCAoKildLiBVc2UgZUJQRiBNYW5hZ2VyIHRvIG1hbmFnZSBOZXRPYnNlcnYgZUJQRiBwcm9ncmFtcy4gUHJlLXJlcXVpc2l0ZTogdGhlIGVCUEYgTWFuYWdlciBvcGVyYXRvciAob3IgdXBzdHJlYW0gYnBmbWFuIG9wZXJhdG9yKSBtdXN0IGJlIGluc3RhbGxlZC5cdTAwM2Niclx1MDAzZVxuLSBgVUROTWFwcGluZ2A6IEVuYWJsZSBpbnRlcmZhY2VzIG1hcHBpbmcgdG8gVXNlciBEZWZpbmVkIE5ldHdvcmtzIChVRE4pLiBcdTAwM2Niclx1MDAzZVxuVGhpcyBmZWF0dXJlIHJlcXVpcmVzIG1vdW50aW5nIHRoZSBrZXJuZWwgZGVidWcgZmlsZXN5c3RlbSwgc28gdGhlIGVCUEYgYWdlbnQgcG9kcyBtdXN0IHJ1biBhcyBwcml2aWxlZ2VkIHZpYSBgc3BlYy5hZ2VudC5lYnBmLnByaXZpbGVnZWRgLlxuSXQgcmVxdWlyZXMgdXNpbmcgdGhlIE9WTi1LdWJlcm5ldGVzIG5ldHdvcmsgcGx1Z2luIHdpdGggdGhlIE9ic2VydmFiaWxpdHkgZmVhdHVyZS4gXHUwMDNjYnJcdTAwM2Vcbi0gYElQU2VjYCwgdG8gdHJhY2sgZmxvd3MgYmV0d2VlbiBub2RlcyB3aXRoIElQc2VjIGVuY3J5cHRpb24uIFx1MDAzY2JyXHUwMDNlIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBZ2VudCBmZWF0dXJlLCBjYW4gYmUgb25lIG9mOlx1MDAzY2JyXHUwMDNlXG4tIGBQYWNrZXREcm9wYCwgdG8gdHJhY2sgcGFja2V0IGRyb3BzLlx1MDAzY2JyXHUwMDNlXG4tIGBETlNUcmFja2luZ2AsIHRvIHRyYWNrIHNwZWNpZmljIGluZm9ybWF0aW9uIG9uIEROUyB0cmFmZmljLlx1MDAzY2JyXHUwMDNlXG4tIGBGbG93UlRUYCwgdG8gdHJhY2sgVENQIGxhdGVuY3kuXHUwMDNjYnJcdTAwM2Vcbi0gYE5ldHdvcmtFdmVudHNgLCB0byB0cmFjayBuZXR3b3JrIGV2ZW50cyBbVGVjaG5vbG9neSBQcmV2aWV3XS5cdTAwM2Niclx1MDAzZVxuLSBgUGFja2V0VHJhbnNsYXRpb25gLCB0byBlbnJpY2ggZmxvd3Mgd2l0aCBwYWNrZXRzIHRyYW5zbGF0aW9uIGluZm9ybWF0aW9uLCBzdWNoIGFzIFNlcnZpY2UgTkFULlx1MDAzY2JyXHUwMDNlXG4tIGBFYnBmTWFuYWdlcmAsIHRvIGVuYWJsZSB1c2luZyBlQlBGIE1hbmFnZXIgdG8gbWFuYWdlIE5ldE9ic2VydiBlQlBGIHByb2dyYW1zLiBbVW5zdXBwb3J0ZWQgKCopXS5cdTAwM2Niclx1MDAzZVxuLSBgVUROTWFwcGluZ2AsIHRvIGVuYWJsZSBpbnRlcmZhY2VzIG1hcHBpbmcgdG8gVUROLiBcdTAwM2Niclx1MDAzZVxuLSBgSVBTZWNgLCB0byB0cmFjayBmbG93cyBiZXR3ZWVuIG5vZGVzIHdpdGggSVBzZWMgZW5jcnlwdGlvbi4gXHUwMDNjYnJcdTAwM2UiLCJlbnVtIjpbIlBhY2tldERyb3AiLCJETlNUcmFja2luZyIsIkZsb3dSVFQiLCJOZXR3b3JrRXZlbnRzIiwiUGFja2V0VHJhbnNsYXRpb24iLCJFYnBmTWFuYWdlciIsIlVETk1hcHBpbmciLCJJUFNlYyJdLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJmbG93RmlsdGVyIjp7ImRlc2NyaXB0aW9uIjoiYGZsb3dGaWx0ZXJgIGRlZmluZXMgdGhlIGVCUEYgYWdlbnQgY29uZmlndXJhdGlvbiByZWdhcmRpbmcgZmxvdyBmaWx0ZXJpbmcuIiwicHJvcGVydGllcyI6eyJhY3Rpb24iOnsiZGVzY3JpcHRpb24iOiJgYWN0aW9uYCBkZWZpbmVzIHRoZSBhY3Rpb24gdG8gcGVyZm9ybSBvbiB0aGUgZmxvd3MgdGhhdCBtYXRjaCB0aGUgZmlsdGVyLiBUaGUgYXZhaWxhYmxlIG9wdGlvbnMgYXJlIGBBY2NlcHRgLCB3aGljaCBpcyB0aGUgZGVmYXVsdCwgYW5kIGBSZWplY3RgLiIsImVudW0iOlsiQWNjZXB0IiwiUmVqZWN0Il0sInR5cGUiOiJzdHJpbmcifSwiY2lkciI6eyJkZXNjcmlwdGlvbiI6ImBjaWRyYCBkZWZpbmVzIHRoZSBJUCBDSURSIHRvIGZpbHRlciBmbG93cyBieS5cbkV4YW1wbGVzOiBgMTAuMTAuMTAuMC8yNGAgb3IgYDEwMDoxMDA6MTAwOjEwMDo6LzY0YCIsInR5cGUiOiJzdHJpbmcifSwiZGVzdFBvcnRzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwiZGVzY3JpcHRpb24iOiJgZGVzdFBvcnRzYCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIGRlc3RpbmF0aW9uIHBvcnRzIHRvIGZpbHRlciBmbG93cyBieS5cblRvIGZpbHRlciBhIHNpbmdsZSBwb3J0LCBzZXQgYSBzaW5nbGUgcG9ydCBhcyBhbiBpbnRlZ2VyIHZhbHVlLiBGb3IgZXhhbXBsZSwgYGRlc3RQb3J0czogODBgLlxuVG8gZmlsdGVyIGEgcmFuZ2Ugb2YgcG9ydHMsIHVzZSBhIFwic3RhcnQtZW5kXCIgcmFuZ2UgaW4gc3RyaW5nIGZvcm1hdC4gRm9yIGV4YW1wbGUsIGBkZXN0UG9ydHM6IFwiODAtMTAwXCJgLlxuVG8gZmlsdGVyIHR3byBwb3J0cywgdXNlIGEgXCJwb3J0MSxwb3J0MlwiIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgcG9ydHM6IFwiODAsMTAwXCJgLiIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGlyZWN0aW9uIjp7ImRlc2NyaXB0aW9uIjoiYGRpcmVjdGlvbmAgb3B0aW9uYWxseSBkZWZpbmVzIGEgZGlyZWN0aW9uIHRvIGZpbHRlciBmbG93cyBieS4gVGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBgSW5ncmVzc2AgYW5kIGBFZ3Jlc3NgLiIsImVudW0iOlsiSW5ncmVzcyIsIkVncmVzcyJdLCJ0eXBlIjoic3RyaW5nIn0sImVuYWJsZSI6eyJkZXNjcmlwdGlvbiI6IlNldCBgZW5hYmxlYCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSBlQlBGIGZsb3cgZmlsdGVyaW5nIGZlYXR1cmUuIiwidHlwZSI6ImJvb2xlYW4ifSwiaWNtcENvZGUiOnsiZGVzY3JpcHRpb24iOiJgaWNtcENvZGVgLCBmb3IgSW50ZXJuZXQgQ29udHJvbCBNZXNzYWdlIFByb3RvY29sIChJQ01QKSB0cmFmZmljLCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIElDTVAgY29kZSB0byBmaWx0ZXIgZmxvd3MgYnkuIiwidHlwZSI6ImludGVnZXIifSwiaWNtcFR5cGUiOnsiZGVzY3JpcHRpb24iOiJgaWNtcFR5cGVgLCBmb3IgSUNNUCB0cmFmZmljLCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIElDTVAgdHlwZSB0byBmaWx0ZXIgZmxvd3MgYnkuIiwidHlwZSI6ImludGVnZXIifSwicGVlckNJRFIiOnsiZGVzY3JpcHRpb24iOiJgcGVlckNJRFJgIGRlZmluZXMgdGhlIFBlZXIgSVAgQ0lEUiB0byBmaWx0ZXIgZmxvd3MgYnkuXG5FeGFtcGxlczogYDEwLjEwLjEwLjAvMjRgIG9yIGAxMDA6MTAwOjEwMDoxMDA6Oi82NGAiLCJ0eXBlIjoic3RyaW5nIn0sInBlZXJJUCI6eyJkZXNjcmlwdGlvbiI6ImBwZWVySVBgIG9wdGlvbmFsbHkgZGVmaW5lcyB0aGUgcmVtb3RlIElQIGFkZHJlc3MgdG8gZmlsdGVyIGZsb3dzIGJ5LlxuRXhhbXBsZTogYDEwLjEwLjEwLjEwYC4iLCJ0eXBlIjoic3RyaW5nIn0sInBrdERyb3BzIjp7ImRlc2NyaXB0aW9uIjoiYHBrdERyb3BzYCBvcHRpb25hbGx5IGZpbHRlcnMgb25seSBmbG93cyBjb250YWluaW5nIHBhY2tldCBkcm9wcy4iLCJ0eXBlIjoiYm9vbGVhbiJ9LCJwb3J0cyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sImRlc2NyaXB0aW9uIjoiYHBvcnRzYCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIHBvcnRzIHRvIGZpbHRlciBmbG93cyBieS4gSXQgaXMgdXNlZCBib3RoIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvcnRzLlxuVG8gZmlsdGVyIGEgc2luZ2xlIHBvcnQsIHNldCBhIHNpbmdsZSBwb3J0IGFzIGFuIGludGVnZXIgdmFsdWUuIEZvciBleGFtcGxlLCBgcG9ydHM6IDgwYC5cblRvIGZpbHRlciBhIHJhbmdlIG9mIHBvcnRzLCB1c2UgYSBcInN0YXJ0LWVuZFwiIHJhbmdlIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgcG9ydHM6IFwiODAtMTAwXCJgLlxuVG8gZmlsdGVyIHR3byBwb3J0cywgdXNlIGEgXCJwb3J0MSxwb3J0MlwiIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgcG9ydHM6IFwiODAsMTAwXCJgLiIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwicHJvdG9jb2wiOnsiZGVzY3JpcHRpb24iOiJgcHJvdG9jb2xgIG9wdGlvbmFsbHkgZGVmaW5lcyBhIHByb3RvY29sIHRvIGZpbHRlciBmbG93cyBieS4gVGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBgVENQYCwgYFVEUGAsIGBJQ01QYCwgYElDTVB2NmAsIGFuZCBgU0NUUGAuIiwiZW51bSI6WyJUQ1AiLCJVRFAiLCJJQ01QIiwiSUNNUHY2IiwiU0NUUCJdLCJ0eXBlIjoic3RyaW5nIn0sInJ1bGVzIjp7ImRlc2NyaXB0aW9uIjoiYHJ1bGVzYCBkZWZpbmVzIGEgbGlzdCBvZiBmaWx0ZXJpbmcgcnVsZXMgb24gdGhlIGVCUEYgQWdlbnRzLlxuV2hlbiBmaWx0ZXJpbmcgaXMgZW5hYmxlZCwgYnkgZGVmYXVsdCwgZmxvd3MgdGhhdCBkb24ndCBtYXRjaCBhbnkgcnVsZSBhcmUgcmVqZWN0ZWQuXG5UbyBjaGFuZ2UgdGhlIGRlZmF1bHQsIHlvdSBjYW4gZGVmaW5lIGEgcnVsZSB0aGF0IGFjY2VwdHMgZXZlcnl0aGluZzogYHsgYWN0aW9uOiBcIkFjY2VwdFwiLCBjaWRyOiBcIjAuMC4wLjAvMFwiIH1gLCBhbmQgdGhlbiByZWZpbmUgd2l0aCByZWplY3RpbmcgcnVsZXMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJgRUJQRkZsb3dGaWx0ZXJSdWxlYCBkZWZpbmVzIHRoZSBkZXNpcmVkIGVCUEYgYWdlbnQgY29uZmlndXJhdGlvbiByZWdhcmRpbmcgZmxvdyBmaWx0ZXJpbmcgcnVsZS4iLCJwcm9wZXJ0aWVzIjp7ImFjdGlvbiI6eyJkZXNjcmlwdGlvbiI6ImBhY3Rpb25gIGRlZmluZXMgdGhlIGFjdGlvbiB0byBwZXJmb3JtIG9uIHRoZSBmbG93cyB0aGF0IG1hdGNoIHRoZSBmaWx0ZXIuIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmUgYEFjY2VwdGAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LCBhbmQgYFJlamVjdGAuIiwiZW51bSI6WyJBY2NlcHQiLCJSZWplY3QiXSwidHlwZSI6InN0cmluZyJ9LCJjaWRyIjp7ImRlc2NyaXB0aW9uIjoiYGNpZHJgIGRlZmluZXMgdGhlIElQIENJRFIgdG8gZmlsdGVyIGZsb3dzIGJ5LlxuRXhhbXBsZXM6IGAxMC4xMC4xMC4wLzI0YCBvciBgMTAwOjEwMDoxMDA6MTAwOjovNjRgIiwidHlwZSI6InN0cmluZyJ9LCJkZXN0UG9ydHMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJkZXNjcmlwdGlvbiI6ImBkZXN0UG9ydHNgIG9wdGlvbmFsbHkgZGVmaW5lcyB0aGUgZGVzdGluYXRpb24gcG9ydHMgdG8gZmlsdGVyIGZsb3dzIGJ5LlxuVG8gZmlsdGVyIGEgc2luZ2xlIHBvcnQsIHNldCBhIHNpbmdsZSBwb3J0IGFzIGFuIGludGVnZXIgdmFsdWUuIEZvciBleGFtcGxlLCBgZGVzdFBvcnRzOiA4MGAuXG5UbyBmaWx0ZXIgYSByYW5nZSBvZiBwb3J0cywgdXNlIGEgXCJzdGFydC1lbmRcIiByYW5nZSBpbiBzdHJpbmcgZm9ybWF0LiBGb3IgZXhhbXBsZSwgYGRlc3RQb3J0czogXCI4MC0xMDBcImAuXG5UbyBmaWx0ZXIgdHdvIHBvcnRzLCB1c2UgYSBcInBvcnQxLHBvcnQyXCIgaW4gc3RyaW5nIGZvcm1hdC4gRm9yIGV4YW1wbGUsIGBwb3J0czogXCI4MCwxMDBcImAuIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkaXJlY3Rpb24iOnsiZGVzY3JpcHRpb24iOiJgZGlyZWN0aW9uYCBvcHRpb25hbGx5IGRlZmluZXMgYSBkaXJlY3Rpb24gdG8gZmlsdGVyIGZsb3dzIGJ5LiBUaGUgYXZhaWxhYmxlIG9wdGlvbnMgYXJlIGBJbmdyZXNzYCBhbmQgYEVncmVzc2AuIiwiZW51bSI6WyJJbmdyZXNzIiwiRWdyZXNzIl0sInR5cGUiOiJzdHJpbmcifSwiaWNtcENvZGUiOnsiZGVzY3JpcHRpb24iOiJgaWNtcENvZGVgLCBmb3IgSW50ZXJuZXQgQ29udHJvbCBNZXNzYWdlIFByb3RvY29sIChJQ01QKSB0cmFmZmljLCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIElDTVAgY29kZSB0byBmaWx0ZXIgZmxvd3MgYnkuIiwidHlwZSI6ImludGVnZXIifSwiaWNtcFR5cGUiOnsiZGVzY3JpcHRpb24iOiJgaWNtcFR5cGVgLCBmb3IgSUNNUCB0cmFmZmljLCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIElDTVAgdHlwZSB0byBmaWx0ZXIgZmxvd3MgYnkuIiwidHlwZSI6ImludGVnZXIifSwicGVlckNJRFIiOnsiZGVzY3JpcHRpb24iOiJgcGVlckNJRFJgIGRlZmluZXMgdGhlIFBlZXIgSVAgQ0lEUiB0byBmaWx0ZXIgZmxvd3MgYnkuXG5FeGFtcGxlczogYDEwLjEwLjEwLjAvMjRgIG9yIGAxMDA6MTAwOjEwMDoxMDA6Oi82NGAiLCJ0eXBlIjoic3RyaW5nIn0sInBlZXJJUCI6eyJkZXNjcmlwdGlvbiI6ImBwZWVySVBgIG9wdGlvbmFsbHkgZGVmaW5lcyB0aGUgcmVtb3RlIElQIGFkZHJlc3MgdG8gZmlsdGVyIGZsb3dzIGJ5LlxuRXhhbXBsZTogYDEwLjEwLjEwLjEwYC4iLCJ0eXBlIjoic3RyaW5nIn0sInBrdERyb3BzIjp7ImRlc2NyaXB0aW9uIjoiYHBrdERyb3BzYCBvcHRpb25hbGx5IGZpbHRlcnMgb25seSBmbG93cyBjb250YWluaW5nIHBhY2tldCBkcm9wcy4iLCJ0eXBlIjoiYm9vbGVhbiJ9LCJwb3J0cyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sImRlc2NyaXB0aW9uIjoiYHBvcnRzYCBvcHRpb25hbGx5IGRlZmluZXMgdGhlIHBvcnRzIHRvIGZpbHRlciBmbG93cyBieS4gSXQgaXMgdXNlZCBib3RoIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHBvcnRzLlxuVG8gZmlsdGVyIGEgc2luZ2xlIHBvcnQsIHNldCBhIHNpbmdsZSBwb3J0IGFzIGFuIGludGVnZXIgdmFsdWUuIEZvciBleGFtcGxlLCBgcG9ydHM6IDgwYC5cblRvIGZpbHRlciBhIHJhbmdlIG9mIHBvcnRzLCB1c2UgYSBcInN0YXJ0LWVuZFwiIHJhbmdlIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgcG9ydHM6IFwiODAtMTAwXCJgLlxuVG8gZmlsdGVyIHR3byBwb3J0cywgdXNlIGEgXCJwb3J0MSxwb3J0MlwiIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgcG9ydHM6IFwiODAsMTAwXCJgLiIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwicHJvdG9jb2wiOnsiZGVzY3JpcHRpb24iOiJgcHJvdG9jb2xgIG9wdGlvbmFsbHkgZGVmaW5lcyBhIHByb3RvY29sIHRvIGZpbHRlciBmbG93cyBieS4gVGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBgVENQYCwgYFVEUGAsIGBJQ01QYCwgYElDTVB2NmAsIGFuZCBgU0NUUGAuIiwiZW51bSI6WyJUQ1AiLCJVRFAiLCJJQ01QIiwiSUNNUHY2IiwiU0NUUCJdLCJ0eXBlIjoic3RyaW5nIn0sInNhbXBsaW5nIjp7ImRlc2NyaXB0aW9uIjoiYHNhbXBsaW5nYCBpcyB0aGUgc2FtcGxpbmcgcmF0aW8gZm9yIHRoZSBtYXRjaGVkIHBhY2tldHMsIG92ZXJyaWRpbmcgdGhlIGdsb2JhbCBzYW1wbGluZyBkZWZpbmVkIGF0IGBzcGVjLmFnZW50LmVicGYuc2FtcGxpbmdgLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwic291cmNlUG9ydHMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJkZXNjcmlwdGlvbiI6ImBzb3VyY2VQb3J0c2Agb3B0aW9uYWxseSBkZWZpbmVzIHRoZSBzb3VyY2UgcG9ydHMgdG8gZmlsdGVyIGZsb3dzIGJ5LlxuVG8gZmlsdGVyIGEgc2luZ2xlIHBvcnQsIHNldCBhIHNpbmdsZSBwb3J0IGFzIGFuIGludGVnZXIgdmFsdWUuIEZvciBleGFtcGxlLCBgc291cmNlUG9ydHM6IDgwYC5cblRvIGZpbHRlciBhIHJhbmdlIG9mIHBvcnRzLCB1c2UgYSBcInN0YXJ0LWVuZFwiIHJhbmdlIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgc291cmNlUG9ydHM6IFwiODAtMTAwXCJgLlxuVG8gZmlsdGVyIHR3byBwb3J0cywgdXNlIGEgXCJwb3J0MSxwb3J0MlwiIGluIHN0cmluZyBmb3JtYXQuIEZvciBleGFtcGxlLCBgcG9ydHM6IFwiODAsMTAwXCJgLiIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwidGNwRmxhZ3MiOnsiZGVzY3JpcHRpb24iOiJgdGNwRmxhZ3NgIG9wdGlvbmFsbHkgZGVmaW5lcyBUQ1AgZmxhZ3MgdG8gZmlsdGVyIGZsb3dzIGJ5LlxuSW4gYWRkaXRpb24gdG8gdGhlIHN0YW5kYXJkIGZsYWdzIChSRkMtOTI5MyksIHlvdSBjYW4gYWxzbyBmaWx0ZXIgYnkgb25lIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgY29tYmluYXRpb25zOiBgU1lOLUFDS2AsIGBGSU4tQUNLYCwgYW5kIGBSU1QtQUNLYC4iLCJlbnVtIjpbIlNZTiIsIlNZTi1BQ0siLCJBQ0siLCJGSU4iLCJSU1QiLCJVUkciLCJFQ0UiLCJDV1IiLCJGSU4tQUNLIiwiUlNULUFDSyJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sIm1heEl0ZW1zIjoxNiwibWluSXRlbXMiOjEsInR5cGUiOiJhcnJheSJ9LCJzYW1wbGluZyI6eyJkZXNjcmlwdGlvbiI6ImBzYW1wbGluZ2AgaXMgdGhlIHNhbXBsaW5nIHJhdGlvIGZvciB0aGUgbWF0Y2hlZCBwYWNrZXRzLCBvdmVycmlkaW5nIHRoZSBnbG9iYWwgc2FtcGxpbmcgZGVmaW5lZCBhdCBgc3BlYy5hZ2VudC5lYnBmLnNhbXBsaW5nYC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sInNvdXJjZVBvcnRzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwiZGVzY3JpcHRpb24iOiJgc291cmNlUG9ydHNgIG9wdGlvbmFsbHkgZGVmaW5lcyB0aGUgc291cmNlIHBvcnRzIHRvIGZpbHRlciBmbG93cyBieS5cblRvIGZpbHRlciBhIHNpbmdsZSBwb3J0LCBzZXQgYSBzaW5nbGUgcG9ydCBhcyBhbiBpbnRlZ2VyIHZhbHVlLiBGb3IgZXhhbXBsZSwgYHNvdXJjZVBvcnRzOiA4MGAuXG5UbyBmaWx0ZXIgYSByYW5nZSBvZiBwb3J0cywgdXNlIGEgXCJzdGFydC1lbmRcIiByYW5nZSBpbiBzdHJpbmcgZm9ybWF0LiBGb3IgZXhhbXBsZSwgYHNvdXJjZVBvcnRzOiBcIjgwLTEwMFwiYC5cblRvIGZpbHRlciB0d28gcG9ydHMsIHVzZSBhIFwicG9ydDEscG9ydDJcIiBpbiBzdHJpbmcgZm9ybWF0LiBGb3IgZXhhbXBsZSwgYHBvcnRzOiBcIjgwLDEwMFwiYC4iLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sInRjcEZsYWdzIjp7ImRlc2NyaXB0aW9uIjoiYHRjcEZsYWdzYCBvcHRpb25hbGx5IGRlZmluZXMgVENQIGZsYWdzIHRvIGZpbHRlciBmbG93cyBieS5cbkluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBmbGFncyAoUkZDLTkyOTMpLCB5b3UgY2FuIGFsc28gZmlsdGVyIGJ5IG9uZSBvZiB0aGUgdGhyZWUgZm9sbG93aW5nIGNvbWJpbmF0aW9uczogYFNZTi1BQ0tgLCBgRklOLUFDS2AsIGFuZCBgUlNULUFDS2AuIiwiZW51bSI6WyJTWU4iLCJTWU4tQUNLIiwiQUNLIiwiRklOIiwiUlNUIiwiVVJHIiwiRUNFIiwiQ1dSIiwiRklOLUFDSyIsIlJTVC1BQ0siXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJpbWFnZVB1bGxQb2xpY3kiOnsiZGVmYXVsdCI6IklmTm90UHJlc2VudCIsImRlc2NyaXB0aW9uIjoiYGltYWdlUHVsbFBvbGljeWAgaXMgdGhlIEt1YmVybmV0ZXMgcHVsbCBwb2xpY3kgZm9yIHRoZSBpbWFnZSBkZWZpbmVkIGFib3ZlIiwiZW51bSI6WyJJZk5vdFByZXNlbnQiLCJBbHdheXMiLCJOZXZlciJdLCJ0eXBlIjoic3RyaW5nIn0sImludGVyZmFjZXMiOnsiZGVzY3JpcHRpb24iOiJgaW50ZXJmYWNlc2AgY29udGFpbnMgdGhlIGludGVyZmFjZSBuYW1lcyBmcm9tIHdoZXJlIGZsb3dzIGFyZSBjb2xsZWN0ZWQuIElmIGVtcHR5LCB0aGUgYWdlbnRcbmZldGNoZXMgYWxsIHRoZSBpbnRlcmZhY2VzIGluIHRoZSBzeXN0ZW0sIGV4Y2VwdGluZyB0aGUgb25lcyBsaXN0ZWQgaW4gYGV4Y2x1ZGVJbnRlcmZhY2VzYC5cbkFuIGVudHJ5IGVuY2xvc2VkIGJ5IHNsYXNoZXMsIHN1Y2ggYXMgYC9ici0vYCwgaXMgbWF0Y2hlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbk90aGVyd2lzZSBpdCBpcyBtYXRjaGVkIGFzIGEgY2FzZS1zZW5zaXRpdmUgc3RyaW5nLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In0sImthZmthQmF0Y2hTaXplIjp7ImRlZmF1bHQiOjEwNDg1NzYsImRlc2NyaXB0aW9uIjoiYGthZmthQmF0Y2hTaXplYCBsaW1pdHMgdGhlIG1heGltdW0gc2l6ZSBvZiBhIHJlcXVlc3QgaW4gYnl0ZXMgYmVmb3JlIGJlaW5nIHNlbnQgdG8gYSBwYXJ0aXRpb24uIElnbm9yZWQgd2hlbiBub3QgdXNpbmcgS2Fma2EuIERlZmF1bHQ6IDFNQi4iLCJ0eXBlIjoiaW50ZWdlciJ9LCJsb2dMZXZlbCI6eyJkZWZhdWx0IjoiaW5mbyIsImRlc2NyaXB0aW9uIjoiYGxvZ0xldmVsYCBkZWZpbmVzIHRoZSBsb2cgbGV2ZWwgZm9yIHRoZSBOZXRPYnNlcnYgZUJQRiBBZ2VudCIsImVudW0iOlsidHJhY2UiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJmYXRhbCIsInBhbmljIl0sInR5cGUiOiJzdHJpbmcifSwibWV0cmljcyI6eyJkZXNjcmlwdGlvbiI6ImBtZXRyaWNzYCBkZWZpbmVzIHRoZSBlQlBGIGFnZW50IGNvbmZpZ3VyYXRpb24gcmVnYXJkaW5nIG1ldHJpY3MuIiwicHJvcGVydGllcyI6eyJkaXNhYmxlQWxlcnRzIjp7ImRlc2NyaXB0aW9uIjoiYGRpc2FibGVBbGVydHNgIGlzIGEgbGlzdCBvZiBhbGVydHMgdGhhdCBzaG91bGQgYmUgZGlzYWJsZWQuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlOlx1MDAzY2JyXHUwMDNlXG5gTmV0T2JzZXJ2RHJvcHBlZEZsb3dzYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGVCUEYgYWdlbnQgaXMgbWlzc2luZyBwYWNrZXRzIG9yIGZsb3dzLCBzdWNoIGFzIHdoZW4gdGhlIEJQRiBoYXNobWFwIGlzIGJ1c3kgb3IgZnVsbCwgb3IgdGhlIGNhcGFjaXR5IGxpbWl0ZXIgaXMgYmVpbmcgdHJpZ2dlcmVkLlx1MDAzY2JyXHUwMDNlIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIGFuIGVCUEYgYWdlbnQgYWxlcnQuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlOlx1MDAzY2JyXHUwMDNlXG5gTmV0T2JzZXJ2RHJvcHBlZEZsb3dzYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGVCUEYgYWdlbnQgaXMgbWlzc2luZyBwYWNrZXRzIG9yIGZsb3dzLCBzdWNoIGFzIHdoZW4gdGhlIEJQRiBoYXNobWFwIGlzIGJ1c3kgb3IgZnVsbCwgb3IgdGhlIGNhcGFjaXR5IGxpbWl0ZXIgaXMgYmVpbmcgdHJpZ2dlcmVkLlx1MDAzY2JyXHUwMDNlIiwiZW51bSI6WyJOZXRPYnNlcnZEcm9wcGVkRmxvd3MiXSwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifSwiZW5hYmxlIjp7ImRlc2NyaXB0aW9uIjoiU2V0IGBlbmFibGVgIHRvIGBmYWxzZWAgdG8gZGlzYWJsZSBlQlBGIGFnZW50IG1ldHJpY3MgY29sbGVjdGlvbi4gSXQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiIsInR5cGUiOiJib29sZWFuIn0sInNlcnZlciI6eyJkZXNjcmlwdGlvbiI6Ik1ldHJpY3Mgc2VydmVyIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBQcm9tZXRoZXVzIHNjcmFwZXIuIiwicHJvcGVydGllcyI6eyJwb3J0Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIG1ldHJpY3Mgc2VydmVyIEhUVFAgcG9ydC4iLCJmb3JtYXQiOiJpbnQzMiIsIm1heGltdW0iOjY1NTM1LCJtaW5pbXVtIjoxLCJ0eXBlIjoiaW50ZWdlciJ9LCJ0bHMiOnsiZGVzY3JpcHRpb24iOiJUTFMgY29uZmlndXJhdGlvbi4iLCJwcm9wZXJ0aWVzIjp7Imluc2VjdXJlU2tpcFZlcmlmeSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJgaW5zZWN1cmVTa2lwVmVyaWZ5YCBhbGxvd3Mgc2tpcHBpbmcgY2xpZW50LXNpZGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBwcm92aWRlZCBjZXJ0aWZpY2F0ZS5cbklmIHNldCB0byBgdHJ1ZWAsIHRoZSBgcHJvdmlkZWRDYUZpbGVgIGZpZWxkIGlzIGlnbm9yZWQuIiwidHlwZSI6ImJvb2xlYW4ifSwicHJvdmlkZWQiOnsiZGVzY3JpcHRpb24iOiJUTFMgY29uZmlndXJhdGlvbiB3aGVuIGB0eXBlYCBpcyBzZXQgdG8gYFByb3ZpZGVkYC4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInByb3ZpZGVkQ2FGaWxlIjp7ImRlc2NyaXB0aW9uIjoiUmVmZXJlbmNlIHRvIHRoZSBDQSBmaWxlIHdoZW4gYHR5cGVgIGlzIHNldCB0byBgUHJvdmlkZWRgLiIsInByb3BlcnRpZXMiOnsiZmlsZSI6eyJkZXNjcmlwdGlvbiI6IkZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgdGhlIGZpbGUuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIHRoZSBmaWxlLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBmaWxlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImRlZmF1bHQiOiJEaXNhYmxlZCIsImRlc2NyaXB0aW9uIjoiU2VsZWN0IHRoZSB0eXBlIG9mIFRMUyBjb25maWd1cmF0aW9uOlx1MDAzY2JyXHUwMDNlXG4tIGBEaXNhYmxlZGAgKGRlZmF1bHQpIHRvIG5vdCBjb25maWd1cmUgVExTIGZvciB0aGUgZW5kcG9pbnQuXG4tIGBQcm92aWRlZGAgdG8gbWFudWFsbHkgcHJvdmlkZSBjZXJ0IGZpbGUgYW5kIGEga2V5IGZpbGUuIFtVbnN1cHBvcnRlZCAoKildLlxuLSBgQXV0b2AgdG8gdXNlIE9wZW5TaGlmdCBhdXRvIGdlbmVyYXRlZCBjZXJ0aWZpY2F0ZSB1c2luZyBhbm5vdGF0aW9ucy4iLCJlbnVtIjpbIkRpc2FibGVkIiwiUHJvdmlkZWQiLCJBdXRvIl0sInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJwcml2aWxlZ2VkIjp7ImRlc2NyaXB0aW9uIjoiUHJpdmlsZWdlZCBtb2RlIGZvciB0aGUgZUJQRiBBZ2VudCBjb250YWluZXIuIFdoZW4gaWdub3JlZCBvciBzZXQgdG8gYGZhbHNlYCwgdGhlIG9wZXJhdG9yIHNldHNcbmdyYW51bGFyIGNhcGFiaWxpdGllcyAoQlBGLCBQRVJGTU9OLCBORVRfQURNSU4pIHRvIHRoZSBjb250YWluZXIuXG5JZiBmb3Igc29tZSByZWFzb24gdGhlc2UgY2FwYWJpbGl0aWVzIGNhbm5vdCBiZSBzZXQsIHN1Y2ggYXMgaWYgYW4gb2xkIGtlcm5lbCB2ZXJzaW9uIG5vdCBrbm93aW5nIENBUF9CUEZcbmlzIGluIHVzZSwgdGhlbiB5b3UgY2FuIHR1cm4gb24gdGhpcyBtb2RlIGZvciBtb3JlIGdsb2JhbCBwcml2aWxlZ2VzLlxuU29tZSBhZ2VudCBmZWF0dXJlcyByZXF1aXJlIHRoZSBwcml2aWxlZ2VkIG1vZGUsIHN1Y2ggYXMgcGFja2V0IGRyb3BzIHRyYWNraW5nIChzZWUgYGZlYXR1cmVzYCkgYW5kIFNSLUlPViBzdXBwb3J0LiIsInR5cGUiOiJib29sZWFuIn0sInJlc291cmNlcyI6eyJkZWZhdWx0Ijp7ImxpbWl0cyI6eyJtZW1vcnkiOiI4MDBNaSJ9LCJyZXF1ZXN0cyI6eyJjcHUiOiIxMDBtIiwibWVtb3J5IjoiNTBNaSJ9fSwiZGVzY3JpcHRpb24iOiJgcmVzb3VyY2VzYCBhcmUgdGhlIGNvbXB1dGUgcmVzb3VyY2VzIHJlcXVpcmVkIGJ5IHRoaXMgY29udGFpbmVyLlxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJwcm9wZXJ0aWVzIjp7ImNsYWltcyI6eyJkZXNjcmlwdGlvbiI6IkNsYWltcyBsaXN0cyB0aGUgbmFtZXMgb2YgcmVzb3VyY2VzLCBkZWZpbmVkIGluIHNwZWMucmVzb3VyY2VDbGFpbXMsXG50aGF0IGFyZSB1c2VkIGJ5IHRoaXMgY29udGFpbmVyLlxuXG5UaGlzIGZpZWxkIGRlcGVuZHMgb24gdGhlXG5EeW5hbWljUmVzb3VyY2VBbGxvY2F0aW9uIGZlYXR1cmUgZ2F0ZS5cblxuVGhpcyBmaWVsZCBpcyBpbW11dGFibGUuIEl0IGNhbiBvbmx5IGJlIHNldCBmb3IgY29udGFpbmVycy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlJlc291cmNlQ2xhaW0gcmVmZXJlbmNlcyBvbmUgZW50cnkgaW4gUG9kU3BlYy5SZXNvdXJjZUNsYWltcy4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG11c3QgbWF0Y2ggdGhlIG5hbWUgb2Ygb25lIGVudHJ5IGluIHBvZC5zcGVjLnJlc291cmNlQ2xhaW1zIG9mXG50aGUgUG9kIHdoZXJlIHRoaXMgZmllbGQgaXMgdXNlZC4gSXQgbWFrZXMgdGhhdCByZXNvdXJjZSBhdmFpbGFibGVcbmluc2lkZSBhIGNvbnRhaW5lci4iLCJ0eXBlIjoic3RyaW5nIn0sInJlcXVlc3QiOnsiZGVzY3JpcHRpb24iOiJSZXF1ZXN0IGlzIHRoZSBuYW1lIGNob3NlbiBmb3IgYSByZXF1ZXN0IGluIHRoZSByZWZlcmVuY2VkIGNsYWltLlxuSWYgZW1wdHksIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgY2xhaW0gaXMgbWFkZSBhdmFpbGFibGUsIG90aGVyd2lzZVxub25seSB0aGUgcmVzdWx0IG9mIHRoaXMgcmVxdWVzdC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtbWFwLWtleXMiOlsibmFtZSJdLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoibWFwIn0sImxpbWl0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJMaW1pdHMgZGVzY3JpYmVzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBjb21wdXRlIHJlc291cmNlcyBhbGxvd2VkLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In0sInJlcXVlc3RzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkZXNjcmlwdGlvbiI6IlJlcXVlc3RzIGRlc2NyaWJlcyB0aGUgbWluaW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgcmVxdWlyZWQuXG5JZiBSZXF1ZXN0cyBpcyBvbWl0dGVkIGZvciBhIGNvbnRhaW5lciwgaXQgZGVmYXVsdHMgdG8gTGltaXRzIGlmIHRoYXQgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsXG5vdGhlcndpc2UgdG8gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZS4gUmVxdWVzdHMgY2Fubm90IGV4Y2VlZCBMaW1pdHMuXG5Nb3JlIGluZm86IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vbWFuYWdlLXJlc291cmNlcy1jb250YWluZXJzLyIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwic2FtcGxpbmciOnsiZGVmYXVsdCI6NTAsImRlc2NyaXB0aW9uIjoiU2FtcGxpbmcgcmF0aW8gb2YgdGhlIGVCUEYgcHJvYmUuIDEwMCBtZWFucyBvbmUgcGFja2V0IG9uIDEwMCBpcyBzZW50LiAwIG9yIDEgbWVhbnMgYWxsIHBhY2tldHMgYXJlIHNhbXBsZWQuIiwiZm9ybWF0IjoiaW50MzIiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9fSwidHlwZSI6Im9iamVjdCJ9LCJpcGZpeCI6eyJkZXNjcmlwdGlvbiI6ImBpcGZpeGAgW2RlcHJlY2F0ZWQgKCopXSAtIGRlc2NyaWJlcyB0aGUgc2V0dGluZ3MgcmVsYXRlZCB0byB0aGUgSVBGSVgtYmFzZWQgZmxvdyByZXBvcnRlciB3aGVuIGBzcGVjLmFnZW50LnR5cGVgXG5pcyBzZXQgdG8gYElQRklYYC4iLCJwcm9wZXJ0aWVzIjp7ImNhY2hlQWN0aXZlVGltZW91dCI6eyJkZWZhdWx0IjoiMjBzIiwiZGVzY3JpcHRpb24iOiJgY2FjaGVBY3RpdmVUaW1lb3V0YCBpcyB0aGUgbWF4IHBlcmlvZCBkdXJpbmcgd2hpY2ggdGhlIHJlcG9ydGVyIGFnZ3JlZ2F0ZXMgZmxvd3MgYmVmb3JlIHNlbmRpbmcuIiwicGF0dGVybiI6Il5cXGQrKG5zfG1zfHN8bSk/JCIsInR5cGUiOiJzdHJpbmcifSwiY2FjaGVNYXhGbG93cyI6eyJkZWZhdWx0Ijo0MDAsImRlc2NyaXB0aW9uIjoiYGNhY2hlTWF4Rmxvd3NgIGlzIHRoZSBtYXggbnVtYmVyIG9mIGZsb3dzIGluIGFuIGFnZ3JlZ2F0ZTsgd2hlbiByZWFjaGVkLCB0aGUgcmVwb3J0ZXIgc2VuZHMgdGhlIGZsb3dzLiIsImZvcm1hdCI6ImludDMyIiwibWluaW11bSI6MCwidHlwZSI6ImludGVnZXIifSwiY2x1c3Rlck5ldHdvcmtPcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6ImBjbHVzdGVyTmV0d29ya09wZXJhdG9yYCBkZWZpbmVzIHRoZSBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBPcGVuU2hpZnQgQ2x1c3RlciBOZXR3b3JrIE9wZXJhdG9yLCB3aGVuIGF2YWlsYWJsZS4iLCJwcm9wZXJ0aWVzIjp7Im5hbWVzcGFjZSI6eyJkZWZhdWx0Ijoib3BlbnNoaWZ0LW5ldHdvcmstb3BlcmF0b3IiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSAgd2hlcmUgdGhlIGNvbmZpZyBtYXAgaXMgZ29pbmcgdG8gYmUgZGVwbG95ZWQuIiwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJmb3JjZVNhbXBsZUFsbCI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJgZm9yY2VTYW1wbGVBbGxgIGFsbG93cyBkaXNhYmxpbmcgc2FtcGxpbmcgaW4gdGhlIElQRklYLWJhc2VkIGZsb3cgcmVwb3J0ZXIuXG5JdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gc2FtcGxlIGFsbCB0aGUgdHJhZmZpYyB3aXRoIElQRklYLCBhcyBpdCBtaWdodCBnZW5lcmF0ZSBjbHVzdGVyIGluc3RhYmlsaXR5LlxuSWYgeW91IFJFQUxMWSB3YW50IHRvIGRvIHRoYXQsIHNldCB0aGlzIGZsYWcgdG8gYHRydWVgLiBVc2UgYXQgeW91ciBvd24gcmlzay5cbldoZW4gaXQgaXMgc2V0IHRvIGB0cnVlYCwgdGhlIHZhbHVlIG9mIGBzYW1wbGluZ2AgaXMgaWdub3JlZC4iLCJ0eXBlIjoiYm9vbGVhbiJ9LCJvdm5LdWJlcm5ldGVzIjp7ImRlc2NyaXB0aW9uIjoiYG92bkt1YmVybmV0ZXNgIGRlZmluZXMgdGhlIHNldHRpbmdzIG9mIHRoZSBPVk4tS3ViZXJuZXRlcyBuZXR3b3JrIHBsdWdpbiwgd2hlbiBhdmFpbGFibGUuIFRoaXMgY29uZmlndXJhdGlvbiBpcyB1c2VkIHdoZW4gdXNpbmcgT1ZOJ3MgSVBGSVggZXhwb3J0cywgd2l0aG91dCBPcGVuU2hpZnQuIFdoZW4gdXNpbmcgT3BlblNoaWZ0LCByZWZlciB0byB0aGUgYGNsdXN0ZXJOZXR3b3JrT3BlcmF0b3JgIHByb3BlcnR5IGluc3RlYWQuIiwicHJvcGVydGllcyI6eyJjb250YWluZXJOYW1lIjp7ImRlZmF1bHQiOiJvdm5rdWJlLW5vZGUiLCJkZXNjcmlwdGlvbiI6ImBjb250YWluZXJOYW1lYCBkZWZpbmVzIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgdG8gY29uZmlndXJlIGZvciBJUEZJWC4iLCJ0eXBlIjoic3RyaW5nIn0sImRhZW1vblNldE5hbWUiOnsiZGVmYXVsdCI6Im92bmt1YmUtbm9kZSIsImRlc2NyaXB0aW9uIjoiYGRhZW1vblNldE5hbWVgIGRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIERhZW1vblNldCBjb250cm9sbGluZyB0aGUgT1ZOLUt1YmVybmV0ZXMgcG9kcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0Ijoib3ZuLWt1YmVybmV0ZXMiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSB3aGVyZSBPVk4tS3ViZXJuZXRlcyBwb2RzIGFyZSBkZXBsb3llZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInNhbXBsaW5nIjp7ImRlZmF1bHQiOjQwMCwiZGVzY3JpcHRpb24iOiJgc2FtcGxpbmdgIGlzIHRoZSBzYW1wbGluZyByYXRlIG9uIHRoZSByZXBvcnRlci4gMTAwIG1lYW5zIG9uZSBmbG93IG9uIDEwMCBpcyBzZW50LlxuVG8gZW5zdXJlIGNsdXN0ZXIgc3RhYmlsaXR5LCBpdCBpcyBub3QgcG9zc2libGUgdG8gc2V0IGEgdmFsdWUgYmVsb3cgMi5cbklmIHlvdSByZWFsbHkgd2FudCB0byBzYW1wbGUgZXZlcnkgcGFja2V0LCB3aGljaCBtaWdodCBpbXBhY3QgdGhlIGNsdXN0ZXIgc3RhYmlsaXR5LFxucmVmZXIgdG8gYGZvcmNlU2FtcGxlQWxsYC4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiB1c2UgdGhlIGVCUEYgQWdlbnQgaW5zdGVhZCBvZiBJUEZJWC4iLCJmb3JtYXQiOiJpbnQzMiIsIm1pbmltdW0iOjIsInR5cGUiOiJpbnRlZ2VyIn19LCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsiZGVmYXVsdCI6ImVCUEYiLCJkZXNjcmlwdGlvbiI6ImB0eXBlYCBbZGVwcmVjYXRlZCAoKildIHNlbGVjdHMgdGhlIGZsb3dzIHRyYWNpbmcgYWdlbnQuIFByZXZpb3VzbHksIHRoaXMgZmllbGQgYWxsb3dlZCB0byBzZWxlY3QgYmV0d2VlbiBgZUJQRmAgb3IgYElQRklYYC5cbk9ubHkgYGVCUEZgIGlzIGFsbG93ZWQgbm93LCBzbyB0aGlzIGZpZWxkIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIHBsYW5uZWQgZm9yIHJlbW92YWwgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGUgQVBJLiIsImVudW0iOlsiZUJQRiIsIklQRklYIl0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwiY29uc29sZVBsdWdpbiI6eyJkZXNjcmlwdGlvbiI6ImBjb25zb2xlUGx1Z2luYCBkZWZpbmVzIHRoZSBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBPcGVuU2hpZnQgQ29uc29sZSBwbHVnaW4sIHdoZW4gYXZhaWxhYmxlLiIsInByb3BlcnRpZXMiOnsiYWR2YW5jZWQiOnsiZGVzY3JpcHRpb24iOiJgYWR2YW5jZWRgIGFsbG93cyBzZXR0aW5nIHNvbWUgYXNwZWN0cyBvZiB0aGUgaW50ZXJuYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgY29uc29sZSBwbHVnaW4uXG5UaGlzIHNlY3Rpb24gaXMgYWltZWQgbW9zdGx5IGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtZ3JhaW5lZCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLFxuc3VjaCBhcyBgR09HQ2AgYW5kIGBHT01BWFBST0NTYCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFNldCB0aGVzZSB2YWx1ZXMgYXQgeW91ciBvd24gcmlzay4iLCJwcm9wZXJ0aWVzIjp7ImFyZ3MiOnsiZGVzY3JpcHRpb24iOiJgYXJnc2AgYWxsb3dzIHBhc3NpbmcgY3VzdG9tIGFyZ3VtZW50cyB0byB1bmRlcmx5aW5nIGNvbXBvbmVudHMuIFVzZWZ1bCBmb3Igb3ZlcnJpZGluZ1xuc29tZSBwYXJhbWV0ZXJzLCBzdWNoIGFzIGEgVVJMIG9yIGEgY29uZmlndXJhdGlvbiBwYXRoLCB0aGF0IHNob3VsZCBub3QgYmVcbnB1YmxpY2x5IGV4cG9zZWQgYXMgcGFydCBvZiB0aGUgRmxvd0NvbGxlY3RvciBkZXNjcmlwdG9yLCBhcyB0aGV5IGFyZSBvbmx5IHVzZWZ1bFxuaW4gZWRnZSBkZWJ1ZyBvciBzdXBwb3J0IHNjZW5hcmlvcy4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJlbnYiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6ImBlbnZgIGFsbG93cyBwYXNzaW5nIGN1c3RvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdW5kZXJseWluZyBjb21wb25lbnRzLiBVc2VmdWwgZm9yIHBhc3NpbmdcbnNvbWUgdmVyeSBjb25jcmV0ZSBwZXJmb3JtYW5jZS10dW5pbmcgb3B0aW9ucywgc3VjaCBhcyBgR09HQ2AgYW5kIGBHT01BWFBST0NTYCwgdGhhdCBzaG91bGQgbm90IGJlXG5wdWJsaWNseSBleHBvc2VkIGFzIHBhcnQgb2YgdGhlIEZsb3dDb2xsZWN0b3IgZGVzY3JpcHRvciwgYXMgdGhleSBhcmUgb25seSB1c2VmdWxcbmluIGVkZ2UgZGVidWcgb3Igc3VwcG9ydCBzY2VuYXJpb3MuIiwidHlwZSI6Im9iamVjdCJ9LCJwb3J0Ijp7ImRlZmF1bHQiOjkwMDEsImRlc2NyaXB0aW9uIjoiYHBvcnRgIGlzIHRoZSBwbHVnaW4gc2VydmljZSBwb3J0LiBEbyBub3QgdXNlIDkwMDIsIHdoaWNoIGlzIHJlc2VydmVkIGZvciBtZXRyaWNzLiIsImZvcm1hdCI6ImludDMyIiwibWF4aW11bSI6NjU1MzUsIm1pbmltdW0iOjEsInR5cGUiOiJpbnRlZ2VyIn0sInJlZ2lzdGVyIjp7ImRlZmF1bHQiOnRydWUsImRlc2NyaXB0aW9uIjoiYHJlZ2lzdGVyYCBhbGxvd3MsIHdoZW4gc2V0IHRvIGB0cnVlYCwgdG8gYXV0b21hdGljYWxseSByZWdpc3RlciB0aGUgcHJvdmlkZWQgY29uc29sZSBwbHVnaW4gd2l0aCB0aGUgT3BlblNoaWZ0IENvbnNvbGUgb3BlcmF0b3IuXG5XaGVuIHNldCB0byBgZmFsc2VgLCB5b3UgY2FuIHN0aWxsIHJlZ2lzdGVyIGl0IG1hbnVhbGx5IGJ5IGVkaXRpbmcgY29uc29sZS5vcGVyYXRvci5vcGVuc2hpZnQuaW8vY2x1c3RlciB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDpcbmBvYyBwYXRjaCBjb25zb2xlLm9wZXJhdG9yLm9wZW5zaGlmdC5pbyBjbHVzdGVyIC0tdHlwZT0nanNvbicgLXAgJ1t7XCJvcFwiOiBcImFkZFwiLCBcInBhdGhcIjogXCIvc3BlYy9wbHVnaW5zLy1cIiwgXCJ2YWx1ZVwiOiBcIm5ldG9ic2Vydi1wbHVnaW5cIn1dJ2AiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJzY2hlZHVsaW5nIjp7ImRlc2NyaXB0aW9uIjoiYHNjaGVkdWxpbmdgIGNvbnRyb2xzIGhvdyB0aGUgcG9kcyBhcmUgc2NoZWR1bGVkIG9uIG5vZGVzLiIsInByb3BlcnRpZXMiOnsiYWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJJZiBzcGVjaWZpZWQsIHRoZSBwb2QncyBzY2hlZHVsaW5nIGNvbnN0cmFpbnRzLiBGb3IgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvcmVmZXJlbmNlL2t1YmVybmV0ZXMtYXBpL3dvcmtsb2FkLXJlc291cmNlcy9wb2QtdjEvI3NjaGVkdWxpbmcuIiwicHJvcGVydGllcyI6eyJub2RlQWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJEZXNjcmliZXMgbm9kZSBhZmZpbml0eSBzY2hlZHVsaW5nIHJ1bGVzIGZvciB0aGUgcG9kLiIsInByb3BlcnRpZXMiOnsicHJlZmVycmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJUaGUgc2NoZWR1bGVyIHdpbGwgcHJlZmVyIHRvIHNjaGVkdWxlIHBvZHMgdG8gbm9kZXMgdGhhdCBzYXRpc2Z5XG50aGUgYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIGFkZGluZ1xuXCJ3ZWlnaHRcIiB0byB0aGUgc3VtIGlmIHRoZSBub2RlIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgbWF0Y2hFeHByZXNzaW9uczsgdGhlXG5ub2RlKHMpIHdpdGggdGhlIGhpZ2hlc3Qgc3VtIGFyZSB0aGUgbW9zdCBwcmVmZXJyZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBbiBlbXB0eSBwcmVmZXJyZWQgc2NoZWR1bGluZyB0ZXJtIG1hdGNoZXMgYWxsIG9iamVjdHMgd2l0aCBpbXBsaWNpdCB3ZWlnaHQgMFxuKGkuZS4gaXQncyBhIG5vLW9wKS4gQSBudWxsIHByZWZlcnJlZCBzY2hlZHVsaW5nIHRlcm0gbWF0Y2hlcyBubyBvYmplY3RzIChpLmUuIGlzIGFsc28gYSBuby1vcCkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJlbmNlIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBsYWJlbHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hGaWVsZHMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGZpZWxkcy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJ3ZWlnaHQiOnsiZGVzY3JpcHRpb24iOiJXZWlnaHQgYXNzb2NpYXRlZCB3aXRoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVTZWxlY3RvclRlcm0sIGluIHRoZSByYW5nZSAxLTEwMC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJwcmVmZXJlbmNlIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGFuIHVwZGF0ZSksIHRoZSBzeXN0ZW1cbm1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS4iLCJwcm9wZXJ0aWVzIjp7Im5vZGVTZWxlY3RvclRlcm1zIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHRlcm1zLiBUaGUgdGVybXMgYXJlIE9SZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG51bGwgb3IgZW1wdHkgbm9kZSBzZWxlY3RvciB0ZXJtIG1hdGNoZXMgbm8gb2JqZWN0cy4gVGhlIHJlcXVpcmVtZW50cyBvZlxudGhlbSBhcmUgQU5EZWQuXG5UaGUgVG9wb2xvZ3lTZWxlY3RvclRlcm0gdHlwZSBpbXBsZW1lbnRzIGEgc3Vic2V0IG9mIHRoZSBOb2RlU2VsZWN0b3JUZXJtLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgbGFiZWxzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoRmllbGRzIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBmaWVsZHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsibm9kZVNlbGVjdG9yVGVybXMiXSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJwb2RBZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaWJlcyBwb2QgYWZmaW5pdHkgc2NoZWR1bGluZyBydWxlcyAoZS5nLiBjby1sb2NhdGUgdGhpcyBwb2QgaW4gdGhlIHNhbWUgbm9kZSwgem9uZSwgZXRjLiBhcyBzb21lIG90aGVyIHBvZChzKSkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IlRoZSBzY2hlZHVsZXIgd2lsbCBwcmVmZXIgdG8gc2NoZWR1bGUgcG9kcyB0byBub2RlcyB0aGF0IHNhdGlzZnlcbnRoZSBhZmZpbml0eSBleHByZXNzaW9ucyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCwgYnV0IGl0IG1heSBjaG9vc2VcbmEgbm9kZSB0aGF0IHZpb2xhdGVzIG9uZSBvciBtb3JlIG9mIHRoZSBleHByZXNzaW9ucy4gVGhlIG5vZGUgdGhhdCBpc1xubW9zdCBwcmVmZXJyZWQgaXMgdGhlIG9uZSB3aXRoIHRoZSBncmVhdGVzdCBzdW0gb2Ygd2VpZ2h0cywgaS5lLlxuZm9yIGVhY2ggbm9kZSB0aGF0IG1lZXRzIGFsbCBvZiB0aGUgc2NoZWR1bGluZyByZXF1aXJlbWVudHMgKHJlc291cmNlXG5yZXF1ZXN0LCByZXF1aXJlZER1cmluZ1NjaGVkdWxpbmcgYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgYWRkaW5nXG5cIndlaWdodFwiIHRvIHRoZSBzdW0gaWYgdGhlIG5vZGUgaGFzIHBvZHMgd2hpY2ggbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm07IHRoZVxubm9kZShzKSB3aXRoIHRoZSBoaWdoZXN0IHN1bSBhcmUgdGhlIG1vc3QgcHJlZmVycmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHdlaWdodHMgb2YgYWxsIG9mIHRoZSBtYXRjaGVkIFdlaWdodGVkUG9kQWZmaW5pdHlUZXJtIGZpZWxkcyBhcmUgYWRkZWQgcGVyLW5vZGUgdG8gZmluZCB0aGUgbW9zdCBwcmVmZXJyZWQgbm9kZShzKSIsInByb3BlcnRpZXMiOnsicG9kQWZmaW5pdHlUZXJtIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgcG9kIGFmZmluaXR5IHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwid2VpZ2h0Ijp7ImRlc2NyaXB0aW9uIjoid2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm0sXG5pbiB0aGUgcmFuZ2UgMS0xMDAuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9fSwicmVxdWlyZWQiOlsicG9kQWZmaW5pdHlUZXJtIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGEgcG9kIGxhYmVsIHVwZGF0ZSksIHRoZVxuc3lzdGVtIG1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS5cbldoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzLCB0aGUgbGlzdHMgb2Ygbm9kZXMgY29ycmVzcG9uZGluZyB0byBlYWNoXG5wb2RBZmZpbml0eVRlcm0gYXJlIGludGVyc2VjdGVkLCBpLmUuIGFsbCB0ZXJtcyBtdXN0IGJlIHNhdGlzZmllZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgYSBzZXQgb2YgcG9kcyAobmFtZWx5IHRob3NlIG1hdGNoaW5nIHRoZSBsYWJlbFNlbGVjdG9yXG5yZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlKHMpKSB0aGF0IHRoaXMgcG9kIHNob3VsZCBiZVxuY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoLFxud2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlIHdob3NlIHZhbHVlIG9mXG50aGUgbGFiZWwgd2l0aCBrZXkgXHUwMDNjdG9wb2xvZ3lLZXlcdTAwM2UgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoXG5hIHBvZCBvZiB0aGUgc2V0IG9mIHBvZHMgaXMgcnVubmluZyIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifSwicG9kQW50aUFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIHBvZCBhbnRpLWFmZmluaXR5IHNjaGVkdWxpbmcgcnVsZXMgKGUuZy4gYXZvaWQgcHV0dGluZyB0aGlzIHBvZCBpbiB0aGUgc2FtZSBub2RlLCB6b25lLCBldGMuIGFzIHNvbWUgb3RoZXIgcG9kKHMpKS4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcnJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHNjaGVkdWxlciB3aWxsIHByZWZlciB0byBzY2hlZHVsZSBwb2RzIHRvIG5vZGVzIHRoYXQgc2F0aXNmeVxudGhlIGFudGktYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFudGktYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgc3VidHJhY3Rpbmdcblwid2VpZ2h0XCIgZnJvbSB0aGUgc3VtIGlmIHRoZSBub2RlIGhhcyBwb2RzIHdoaWNoIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtOyB0aGVcbm5vZGUocykgd2l0aCB0aGUgaGlnaGVzdCBzdW0gYXJlIHRoZSBtb3N0IHByZWZlcnJlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSB3ZWlnaHRzIG9mIGFsbCBvZiB0aGUgbWF0Y2hlZCBXZWlnaHRlZFBvZEFmZmluaXR5VGVybSBmaWVsZHMgYXJlIGFkZGVkIHBlci1ub2RlIHRvIGZpbmQgdGhlIG1vc3QgcHJlZmVycmVkIG5vZGUocykiLCJwcm9wZXJ0aWVzIjp7InBvZEFmZmluaXR5VGVybSI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIHBvZCBhZmZpbml0eSB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sIndlaWdodCI6eyJkZXNjcmlwdGlvbiI6IndlaWdodCBhc3NvY2lhdGVkIHdpdGggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtLFxuaW4gdGhlIHJhbmdlIDEtMTAwLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifX0sInJlcXVpcmVkIjpbInBvZEFmZmluaXR5VGVybSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhbnRpLWFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFudGktYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGNlYXNlIHRvIGJlIG1ldFxuYXQgc29tZSBwb2ludCBkdXJpbmcgcG9kIGV4ZWN1dGlvbiAoZS5nLiBkdWUgdG8gYSBwb2QgbGFiZWwgdXBkYXRlKSwgdGhlXG5zeXN0ZW0gbWF5IG9yIG1heSBub3QgdHJ5IHRvIGV2ZW50dWFsbHkgZXZpY3QgdGhlIHBvZCBmcm9tIGl0cyBub2RlLlxuV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMsIHRoZSBsaXN0cyBvZiBub2RlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2hcbnBvZEFmZmluaXR5VGVybSBhcmUgaW50ZXJzZWN0ZWQsIGkuZS4gYWxsIHRlcm1zIG11c3QgYmUgc2F0aXNmaWVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiRGVmaW5lcyBhIHNldCBvZiBwb2RzIChuYW1lbHkgdGhvc2UgbWF0Y2hpbmcgdGhlIGxhYmVsU2VsZWN0b3JcbnJlbGF0aXZlIHRvIHRoZSBnaXZlbiBuYW1lc3BhY2UocykpIHRoYXQgdGhpcyBwb2Qgc2hvdWxkIGJlXG5jby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGgsXG53aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGUgd2hvc2UgdmFsdWUgb2ZcbnRoZSBsYWJlbCB3aXRoIGtleSBcdTAwM2N0b3BvbG9neUtleVx1MDAzZSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2hcbmEgcG9kIG9mIHRoZSBzZXQgb2YgcG9kcyBpcyBydW5uaW5nIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJub2RlU2VsZWN0b3IiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6ImBub2RlU2VsZWN0b3JgIGFsbG93cyBzY2hlZHVsaW5nIG9mIHBvZHMgb25seSBvbnRvIG5vZGVzIHRoYXQgaGF2ZSBlYWNoIG9mIHRoZSBzcGVjaWZpZWQgbGFiZWxzLlxuRm9yIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vYXNzaWduLXBvZC1ub2RlLy4iLCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sInByaW9yaXR5Q2xhc3NOYW1lIjp7ImRlc2NyaXB0aW9uIjoiSWYgc3BlY2lmaWVkLCBpbmRpY2F0ZXMgdGhlIHBvZCdzIHByaW9yaXR5LiBGb3IgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc2NoZWR1bGluZy1ldmljdGlvbi9wb2QtcHJpb3JpdHktcHJlZW1wdGlvbi8jaG93LXRvLXVzZS1wcmlvcml0eS1hbmQtcHJlZW1wdGlvbi5cbklmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHQgcHJpb3JpdHkgaXMgdXNlZCwgb3IgemVybyBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LiIsInR5cGUiOiJzdHJpbmcifSwidG9sZXJhdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJgdG9sZXJhdGlvbnNgIGlzIGEgbGlzdCBvZiB0b2xlcmF0aW9ucyB0aGF0IGFsbG93IHRoZSBwb2QgdG8gc2NoZWR1bGUgb250byBub2RlcyB3aXRoIG1hdGNoaW5nIHRhaW50cy5cbkZvciBkb2N1bWVudGF0aW9uLCByZWZlciB0byBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9yZWZlcmVuY2Uva3ViZXJuZXRlcy1hcGkvd29ya2xvYWQtcmVzb3VyY2VzL3BvZC12MS8jc2NoZWR1bGluZy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSBwb2QgdGhpcyBUb2xlcmF0aW9uIGlzIGF0dGFjaGVkIHRvIHRvbGVyYXRlcyBhbnkgdGFpbnQgdGhhdCBtYXRjaGVzXG50aGUgdHJpcGxlIFx1MDAzY2tleSx2YWx1ZSxlZmZlY3RcdTAwM2UgdXNpbmcgdGhlIG1hdGNoaW5nIG9wZXJhdG9yIFx1MDAzY29wZXJhdG9yXHUwMDNlLiIsInByb3BlcnRpZXMiOnsiZWZmZWN0Ijp7ImRlc2NyaXB0aW9uIjoiRWZmZWN0IGluZGljYXRlcyB0aGUgdGFpbnQgZWZmZWN0IHRvIG1hdGNoLiBFbXB0eSBtZWFucyBtYXRjaCBhbGwgdGFpbnQgZWZmZWN0cy5cbldoZW4gc3BlY2lmaWVkLCBhbGxvd2VkIHZhbHVlcyBhcmUgTm9TY2hlZHVsZSwgUHJlZmVyTm9TY2hlZHVsZSBhbmQgTm9FeGVjdXRlLiIsInR5cGUiOiJzdHJpbmcifSwia2V5Ijp7ImRlc2NyaXB0aW9uIjoiS2V5IGlzIHRoZSB0YWludCBrZXkgdGhhdCB0aGUgdG9sZXJhdGlvbiBhcHBsaWVzIHRvLiBFbXB0eSBtZWFucyBtYXRjaCBhbGwgdGFpbnQga2V5cy5cbklmIHRoZSBrZXkgaXMgZW1wdHksIG9wZXJhdG9yIG11c3QgYmUgRXhpc3RzOyB0aGlzIGNvbWJpbmF0aW9uIG1lYW5zIHRvIG1hdGNoIGFsbCB2YWx1ZXMgYW5kIGFsbCBrZXlzLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJPcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIHRoZSB2YWx1ZS5cblZhbGlkIG9wZXJhdG9ycyBhcmUgRXhpc3RzIGFuZCBFcXVhbC4gRGVmYXVsdHMgdG8gRXF1YWwuXG5FeGlzdHMgaXMgZXF1aXZhbGVudCB0byB3aWxkY2FyZCBmb3IgdmFsdWUsIHNvIHRoYXQgYSBwb2QgY2FuXG50b2xlcmF0ZSBhbGwgdGFpbnRzIG9mIGEgcGFydGljdWxhciBjYXRlZ29yeS4iLCJ0eXBlIjoic3RyaW5nIn0sInRvbGVyYXRpb25TZWNvbmRzIjp7ImRlc2NyaXB0aW9uIjoiVG9sZXJhdGlvblNlY29uZHMgcmVwcmVzZW50cyB0aGUgcGVyaW9kIG9mIHRpbWUgdGhlIHRvbGVyYXRpb24gKHdoaWNoIG11c3QgYmVcbm9mIGVmZmVjdCBOb0V4ZWN1dGUsIG90aGVyd2lzZSB0aGlzIGZpZWxkIGlzIGlnbm9yZWQpIHRvbGVyYXRlcyB0aGUgdGFpbnQuIEJ5IGRlZmF1bHQsXG5pdCBpcyBub3Qgc2V0LCB3aGljaCBtZWFucyB0b2xlcmF0ZSB0aGUgdGFpbnQgZm9yZXZlciAoZG8gbm90IGV2aWN0KS4gWmVybyBhbmRcbm5lZ2F0aXZlIHZhbHVlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgMCAoZXZpY3QgaW1tZWRpYXRlbHkpIGJ5IHRoZSBzeXN0ZW0uIiwiZm9ybWF0IjoiaW50NjQiLCJ0eXBlIjoiaW50ZWdlciJ9LCJ2YWx1ZSI6eyJkZXNjcmlwdGlvbiI6IlZhbHVlIGlzIHRoZSB0YWludCB2YWx1ZSB0aGUgdG9sZXJhdGlvbiBtYXRjaGVzIHRvLlxuSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cywgdGhlIHZhbHVlIHNob3VsZCBiZSBlbXB0eSwgb3RoZXJ3aXNlIGp1c3QgYSByZWd1bGFyIHN0cmluZy4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJhdXRvc2NhbGVyIjp7ImRlc2NyaXB0aW9uIjoiYGF1dG9zY2FsZXJgIHNwZWMgb2YgYSBob3Jpem9udGFsIHBvZCBhdXRvc2NhbGVyIHRvIHNldCB1cCBmb3IgdGhlIHBsdWdpbiBEZXBsb3ltZW50LiIsInByb3BlcnRpZXMiOnsibWF4UmVwbGljYXMiOnsiZGVmYXVsdCI6MywiZGVzY3JpcHRpb24iOiJgbWF4UmVwbGljYXNgIGlzIHRoZSB1cHBlciBsaW1pdCBmb3IgdGhlIG51bWJlciBvZiBwb2RzIHRoYXQgY2FuIGJlIHNldCBieSB0aGUgYXV0b3NjYWxlcjsgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiBNaW5SZXBsaWNhcy4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sIm1ldHJpY3MiOnsiZGVzY3JpcHRpb24iOiJNZXRyaWNzIHVzZWQgYnkgdGhlIHBvZCBhdXRvc2NhbGVyLiBGb3IgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvcmVmZXJlbmNlL2t1YmVybmV0ZXMtYXBpL3dvcmtsb2FkLXJlc291cmNlcy9ob3Jpem9udGFsLXBvZC1hdXRvc2NhbGVyLXYyLyIsIml0ZW1zIjp7InByb3BlcnRpZXMiOnsiY29udGFpbmVyUmVzb3VyY2UiOnsicHJvcGVydGllcyI6eyJjb250YWluZXIiOnsidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7InR5cGUiOiJzdHJpbmcifSwidGFyZ2V0Ijp7InByb3BlcnRpZXMiOnsiYXZlcmFnZVV0aWxpemF0aW9uIjp7ImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwiYXZlcmFnZVZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifSwidmFsdWUiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImNvbnRhaW5lciIsIm5hbWUiLCJ0YXJnZXQiXSwidHlwZSI6Im9iamVjdCJ9LCJleHRlcm5hbCI6eyJwcm9wZXJ0aWVzIjp7Im1ldHJpYyI6eyJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsidHlwZSI6InN0cmluZyJ9LCJzZWxlY3RvciI6eyJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiaXRlbXMiOnsicHJvcGVydGllcyI6eyJrZXkiOnsidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0YXJnZXQiOnsicHJvcGVydGllcyI6eyJhdmVyYWdlVXRpbGl6YXRpb24iOnsiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9LCJhdmVyYWdlVmFsdWUiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsibWV0cmljIiwidGFyZ2V0Il0sInR5cGUiOiJvYmplY3QifSwib2JqZWN0Ijp7InByb3BlcnRpZXMiOnsiZGVzY3JpYmVkT2JqZWN0Ijp7InByb3BlcnRpZXMiOnsiYXBpVmVyc2lvbiI6eyJ0eXBlIjoic3RyaW5nIn0sImtpbmQiOnsidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7InR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImtpbmQiLCJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwibWV0cmljIjp7InByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInNlbGVjdG9yIjp7InByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJpdGVtcyI6eyJwcm9wZXJ0aWVzIjp7ImtleSI6eyJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7InR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7Iml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInRhcmdldCI6eyJwcm9wZXJ0aWVzIjp7ImF2ZXJhZ2VVdGlsaXphdGlvbiI6eyJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sImF2ZXJhZ2VWYWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sInZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJkZXNjcmliZWRPYmplY3QiLCJtZXRyaWMiLCJ0YXJnZXQiXSwidHlwZSI6Im9iamVjdCJ9LCJwb2RzIjp7InByb3BlcnRpZXMiOnsibWV0cmljIjp7InByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInNlbGVjdG9yIjp7InByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJpdGVtcyI6eyJwcm9wZXJ0aWVzIjp7ImtleSI6eyJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7InR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7Iml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInRhcmdldCI6eyJwcm9wZXJ0aWVzIjp7ImF2ZXJhZ2VVdGlsaXphdGlvbiI6eyJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sImF2ZXJhZ2VWYWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sInZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJtZXRyaWMiLCJ0YXJnZXQiXSwidHlwZSI6Im9iamVjdCJ9LCJyZXNvdXJjZSI6eyJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsidHlwZSI6InN0cmluZyJ9LCJ0YXJnZXQiOnsicHJvcGVydGllcyI6eyJhdmVyYWdlVXRpbGl6YXRpb24iOnsiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9LCJhdmVyYWdlVmFsdWUiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsibmFtZSIsInRhcmdldCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJtaW5SZXBsaWNhcyI6eyJkZXNjcmlwdGlvbiI6ImBtaW5SZXBsaWNhc2AgaXMgdGhlIGxvd2VyIGxpbWl0IGZvciB0aGUgbnVtYmVyIG9mIHJlcGxpY2FzIHRvIHdoaWNoIHRoZSBhdXRvc2NhbGVyXG5jYW4gc2NhbGUgZG93bi4gSXQgZGVmYXVsdHMgdG8gMSBwb2QuIG1pblJlcGxpY2FzIGlzIGFsbG93ZWQgdG8gYmUgMCBpZiB0aGVcbmFscGhhIGZlYXR1cmUgZ2F0ZSBIUEFTY2FsZVRvWmVybyBpcyBlbmFibGVkIGFuZCBhdCBsZWFzdCBvbmUgT2JqZWN0IG9yIEV4dGVybmFsXG5tZXRyaWMgaXMgY29uZmlndXJlZC4gU2NhbGluZyBpcyBhY3RpdmUgYXMgbG9uZyBhcyBhdCBsZWFzdCBvbmUgbWV0cmljIHZhbHVlIGlzXG5hdmFpbGFibGUuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9LCJzdGF0dXMiOnsiZGVmYXVsdCI6IkRpc2FibGVkIiwiZGVzY3JpcHRpb24iOiJgc3RhdHVzYCBkZXNjcmliZXMgdGhlIGRlc2lyZWQgc3RhdHVzIHJlZ2FyZGluZyBkZXBsb3lpbmcgYW4gaG9yaXpvbnRhbCBwb2QgYXV0b3NjYWxlci5cdTAwM2Niclx1MDAzZVxuLSBgRGlzYWJsZWRgIGRvZXMgbm90IGRlcGxveSBhbiBob3Jpem9udGFsIHBvZCBhdXRvc2NhbGVyLlx1MDAzY2JyXHUwMDNlXG4tIGBFbmFibGVkYCBkZXBsb3lzIGFuIGhvcml6b250YWwgcG9kIGF1dG9zY2FsZXIuXHUwMDNjYnJcdTAwM2UiLCJlbnVtIjpbIkRpc2FibGVkIiwiRW5hYmxlZCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sImVuYWJsZSI6eyJkZWZhdWx0Ijp0cnVlLCJkZXNjcmlwdGlvbiI6IkVuYWJsZXMgdGhlIGNvbnNvbGUgcGx1Z2luIGRlcGxveW1lbnQuIiwidHlwZSI6ImJvb2xlYW4ifSwiaW1hZ2VQdWxsUG9saWN5Ijp7ImRlZmF1bHQiOiJJZk5vdFByZXNlbnQiLCJkZXNjcmlwdGlvbiI6ImBpbWFnZVB1bGxQb2xpY3lgIGlzIHRoZSBLdWJlcm5ldGVzIHB1bGwgcG9saWN5IGZvciB0aGUgaW1hZ2UgZGVmaW5lZCBhYm92ZSIsImVudW0iOlsiSWZOb3RQcmVzZW50IiwiQWx3YXlzIiwiTmV2ZXIiXSwidHlwZSI6InN0cmluZyJ9LCJsb2dMZXZlbCI6eyJkZWZhdWx0IjoiaW5mbyIsImRlc2NyaXB0aW9uIjoiYGxvZ0xldmVsYCBmb3IgdGhlIGNvbnNvbGUgcGx1Z2luIGJhY2tlbmQiLCJlbnVtIjpbInRyYWNlIiwiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwiZmF0YWwiLCJwYW5pYyJdLCJ0eXBlIjoic3RyaW5nIn0sInBvcnROYW1pbmciOnsiZGVmYXVsdCI6eyJlbmFibGUiOnRydWV9LCJkZXNjcmlwdGlvbiI6ImBwb3J0TmFtaW5nYCBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBwb3J0LXRvLXNlcnZpY2UgbmFtZSB0cmFuc2xhdGlvbiIsInByb3BlcnRpZXMiOnsiZW5hYmxlIjp7ImRlZmF1bHQiOnRydWUsImRlc2NyaXB0aW9uIjoiRW5hYmxlIHRoZSBjb25zb2xlIHBsdWdpbiBwb3J0LXRvLXNlcnZpY2UgbmFtZSB0cmFuc2xhdGlvbiIsInR5cGUiOiJib29sZWFuIn0sInBvcnROYW1lcyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoiYHBvcnROYW1lc2AgZGVmaW5lcyBhZGRpdGlvbmFsIHBvcnQgbmFtZXMgdG8gdXNlIGluIHRoZSBjb25zb2xlLFxuZm9yIGV4YW1wbGUsIGBwb3J0TmFtZXM6IHtcIjMxMDBcIjogXCJsb2tpXCJ9YC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sInF1aWNrRmlsdGVycyI6eyJkZWZhdWx0IjpbeyJkZWZhdWx0Ijp0cnVlLCJmaWx0ZXIiOnsiZmxvd19sYXllciI6IlwiYXBwXCIifSwibmFtZSI6IkFwcGxpY2F0aW9ucyJ9LHsiZmlsdGVyIjp7ImZsb3dfbGF5ZXIiOiJcImluZnJhXCIifSwibmFtZSI6IkluZnJhc3RydWN0dXJlIn0seyJkZWZhdWx0Ijp0cnVlLCJmaWx0ZXIiOnsiZHN0X2tpbmQiOiJcIlBvZFwiIiwic3JjX2tpbmQiOiJcIlBvZFwiIn0sIm5hbWUiOiJQb2RzIG5ldHdvcmsifSx7ImZpbHRlciI6eyJkc3Rfa2luZCI6IlwiU2VydmljZVwiIn0sIm5hbWUiOiJTZXJ2aWNlcyBuZXR3b3JrIn1dLCJkZXNjcmlwdGlvbiI6ImBxdWlja0ZpbHRlcnNgIGNvbmZpZ3VyZXMgcXVpY2sgZmlsdGVyIHByZXNldHMgZm9yIHRoZSBDb25zb2xlIHBsdWdpbiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiYFF1aWNrRmlsdGVyYCBkZWZpbmVzIHByZXNldCBjb25maWd1cmF0aW9uIGZvciBDb25zb2xlJ3MgcXVpY2sgZmlsdGVycyIsInByb3BlcnRpZXMiOnsiZGVmYXVsdCI6eyJkZXNjcmlwdGlvbiI6ImBkZWZhdWx0YCBkZWZpbmVzIHdoZXRoZXIgdGhpcyBmaWx0ZXIgc2hvdWxkIGJlIGFjdGl2ZSBieSBkZWZhdWx0IG9yIG5vdCIsInR5cGUiOiJib29sZWFuIn0sImZpbHRlciI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoiYGZpbHRlcmAgaXMgYSBzZXQgb2Yga2V5cyBhbmQgdmFsdWVzIHRvIGJlIHNldCB3aGVuIHRoaXMgZmlsdGVyIGlzIHNlbGVjdGVkLiBFYWNoIGtleSBjYW4gcmVsYXRlIHRvIGEgbGlzdCBvZiB2YWx1ZXMgdXNpbmcgYSBjb21hLXNlcGFyYXRlZCBzdHJpbmcsXG5mb3IgZXhhbXBsZSwgYGZpbHRlcjoge1wic3JjX25hbWVzcGFjZVwiOiBcIm5hbWVzcGFjZTEsbmFtZXNwYWNlMlwifWAuIiwidHlwZSI6Im9iamVjdCJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgZmlsdGVyLCB0aGF0IGlzIGRpc3BsYXllZCBpbiB0aGUgQ29uc29sZSIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImZpbHRlciIsIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwicmVwbGljYXMiOnsiZGVmYXVsdCI6MSwiZGVzY3JpcHRpb24iOiJgcmVwbGljYXNgIGRlZmluZXMgdGhlIG51bWJlciBvZiByZXBsaWNhcyAocG9kcykgdG8gc3RhcnQuIiwiZm9ybWF0IjoiaW50MzIiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJyZXNvdXJjZXMiOnsiZGVmYXVsdCI6eyJsaW1pdHMiOnsibWVtb3J5IjoiMTAwTWkifSwicmVxdWVzdHMiOnsiY3B1IjoiMTAwbSIsIm1lbW9yeSI6IjUwTWkifX0sImRlc2NyaXB0aW9uIjoiYHJlc291cmNlc2AsIGluIHRlcm1zIG9mIGNvbXB1dGUgcmVzb3VyY2VzLCByZXF1aXJlZCBieSB0aGlzIGNvbnRhaW5lci5cbkZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9tYW5hZ2UtcmVzb3VyY2VzLWNvbnRhaW5lcnMvIiwicHJvcGVydGllcyI6eyJjbGFpbXMiOnsiZGVzY3JpcHRpb24iOiJDbGFpbXMgbGlzdHMgdGhlIG5hbWVzIG9mIHJlc291cmNlcywgZGVmaW5lZCBpbiBzcGVjLnJlc291cmNlQ2xhaW1zLFxudGhhdCBhcmUgdXNlZCBieSB0aGlzIGNvbnRhaW5lci5cblxuVGhpcyBmaWVsZCBkZXBlbmRzIG9uIHRoZVxuRHluYW1pY1Jlc291cmNlQWxsb2NhdGlvbiBmZWF0dXJlIGdhdGUuXG5cblRoaXMgZmllbGQgaXMgaW1tdXRhYmxlLiBJdCBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRhaW5lcnMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJSZXNvdXJjZUNsYWltIHJlZmVyZW5jZXMgb25lIGVudHJ5IGluIFBvZFNwZWMuUmVzb3VyY2VDbGFpbXMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBtdXN0IG1hdGNoIHRoZSBuYW1lIG9mIG9uZSBlbnRyeSBpbiBwb2Quc3BlYy5yZXNvdXJjZUNsYWltcyBvZlxudGhlIFBvZCB3aGVyZSB0aGlzIGZpZWxkIGlzIHVzZWQuIEl0IG1ha2VzIHRoYXQgcmVzb3VyY2UgYXZhaWxhYmxlXG5pbnNpZGUgYSBjb250YWluZXIuIiwidHlwZSI6InN0cmluZyJ9LCJyZXF1ZXN0Ijp7ImRlc2NyaXB0aW9uIjoiUmVxdWVzdCBpcyB0aGUgbmFtZSBjaG9zZW4gZm9yIGEgcmVxdWVzdCBpbiB0aGUgcmVmZXJlbmNlZCBjbGFpbS5cbklmIGVtcHR5LCBldmVyeXRoaW5nIGZyb20gdGhlIGNsYWltIGlzIG1hZGUgYXZhaWxhYmxlLCBvdGhlcndpc2Vcbm9ubHkgdGhlIHJlc3VsdCBvZiB0aGlzIHJlcXVlc3QuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LW1hcC1rZXlzIjpbIm5hbWUiXSwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6Im1hcCJ9LCJsaW1pdHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sImRlc2NyaXB0aW9uIjoiTGltaXRzIGRlc2NyaWJlcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgYWxsb3dlZC5cbk1vcmUgaW5mbzogaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvY29uZmlndXJhdGlvbi9tYW5hZ2UtcmVzb3VyY2VzLWNvbnRhaW5lcnMvIiwidHlwZSI6Im9iamVjdCJ9LCJyZXF1ZXN0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJSZXF1ZXN0cyBkZXNjcmliZXMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbXB1dGUgcmVzb3VyY2VzIHJlcXVpcmVkLlxuSWYgUmVxdWVzdHMgaXMgb21pdHRlZCBmb3IgYSBjb250YWluZXIsIGl0IGRlZmF1bHRzIHRvIExpbWl0cyBpZiB0aGF0IGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLFxub3RoZXJ3aXNlIHRvIGFuIGltcGxlbWVudGF0aW9uLWRlZmluZWQgdmFsdWUuIFJlcXVlc3RzIGNhbm5vdCBleGNlZWQgTGltaXRzLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sImRlcGxveW1lbnRNb2RlbCI6eyJkZWZhdWx0IjoiRGlyZWN0IiwiZGVzY3JpcHRpb24iOiJgZGVwbG95bWVudE1vZGVsYCBkZWZpbmVzIHRoZSBkZXNpcmVkIHR5cGUgb2YgZGVwbG95bWVudCBmb3IgZmxvdyBwcm9jZXNzaW5nLiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlx1MDAzY2JyXHUwMDNlXG4tIGBEaXJlY3RgIChkZWZhdWx0KSB0byBtYWtlIHRoZSBmbG93IHByb2Nlc3NvciBsaXN0ZW4gZGlyZWN0bHkgZnJvbSB0aGUgYWdlbnRzLlx1MDAzY2JyXHUwMDNlXG4tIGBLYWZrYWAgdG8gbWFrZSBmbG93cyBzZW50IHRvIGEgS2Fma2EgcGlwZWxpbmUgYmVmb3JlIGNvbnN1bXB0aW9uIGJ5IHRoZSBwcm9jZXNzb3IuXHUwMDNjYnJcdTAwM2VcbkthZmthIGNhbiBwcm92aWRlIGJldHRlciBzY2FsYWJpbGl0eSwgcmVzaWxpZW5jeSwgYW5kIGhpZ2ggYXZhaWxhYmlsaXR5IChmb3IgbW9yZSBkZXRhaWxzLCBzZWUgaHR0cHM6Ly93d3cucmVkaGF0LmNvbS9lbi90b3BpY3MvaW50ZWdyYXRpb24vd2hhdC1pcy1hcGFjaGUta2Fma2EpLiIsImVudW0iOlsiRGlyZWN0IiwiS2Fma2EiXSwidHlwZSI6InN0cmluZyJ9LCJleHBvcnRlcnMiOnsiZGVzY3JpcHRpb24iOiJgZXhwb3J0ZXJzYCBkZWZpbmVzIGFkZGl0aW9uYWwgb3B0aW9uYWwgZXhwb3J0ZXJzIGZvciBjdXN0b20gY29uc3VtcHRpb24gb3Igc3RvcmFnZS4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6ImBGbG93Q29sbGVjdG9yRXhwb3J0ZXJgIGRlZmluZXMgYW4gYWRkaXRpb25hbCBleHBvcnRlciB0byBzZW5kIGVucmljaGVkIGZsb3dzIHRvLiIsInByb3BlcnRpZXMiOnsiaXBmaXgiOnsiZGVzY3JpcHRpb24iOiJJUEZJWCBjb25maWd1cmF0aW9uLCBzdWNoIGFzIHRoZSBJUCBhZGRyZXNzIGFuZCBwb3J0IHRvIHNlbmQgZW5yaWNoZWQgSVBGSVggZmxvd3MgdG8uIiwicHJvcGVydGllcyI6eyJ0YXJnZXRIb3N0Ijp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6IkFkZHJlc3Mgb2YgdGhlIElQRklYIGV4dGVybmFsIHJlY2VpdmVyLiIsInR5cGUiOiJzdHJpbmcifSwidGFyZ2V0UG9ydCI6eyJkZWZhdWx0Ijo0NzM5LCJkZXNjcmlwdGlvbiI6IlBvcnQgZm9yIHRoZSBJUEZJWCBleHRlcm5hbCByZWNlaXZlci4iLCJ0eXBlIjoiaW50ZWdlciJ9LCJ0cmFuc3BvcnQiOnsiZGVzY3JpcHRpb24iOiJUcmFuc3BvcnQgcHJvdG9jb2wgKGBUQ1BgIG9yIGBVRFBgKSB0byBiZSB1c2VkIGZvciB0aGUgSVBGSVggY29ubmVjdGlvbiwgZGVmYXVsdHMgdG8gYFRDUGAuIiwiZW51bSI6WyJUQ1AiLCJVRFAiXSwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsidGFyZ2V0SG9zdCIsInRhcmdldFBvcnQiXSwidHlwZSI6Im9iamVjdCJ9LCJrYWZrYSI6eyJkZXNjcmlwdGlvbiI6IkthZmthIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgdGhlIGFkZHJlc3MgYW5kIHRvcGljLCB0byBzZW5kIGVucmljaGVkIGZsb3dzIHRvLiIsInByb3BlcnRpZXMiOnsiYWRkcmVzcyI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJBZGRyZXNzIG9mIHRoZSBLYWZrYSBzZXJ2ZXIiLCJ0eXBlIjoic3RyaW5nIn0sInNhc2wiOnsiZGVzY3JpcHRpb24iOiJTQVNMIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uIFtVbnN1cHBvcnRlZCAoKildLiIsInByb3BlcnRpZXMiOnsiY2xpZW50SURSZWZlcmVuY2UiOnsiZGVzY3JpcHRpb24iOiJSZWZlcmVuY2UgdG8gdGhlIHNlY3JldCBvciBjb25maWcgbWFwIGNvbnRhaW5pbmcgdGhlIGNsaWVudCBJRCIsInByb3BlcnRpZXMiOnsiZmlsZSI6eyJkZXNjcmlwdGlvbiI6IkZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgdGhlIGZpbGUuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIHRoZSBmaWxlLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBmaWxlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJjbGllbnRTZWNyZXRSZWZlcmVuY2UiOnsiZGVzY3JpcHRpb24iOiJSZWZlcmVuY2UgdG8gdGhlIHNlY3JldCBvciBjb25maWcgbWFwIGNvbnRhaW5pbmcgdGhlIGNsaWVudCBzZWNyZXQiLCJwcm9wZXJ0aWVzIjp7ImZpbGUiOnsiZGVzY3JpcHRpb24iOiJGaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIHRoZSBmaWxlLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyB0aGUgZmlsZS4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgZmlsZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZWZhdWx0IjoiRGlzYWJsZWQiLCJkZXNjcmlwdGlvbiI6IlR5cGUgb2YgU0FTTCBhdXRoZW50aWNhdGlvbiB0byB1c2UsIG9yIGBEaXNhYmxlZGAgaWYgU0FTTCBpcyBub3QgdXNlZCIsImVudW0iOlsiRGlzYWJsZWQiLCJQbGFpbiIsIlNjcmFtU0hBNTEyIl0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidGxzIjp7ImRlc2NyaXB0aW9uIjoiVExTIGNsaWVudCBjb25maWd1cmF0aW9uLiBXaGVuIHVzaW5nIFRMUywgdmVyaWZ5IHRoYXQgdGhlIGFkZHJlc3MgbWF0Y2hlcyB0aGUgS2Fma2EgcG9ydCB1c2VkIGZvciBUTFMsIGdlbmVyYWxseSA5MDkzLiIsInByb3BlcnRpZXMiOnsiY2FDZXJ0Ijp7ImRlc2NyaXB0aW9uIjoiYGNhQ2VydGAgZGVmaW5lcyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIENlcnRpZmljYXRlIEF1dGhvcml0eS4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sImVuYWJsZSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJFbmFibGUgVExTIiwidHlwZSI6ImJvb2xlYW4ifSwiaW5zZWN1cmVTa2lwVmVyaWZ5Ijp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6ImBpbnNlY3VyZVNraXBWZXJpZnlgIGFsbG93cyBza2lwcGluZyBjbGllbnQtc2lkZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS5cbklmIHNldCB0byBgdHJ1ZWAsIHRoZSBgY2FDZXJ0YCBmaWVsZCBpcyBpZ25vcmVkLiIsInR5cGUiOiJib29sZWFuIn0sInVzZXJDZXJ0Ijp7ImRlc2NyaXB0aW9uIjoiYHVzZXJDZXJ0YCBkZWZpbmVzIHRoZSB1c2VyIGNlcnRpZmljYXRlIHJlZmVyZW5jZSBhbmQgaXMgdXNlZCBmb3IgbVRMUy4gV2hlbiB5b3UgdXNlIG9uZS13YXkgVExTLCB5b3UgY2FuIGlnbm9yZSB0aGlzIHByb3BlcnR5LiIsInByb3BlcnRpZXMiOnsiY2VydEZpbGUiOnsiZGVzY3JpcHRpb24iOiJgY2VydEZpbGVgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwiY2VydEtleSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0S2V5YCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4gT21pdCB3aGVuIHRoZSBrZXkgaXMgbm90IG5lY2Vzc2FyeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwidG9waWMiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiS2Fma2EgdG9waWMgdG8gdXNlLiBJdCBtdXN0IGV4aXN0LiBOZXRPYnNlcnYgZG9lcyBub3QgY3JlYXRlIGl0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImFkZHJlc3MiLCJ0b3BpYyJdLCJ0eXBlIjoib2JqZWN0In0sIm9wZW5UZWxlbWV0cnkiOnsiZGVzY3JpcHRpb24iOiJPcGVuVGVsZW1ldHJ5IGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgdGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgdG8gc2VuZCBlbnJpY2hlZCBsb2dzIG9yIG1ldHJpY3MgdG8uIiwicHJvcGVydGllcyI6eyJmaWVsZHNNYXBwaW5nIjp7ImRlc2NyaXB0aW9uIjoiQ3VzdG9tIGZpZWxkcyBtYXBwaW5nIHRvIGFuIE9wZW5UZWxlbWV0cnkgY29uZm9ybWFudCBmb3JtYXQuXG5CeSBkZWZhdWx0LCBOZXRPYnNlcnYgZm9ybWF0IHByb3Bvc2FsIGlzIHVzZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9yaG9icy9vYnNlcnZhYmlsaXR5LWRhdGEtbW9kZWwvYmxvYi9tYWluL25ldHdvcmstb2JzZXJ2YWJpbGl0eS5tZCNmb3JtYXQtcHJvcG9zYWwgLlxuQXMgdGhlcmUgaXMgY3VycmVudGx5IG5vIGFjY2VwdGVkIHN0YW5kYXJkIGZvciBMMyBvciBMNCBlbnJpY2hlZCBuZXR3b3JrIGxvZ3MsIHlvdSBjYW4gZnJlZWx5IG92ZXJyaWRlIGl0IHdpdGggeW91ciBvd24uIiwiaXRlbXMiOnsicHJvcGVydGllcyI6eyJpbnB1dCI6eyJ0eXBlIjoic3RyaW5nIn0sIm11bHRpcGxpZXIiOnsidHlwZSI6ImludGVnZXIifSwib3V0cHV0Ijp7InR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sImhlYWRlcnMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6IkhlYWRlcnMgdG8gYWRkIHRvIG1lc3NhZ2VzIChvcHRpb25hbCkiLCJ0eXBlIjoib2JqZWN0In0sImxvZ3MiOnsiZGVzY3JpcHRpb24iOiJPcGVuVGVsZW1ldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGxvZ3MuIiwicHJvcGVydGllcyI6eyJlbmFibGUiOnsiZGVmYXVsdCI6dHJ1ZSwiZGVzY3JpcHRpb24iOiJTZXQgYGVuYWJsZWAgdG8gYHRydWVgIHRvIHNlbmQgbG9ncyB0byBhbiBPcGVuVGVsZW1ldHJ5IHJlY2VpdmVyLiIsInR5cGUiOiJib29sZWFuIn19LCJ0eXBlIjoib2JqZWN0In0sIm1ldHJpY3MiOnsiZGVzY3JpcHRpb24iOiJPcGVuVGVsZW1ldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIG1ldHJpY3MuIiwicHJvcGVydGllcyI6eyJlbmFibGUiOnsiZGVmYXVsdCI6dHJ1ZSwiZGVzY3JpcHRpb24iOiJTZXQgYGVuYWJsZWAgdG8gYHRydWVgIHRvIHNlbmQgbWV0cmljcyB0byBhbiBPcGVuVGVsZW1ldHJ5IHJlY2VpdmVyLiIsInR5cGUiOiJib29sZWFuIn0sInB1c2hUaW1lSW50ZXJ2YWwiOnsiZGVmYXVsdCI6IjIwcyIsImRlc2NyaXB0aW9uIjoiU3BlY2lmeSBob3cgb2Z0ZW4gbWV0cmljcyBhcmUgc2VudCB0byBhIGNvbGxlY3Rvci4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInByb3RvY29sIjp7ImRlc2NyaXB0aW9uIjoiUHJvdG9jb2wgb2YgdGhlIE9wZW5UZWxlbWV0cnkgY29ubmVjdGlvbi4gVGhlIGF2YWlsYWJsZSBvcHRpb25zIGFyZSBgaHR0cGAgYW5kIGBncnBjYC4iLCJlbnVtIjpbImh0dHAiLCJncnBjIl0sInR5cGUiOiJzdHJpbmcifSwidGFyZ2V0SG9zdCI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJBZGRyZXNzIG9mIHRoZSBPcGVuVGVsZW1ldHJ5IHJlY2VpdmVyLiIsInR5cGUiOiJzdHJpbmcifSwidGFyZ2V0UG9ydCI6eyJkZWZhdWx0Ijo0MzE3LCJkZXNjcmlwdGlvbiI6IlBvcnQgZm9yIHRoZSBPcGVuVGVsZW1ldHJ5IHJlY2VpdmVyLiIsInR5cGUiOiJpbnRlZ2VyIn0sInRscyI6eyJkZXNjcmlwdGlvbiI6IlRMUyBjbGllbnQgY29uZmlndXJhdGlvbi4iLCJwcm9wZXJ0aWVzIjp7ImNhQ2VydCI6eyJkZXNjcmlwdGlvbiI6ImBjYUNlcnRgIGRlZmluZXMgdGhlIHJlZmVyZW5jZSBvZiB0aGUgY2VydGlmaWNhdGUgZm9yIHRoZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkuIiwicHJvcGVydGllcyI6eyJjZXJ0RmlsZSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0RmlsZWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9LCJjZXJ0S2V5Ijp7ImRlc2NyaXB0aW9uIjoiYGNlcnRLZXlgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIHByaXZhdGUga2V5IGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiBPbWl0IHdoZW4gdGhlIGtleSBpcyBub3QgbmVjZXNzYXJ5LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgd2hlcmUgTmV0T2JzZXJ2IGlzIGRlcGxveWVkLlxuSWYgdGhlIG5hbWVzcGFjZSBpcyBkaWZmZXJlbnQsIHRoZSBjb25maWcgbWFwIG9yIHRoZSBzZWNyZXQgaXMgY29waWVkIHNvIHRoYXQgaXQgY2FuIGJlIG1vdW50ZWQgYXMgcmVxdWlyZWQuIiwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBmb3IgdGhlIGNlcnRpZmljYXRlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJlbmFibGUiOnsiZGVmYXVsdCI6ZmFsc2UsImRlc2NyaXB0aW9uIjoiRW5hYmxlIFRMUyIsInR5cGUiOiJib29sZWFuIn0sImluc2VjdXJlU2tpcFZlcmlmeSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJgaW5zZWN1cmVTa2lwVmVyaWZ5YCBhbGxvd3Mgc2tpcHBpbmcgY2xpZW50LXNpZGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUuXG5JZiBzZXQgdG8gYHRydWVgLCB0aGUgYGNhQ2VydGAgZmllbGQgaXMgaWdub3JlZC4iLCJ0eXBlIjoiYm9vbGVhbiJ9LCJ1c2VyQ2VydCI6eyJkZXNjcmlwdGlvbiI6ImB1c2VyQ2VydGAgZGVmaW5lcyB0aGUgdXNlciBjZXJ0aWZpY2F0ZSByZWZlcmVuY2UgYW5kIGlzIHVzZWQgZm9yIG1UTFMuIFdoZW4geW91IHVzZSBvbmUtd2F5IFRMUywgeW91IGNhbiBpZ25vcmUgdGhpcyBwcm9wZXJ0eS4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJ0YXJnZXRIb3N0IiwidGFyZ2V0UG9ydCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJgdHlwZWAgc2VsZWN0cyB0aGUgdHlwZSBvZiBleHBvcnRlcnMuIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmUgYEthZmthYCwgYElQRklYYCwgYW5kIGBPcGVuVGVsZW1ldHJ5YC4iLCJlbnVtIjpbIkthZmthIiwiSVBGSVgiLCJPcGVuVGVsZW1ldHJ5Il0sInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwia2Fma2EiOnsiZGVzY3JpcHRpb24iOiJLYWZrYSBjb25maWd1cmF0aW9uLCBhbGxvd2luZyB0byB1c2UgS2Fma2EgYXMgYSBicm9rZXIgYXMgcGFydCBvZiB0aGUgZmxvdyBjb2xsZWN0aW9uIHBpcGVsaW5lLiBBdmFpbGFibGUgd2hlbiB0aGUgYHNwZWMuZGVwbG95bWVudE1vZGVsYCBpcyBgS2Fma2FgLiIsInByb3BlcnRpZXMiOnsiYWRkcmVzcyI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJBZGRyZXNzIG9mIHRoZSBLYWZrYSBzZXJ2ZXIiLCJ0eXBlIjoic3RyaW5nIn0sInNhc2wiOnsiZGVzY3JpcHRpb24iOiJTQVNMIGF1dGhlbnRpY2F0aW9uIGNvbmZpZ3VyYXRpb24uIFtVbnN1cHBvcnRlZCAoKildLiIsInByb3BlcnRpZXMiOnsiY2xpZW50SURSZWZlcmVuY2UiOnsiZGVzY3JpcHRpb24iOiJSZWZlcmVuY2UgdG8gdGhlIHNlY3JldCBvciBjb25maWcgbWFwIGNvbnRhaW5pbmcgdGhlIGNsaWVudCBJRCIsInByb3BlcnRpZXMiOnsiZmlsZSI6eyJkZXNjcmlwdGlvbiI6IkZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgdGhlIGZpbGUuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIHRoZSBmaWxlLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBmaWxlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJjbGllbnRTZWNyZXRSZWZlcmVuY2UiOnsiZGVzY3JpcHRpb24iOiJSZWZlcmVuY2UgdG8gdGhlIHNlY3JldCBvciBjb25maWcgbWFwIGNvbnRhaW5pbmcgdGhlIGNsaWVudCBzZWNyZXQiLCJwcm9wZXJ0aWVzIjp7ImZpbGUiOnsiZGVzY3JpcHRpb24iOiJGaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIHRoZSBmaWxlLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyB0aGUgZmlsZS4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgZmlsZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJkZWZhdWx0IjoiRGlzYWJsZWQiLCJkZXNjcmlwdGlvbiI6IlR5cGUgb2YgU0FTTCBhdXRoZW50aWNhdGlvbiB0byB1c2UsIG9yIGBEaXNhYmxlZGAgaWYgU0FTTCBpcyBub3QgdXNlZCIsImVudW0iOlsiRGlzYWJsZWQiLCJQbGFpbiIsIlNjcmFtU0hBNTEyIl0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwidGxzIjp7ImRlc2NyaXB0aW9uIjoiVExTIGNsaWVudCBjb25maWd1cmF0aW9uLiBXaGVuIHVzaW5nIFRMUywgdmVyaWZ5IHRoYXQgdGhlIGFkZHJlc3MgbWF0Y2hlcyB0aGUgS2Fma2EgcG9ydCB1c2VkIGZvciBUTFMsIGdlbmVyYWxseSA5MDkzLiIsInByb3BlcnRpZXMiOnsiY2FDZXJ0Ijp7ImRlc2NyaXB0aW9uIjoiYGNhQ2VydGAgZGVmaW5lcyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIENlcnRpZmljYXRlIEF1dGhvcml0eS4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sImVuYWJsZSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJFbmFibGUgVExTIiwidHlwZSI6ImJvb2xlYW4ifSwiaW5zZWN1cmVTa2lwVmVyaWZ5Ijp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6ImBpbnNlY3VyZVNraXBWZXJpZnlgIGFsbG93cyBza2lwcGluZyBjbGllbnQtc2lkZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS5cbklmIHNldCB0byBgdHJ1ZWAsIHRoZSBgY2FDZXJ0YCBmaWVsZCBpcyBpZ25vcmVkLiIsInR5cGUiOiJib29sZWFuIn0sInVzZXJDZXJ0Ijp7ImRlc2NyaXB0aW9uIjoiYHVzZXJDZXJ0YCBkZWZpbmVzIHRoZSB1c2VyIGNlcnRpZmljYXRlIHJlZmVyZW5jZSBhbmQgaXMgdXNlZCBmb3IgbVRMUy4gV2hlbiB5b3UgdXNlIG9uZS13YXkgVExTLCB5b3UgY2FuIGlnbm9yZSB0aGlzIHByb3BlcnR5LiIsInByb3BlcnRpZXMiOnsiY2VydEZpbGUiOnsiZGVzY3JpcHRpb24iOiJgY2VydEZpbGVgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwiY2VydEtleSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0S2V5YCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4gT21pdCB3aGVuIHRoZSBrZXkgaXMgbm90IG5lY2Vzc2FyeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwidG9waWMiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiS2Fma2EgdG9waWMgdG8gdXNlLiBJdCBtdXN0IGV4aXN0LiBOZXRPYnNlcnYgZG9lcyBub3QgY3JlYXRlIGl0LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImFkZHJlc3MiLCJ0b3BpYyJdLCJ0eXBlIjoib2JqZWN0In0sImxva2kiOnsiZGVzY3JpcHRpb24iOiJgbG9raWAsIHRoZSBmbG93IHN0b3JlLCBjbGllbnQgc2V0dGluZ3MuIiwicHJvcGVydGllcyI6eyJhZHZhbmNlZCI6eyJkZXNjcmlwdGlvbiI6ImBhZHZhbmNlZGAgYWxsb3dzIHNldHRpbmcgc29tZSBhc3BlY3RzIG9mIHRoZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBMb2tpIGNsaWVudHMuXG5UaGlzIHNlY3Rpb24gaXMgYWltZWQgbW9zdGx5IGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtZ3JhaW5lZCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLiIsInByb3BlcnRpZXMiOnsiZXhjbHVkZUxhYmVscyI6eyJkZXNjcmlwdGlvbiI6ImBleGNsdWRlTGFiZWxzYCBpcyBhIGxpc3Qgb2YgZmllbGQgdG8gYmUgZXhjbHVkZWQgZnJvbSB0aGUgbGlzdCBvZiBMb2tpIGxhYmVscy4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJzdGF0aWNMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZWZhdWx0Ijp7ImFwcCI6Im5ldG9ic2Vydi1mbG93Y29sbGVjdG9yIn0sImRlc2NyaXB0aW9uIjoiYHN0YXRpY0xhYmVsc2AgaXMgYSBtYXAgb2YgY29tbW9uIGxhYmVscyB0byBzZXQgb24gZWFjaCBmbG93IGluIExva2kgc3RvcmFnZS4iLCJ0eXBlIjoib2JqZWN0In0sIndyaXRlTWF4QmFja29mZiI6eyJkZWZhdWx0IjoiNXMiLCJkZXNjcmlwdGlvbiI6ImB3cml0ZU1heEJhY2tvZmZgIGlzIHRoZSBtYXhpbXVtIGJhY2tvZmYgdGltZSBmb3IgTG9raSBjbGllbnQgY29ubmVjdGlvbiBiZXR3ZWVuIHJldHJpZXMuIiwidHlwZSI6InN0cmluZyJ9LCJ3cml0ZU1heFJldHJpZXMiOnsiZGVmYXVsdCI6MiwiZGVzY3JpcHRpb24iOiJgd3JpdGVNYXhSZXRyaWVzYCBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBmb3IgTG9raSBjbGllbnQgY29ubmVjdGlvbnMuIiwiZm9ybWF0IjoiaW50MzIiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJ3cml0ZU1pbkJhY2tvZmYiOnsiZGVmYXVsdCI6IjFzIiwiZGVzY3JpcHRpb24iOiJgd3JpdGVNaW5CYWNrb2ZmYCBpcyB0aGUgaW5pdGlhbCBiYWNrb2ZmIHRpbWUgZm9yIExva2kgY2xpZW50IGNvbm5lY3Rpb24gYmV0d2VlbiByZXRyaWVzLiIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwiZW5hYmxlIjp7ImRlZmF1bHQiOnRydWUsImRlc2NyaXB0aW9uIjoiU2V0IGBlbmFibGVgIHRvIGB0cnVlYCB0byBzdG9yZSBmbG93cyBpbiBMb2tpLlxuVGhlIENvbnNvbGUgcGx1Z2luIGNhbiB1c2UgZWl0aGVyIExva2kgb3IgUHJvbWV0aGV1cyBhcyBhIGRhdGEgc291cmNlIGZvciBtZXRyaWNzIChzZWUgYWxzbyBgc3BlYy5wcm9tZXRoZXVzLnF1ZXJpZXJgKSwgb3IgYm90aC5cbk5vdCBhbGwgcXVlcmllcyBhcmUgdHJhbnNwb3NhYmxlIGZyb20gTG9raSB0byBQcm9tZXRoZXVzLiBIZW5jZSwgaWYgTG9raSBpcyBkaXNhYmxlZCwgc29tZSBmZWF0dXJlcyBvZiB0aGUgcGx1Z2luIGFyZSBkaXNhYmxlZCBhcyB3ZWxsLFxuc3VjaCBhcyBnZXR0aW5nIHBlci1wb2QgaW5mb3JtYXRpb24gb3Igdmlld2luZyByYXcgZmxvd3MuXG5JZiBib3RoIFByb21ldGhldXMgYW5kIExva2kgYXJlIGVuYWJsZWQsIFByb21ldGhldXMgdGFrZXMgcHJlY2VkZW5jZSBhbmQgTG9raSBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHF1ZXJpZXMgdGhhdCBQcm9tZXRoZXVzIGNhbm5vdCBoYW5kbGUuXG5JZiB0aGV5IGFyZSBib3RoIGRpc2FibGVkLCB0aGUgQ29uc29sZSBwbHVnaW4gaXMgbm90IGRlcGxveWVkLiIsInR5cGUiOiJib29sZWFuIn0sImxva2lTdGFjayI6eyJkZXNjcmlwdGlvbiI6Ikxva2kgY29uZmlndXJhdGlvbiBmb3IgYExva2lTdGFja2AgbW9kZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGFuIGVhc3kgTG9raSBPcGVyYXRvciBjb25maWd1cmF0aW9uLlxuSXQgaXMgaWdub3JlZCBmb3Igb3RoZXIgbW9kZXMuIiwicHJvcGVydGllcyI6eyJuYW1lIjp7ImRlZmF1bHQiOiJsb2tpIiwiZGVzY3JpcHRpb24iOiJOYW1lIG9mIGFuIGV4aXN0aW5nIExva2lTdGFjayByZXNvdXJjZSB0byB1c2UuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugd2hlcmUgdGhpcyBgTG9raVN0YWNrYCByZXNvdXJjZSBpcyBsb2NhdGVkLiBJZiBvbWl0dGVkLCBpdCBpcyBhc3N1bWVkIHRvIGJlIHRoZSBzYW1lIGFzIGBzcGVjLm5hbWVzcGFjZWAuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sIm1hbnVhbCI6eyJkZXNjcmlwdGlvbiI6Ikxva2kgY29uZmlndXJhdGlvbiBmb3IgYE1hbnVhbGAgbW9kZS4gVGhpcyBpcyB0aGUgbW9zdCBmbGV4aWJsZSBjb25maWd1cmF0aW9uLlxuSXQgaXMgaWdub3JlZCBmb3Igb3RoZXIgbW9kZXMuIiwicHJvcGVydGllcyI6eyJhdXRoVG9rZW4iOnsiZGVmYXVsdCI6IkRpc2FibGVkIiwiZGVzY3JpcHRpb24iOiJgYXV0aFRva2VuYCBkZXNjcmliZXMgdGhlIHdheSB0byBnZXQgYSB0b2tlbiB0byBhdXRoZW50aWNhdGUgdG8gTG9raS5cdTAwM2Niclx1MDAzZVxuLSBgRGlzYWJsZWRgIGRvZXMgbm90IHNlbmQgYW55IHRva2VuIHdpdGggdGhlIHJlcXVlc3QuXHUwMDNjYnJcdTAwM2Vcbi0gYEZvcndhcmRgIGZvcndhcmRzIHRoZSB1c2VyIHRva2VuIGZvciBhdXRob3JpemF0aW9uLlx1MDAzY2JyXHUwMDNlXG4tIGBIb3N0YCBbZGVwcmVjYXRlZCAoKildIC0gdXNlcyB0aGUgbG9jYWwgcG9kIHNlcnZpY2UgYWNjb3VudCB0byBhdXRoZW50aWNhdGUgdG8gTG9raS5cdTAwM2Niclx1MDAzZVxuV2hlbiB1c2luZyB0aGUgTG9raSBPcGVyYXRvciwgdGhpcyBtdXN0IGJlIHNldCB0byBgRm9yd2FyZGAuIiwiZW51bSI6WyJEaXNhYmxlZCIsIkhvc3QiLCJGb3J3YXJkIl0sInR5cGUiOiJzdHJpbmcifSwiaW5nZXN0ZXJVcmwiOnsiZGVmYXVsdCI6Imh0dHA6Ly9sb2tpOjMxMDAvIiwiZGVzY3JpcHRpb24iOiJgaW5nZXN0ZXJVcmxgIGlzIHRoZSBhZGRyZXNzIG9mIGFuIGV4aXN0aW5nIExva2kgaW5nZXN0ZXIgc2VydmljZSB0byBwdXNoIHRoZSBmbG93cyB0by4gV2hlbiB1c2luZyB0aGUgTG9raSBPcGVyYXRvcixcbnNldCBpdCB0byB0aGUgTG9raSBnYXRld2F5IHNlcnZpY2Ugd2l0aCB0aGUgYG5ldHdvcmtgIHRlbmFudCBzZXQgaW4gcGF0aCwgZm9yIGV4YW1wbGVcbmh0dHBzOi8vbG9raS1nYXRld2F5LWh0dHAubmV0b2JzZXJ2LnN2Yzo4MDgwL2FwaS9sb2dzL3YxL25ldHdvcmsuIiwidHlwZSI6InN0cmluZyJ9LCJxdWVyaWVyVXJsIjp7ImRlZmF1bHQiOiJodHRwOi8vbG9raTozMTAwLyIsImRlc2NyaXB0aW9uIjoiYHF1ZXJpZXJVcmxgIHNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZiB0aGUgTG9raSBxdWVyaWVyIHNlcnZpY2UuXG5XaGVuIHVzaW5nIHRoZSBMb2tpIE9wZXJhdG9yLCBzZXQgaXQgdG8gdGhlIExva2kgZ2F0ZXdheSBzZXJ2aWNlIHdpdGggdGhlIGBuZXR3b3JrYCB0ZW5hbnQgc2V0IGluIHBhdGgsIGZvciBleGFtcGxlXG5odHRwczovL2xva2ktZ2F0ZXdheS1odHRwLm5ldG9ic2Vydi5zdmM6ODA4MC9hcGkvbG9ncy92MS9uZXR3b3JrLiIsInR5cGUiOiJzdHJpbmcifSwic3RhdHVzVGxzIjp7ImRlc2NyaXB0aW9uIjoiVExTIGNsaWVudCBjb25maWd1cmF0aW9uIGZvciBMb2tpIHN0YXR1cyBVUkwuIiwicHJvcGVydGllcyI6eyJjYUNlcnQiOnsiZGVzY3JpcHRpb24iOiJgY2FDZXJ0YCBkZWZpbmVzIHRoZSByZWZlcmVuY2Ugb2YgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LiIsInByb3BlcnRpZXMiOnsiY2VydEZpbGUiOnsiZGVzY3JpcHRpb24iOiJgY2VydEZpbGVgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwiY2VydEtleSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0S2V5YCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4gT21pdCB3aGVuIHRoZSBrZXkgaXMgbm90IG5lY2Vzc2FyeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwiZW5hYmxlIjp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6IkVuYWJsZSBUTFMiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJpbnNlY3VyZVNraXBWZXJpZnkiOnsiZGVmYXVsdCI6ZmFsc2UsImRlc2NyaXB0aW9uIjoiYGluc2VjdXJlU2tpcFZlcmlmeWAgYWxsb3dzIHNraXBwaW5nIGNsaWVudC1zaWRlIHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlLlxuSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGBjYUNlcnRgIGZpZWxkIGlzIGlnbm9yZWQuIiwidHlwZSI6ImJvb2xlYW4ifSwidXNlckNlcnQiOnsiZGVzY3JpcHRpb24iOiJgdXNlckNlcnRgIGRlZmluZXMgdGhlIHVzZXIgY2VydGlmaWNhdGUgcmVmZXJlbmNlIGFuZCBpcyB1c2VkIGZvciBtVExTLiBXaGVuIHlvdSB1c2Ugb25lLXdheSBUTFMsIHlvdSBjYW4gaWdub3JlIHRoaXMgcHJvcGVydHkuIiwicHJvcGVydGllcyI6eyJjZXJ0RmlsZSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0RmlsZWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9LCJjZXJ0S2V5Ijp7ImRlc2NyaXB0aW9uIjoiYGNlcnRLZXlgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIHByaXZhdGUga2V5IGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiBPbWl0IHdoZW4gdGhlIGtleSBpcyBub3QgbmVjZXNzYXJ5LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgd2hlcmUgTmV0T2JzZXJ2IGlzIGRlcGxveWVkLlxuSWYgdGhlIG5hbWVzcGFjZSBpcyBkaWZmZXJlbnQsIHRoZSBjb25maWcgbWFwIG9yIHRoZSBzZWNyZXQgaXMgY29waWVkIHNvIHRoYXQgaXQgY2FuIGJlIG1vdW50ZWQgYXMgcmVxdWlyZWQuIiwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBmb3IgdGhlIGNlcnRpZmljYXRlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJzdGF0dXNVcmwiOnsiZGVzY3JpcHRpb24iOiJgc3RhdHVzVXJsYCBzcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdGhlIExva2kgYC9yZWFkeWAsIGAvbWV0cmljc2AgYW5kIGAvY29uZmlnYCBlbmRwb2ludHMsIGluIGNhc2UgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlXG5Mb2tpIHF1ZXJpZXIgVVJMLiBJZiBlbXB0eSwgdGhlIGBxdWVyaWVyVXJsYCB2YWx1ZSBpcyB1c2VkLlxuVGhpcyBpcyB1c2VmdWwgdG8gc2hvdyBlcnJvciBtZXNzYWdlcyBhbmQgc29tZSBjb250ZXh0IGluIHRoZSBmcm9udGVuZC5cbldoZW4gdXNpbmcgdGhlIExva2kgT3BlcmF0b3IsIHNldCBpdCB0byB0aGUgTG9raSBIVFRQIHF1ZXJ5IGZyb250ZW5kIHNlcnZpY2UsIGZvciBleGFtcGxlXG5odHRwczovL2xva2ktcXVlcnktZnJvbnRlbmQtaHR0cC5uZXRvYnNlcnYuc3ZjOjMxMDAvLlxuYHN0YXR1c1RMU2AgY29uZmlndXJhdGlvbiBpcyB1c2VkIHdoZW4gYHN0YXR1c1VybGAgaXMgc2V0LiIsInR5cGUiOiJzdHJpbmcifSwidGVuYW50SUQiOnsiZGVmYXVsdCI6Im5ldG9ic2VydiIsImRlc2NyaXB0aW9uIjoiYHRlbmFudElEYCBpcyB0aGUgTG9raSBgWC1TY29wZS1PcmdJRGAgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZW5hbnQgZm9yIGVhY2ggcmVxdWVzdC5cbldoZW4gdXNpbmcgdGhlIExva2kgT3BlcmF0b3IsIHNldCBpdCB0byBgbmV0d29ya2AsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgc3BlY2lhbCB0ZW5hbnQgbW9kZS4iLCJ0eXBlIjoic3RyaW5nIn0sInRscyI6eyJkZXNjcmlwdGlvbiI6IlRMUyBjbGllbnQgY29uZmlndXJhdGlvbiBmb3IgTG9raSBVUkwuIiwicHJvcGVydGllcyI6eyJjYUNlcnQiOnsiZGVzY3JpcHRpb24iOiJgY2FDZXJ0YCBkZWZpbmVzIHRoZSByZWZlcmVuY2Ugb2YgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LiIsInByb3BlcnRpZXMiOnsiY2VydEZpbGUiOnsiZGVzY3JpcHRpb24iOiJgY2VydEZpbGVgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwiY2VydEtleSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0S2V5YCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4gT21pdCB3aGVuIHRoZSBrZXkgaXMgbm90IG5lY2Vzc2FyeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwiZW5hYmxlIjp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6IkVuYWJsZSBUTFMiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJpbnNlY3VyZVNraXBWZXJpZnkiOnsiZGVmYXVsdCI6ZmFsc2UsImRlc2NyaXB0aW9uIjoiYGluc2VjdXJlU2tpcFZlcmlmeWAgYWxsb3dzIHNraXBwaW5nIGNsaWVudC1zaWRlIHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlLlxuSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGBjYUNlcnRgIGZpZWxkIGlzIGlnbm9yZWQuIiwidHlwZSI6ImJvb2xlYW4ifSwidXNlckNlcnQiOnsiZGVzY3JpcHRpb24iOiJgdXNlckNlcnRgIGRlZmluZXMgdGhlIHVzZXIgY2VydGlmaWNhdGUgcmVmZXJlbmNlIGFuZCBpcyB1c2VkIGZvciBtVExTLiBXaGVuIHlvdSB1c2Ugb25lLXdheSBUTFMsIHlvdSBjYW4gaWdub3JlIHRoaXMgcHJvcGVydHkuIiwicHJvcGVydGllcyI6eyJjZXJ0RmlsZSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0RmlsZWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9LCJjZXJ0S2V5Ijp7ImRlc2NyaXB0aW9uIjoiYGNlcnRLZXlgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIHByaXZhdGUga2V5IGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiBPbWl0IHdoZW4gdGhlIGtleSBpcyBub3QgbmVjZXNzYXJ5LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgd2hlcmUgTmV0T2JzZXJ2IGlzIGRlcGxveWVkLlxuSWYgdGhlIG5hbWVzcGFjZSBpcyBkaWZmZXJlbnQsIHRoZSBjb25maWcgbWFwIG9yIHRoZSBzZWNyZXQgaXMgY29waWVkIHNvIHRoYXQgaXQgY2FuIGJlIG1vdW50ZWQgYXMgcmVxdWlyZWQuIiwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBmb3IgdGhlIGNlcnRpZmljYXRlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJtaWNyb3NlcnZpY2VzIjp7ImRlc2NyaXB0aW9uIjoiTG9raSBjb25maWd1cmF0aW9uIGZvciBgTWljcm9zZXJ2aWNlc2AgbW9kZS5cblVzZSB0aGlzIG9wdGlvbiB3aGVuIExva2kgaXMgaW5zdGFsbGVkIHVzaW5nIHRoZSBtaWNyb3NlcnZpY2VzIGRlcGxveW1lbnQgbW9kZSAoaHR0cHM6Ly9ncmFmYW5hLmNvbS9kb2NzL2xva2kvbGF0ZXN0L2Z1bmRhbWVudGFscy9hcmNoaXRlY3R1cmUvZGVwbG95bWVudC1tb2Rlcy8jbWljcm9zZXJ2aWNlcy1tb2RlKS5cbkl0IGlzIGlnbm9yZWQgZm9yIG90aGVyIG1vZGVzLiIsInByb3BlcnRpZXMiOnsiaW5nZXN0ZXJVcmwiOnsiZGVmYXVsdCI6Imh0dHA6Ly9sb2tpLWRpc3RyaWJ1dG9yOjMxMDAvIiwiZGVzY3JpcHRpb24iOiJgaW5nZXN0ZXJVcmxgIGlzIHRoZSBhZGRyZXNzIG9mIGFuIGV4aXN0aW5nIExva2kgaW5nZXN0ZXIgc2VydmljZSB0byBwdXNoIHRoZSBmbG93cyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sInF1ZXJpZXJVcmwiOnsiZGVmYXVsdCI6Imh0dHA6Ly9sb2tpLXF1ZXJ5LWZyb250ZW5kOjMxMDAvIiwiZGVzY3JpcHRpb24iOiJgcXVlcmllclVSTGAgc3BlY2lmaWVzIHRoZSBhZGRyZXNzIG9mIHRoZSBMb2tpIHF1ZXJpZXIgc2VydmljZS4iLCJ0eXBlIjoic3RyaW5nIn0sInRlbmFudElEIjp7ImRlZmF1bHQiOiJuZXRvYnNlcnYiLCJkZXNjcmlwdGlvbiI6ImB0ZW5hbnRJRGAgaXMgdGhlIExva2kgYFgtU2NvcGUtT3JnSURgIGhlYWRlciB0aGF0IGlkZW50aWZpZXMgdGhlIHRlbmFudCBmb3IgZWFjaCByZXF1ZXN0LiIsInR5cGUiOiJzdHJpbmcifSwidGxzIjp7ImRlc2NyaXB0aW9uIjoiVExTIGNsaWVudCBjb25maWd1cmF0aW9uIGZvciBMb2tpIFVSTC4iLCJwcm9wZXJ0aWVzIjp7ImNhQ2VydCI6eyJkZXNjcmlwdGlvbiI6ImBjYUNlcnRgIGRlZmluZXMgdGhlIHJlZmVyZW5jZSBvZiB0aGUgY2VydGlmaWNhdGUgZm9yIHRoZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkuIiwicHJvcGVydGllcyI6eyJjZXJ0RmlsZSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0RmlsZWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9LCJjZXJ0S2V5Ijp7ImRlc2NyaXB0aW9uIjoiYGNlcnRLZXlgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIHByaXZhdGUga2V5IGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiBPbWl0IHdoZW4gdGhlIGtleSBpcyBub3QgbmVjZXNzYXJ5LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgd2hlcmUgTmV0T2JzZXJ2IGlzIGRlcGxveWVkLlxuSWYgdGhlIG5hbWVzcGFjZSBpcyBkaWZmZXJlbnQsIHRoZSBjb25maWcgbWFwIG9yIHRoZSBzZWNyZXQgaXMgY29waWVkIHNvIHRoYXQgaXQgY2FuIGJlIG1vdW50ZWQgYXMgcmVxdWlyZWQuIiwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBmb3IgdGhlIGNlcnRpZmljYXRlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJlbmFibGUiOnsiZGVmYXVsdCI6ZmFsc2UsImRlc2NyaXB0aW9uIjoiRW5hYmxlIFRMUyIsInR5cGUiOiJib29sZWFuIn0sImluc2VjdXJlU2tpcFZlcmlmeSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJgaW5zZWN1cmVTa2lwVmVyaWZ5YCBhbGxvd3Mgc2tpcHBpbmcgY2xpZW50LXNpZGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUuXG5JZiBzZXQgdG8gYHRydWVgLCB0aGUgYGNhQ2VydGAgZmllbGQgaXMgaWdub3JlZC4iLCJ0eXBlIjoiYm9vbGVhbiJ9LCJ1c2VyQ2VydCI6eyJkZXNjcmlwdGlvbiI6ImB1c2VyQ2VydGAgZGVmaW5lcyB0aGUgdXNlciBjZXJ0aWZpY2F0ZSByZWZlcmVuY2UgYW5kIGlzIHVzZWQgZm9yIG1UTFMuIFdoZW4geW91IHVzZSBvbmUtd2F5IFRMUywgeW91IGNhbiBpZ25vcmUgdGhpcyBwcm9wZXJ0eS4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sIm1vZGUiOnsiZGVmYXVsdCI6Ik1vbm9saXRoaWMiLCJkZXNjcmlwdGlvbiI6ImBtb2RlYCBtdXN0IGJlIHNldCBhY2NvcmRpbmcgdG8gdGhlIGluc3RhbGxhdGlvbiBtb2RlIG9mIExva2k6XHUwMDNjYnJcdTAwM2Vcbi0gVXNlIGBMb2tpU3RhY2tgIHdoZW4gTG9raSBpcyBtYW5hZ2VkIHVzaW5nIHRoZSBMb2tpIE9wZXJhdG9yXHUwMDNjYnJcdTAwM2Vcbi0gVXNlIGBNb25vbGl0aGljYCB3aGVuIExva2kgaXMgaW5zdGFsbGVkIGFzIGEgbW9ub2xpdGhpYyB3b3JrbG9hZFx1MDAzY2JyXHUwMDNlXG4tIFVzZSBgTWljcm9zZXJ2aWNlc2Agd2hlbiBMb2tpIGlzIGluc3RhbGxlZCBhcyBtaWNyb3NlcnZpY2VzLCBidXQgd2l0aG91dCBMb2tpIE9wZXJhdG9yXHUwMDNjYnJcdTAwM2Vcbi0gVXNlIGBNYW51YWxgIGlmIG5vbmUgb2YgdGhlIG9wdGlvbnMgYWJvdmUgbWF0Y2ggeW91ciBzZXR1cFx1MDAzY2JyXHUwMDNlIiwiZW51bSI6WyJNYW51YWwiLCJMb2tpU3RhY2siLCJNb25vbGl0aGljIiwiTWljcm9zZXJ2aWNlcyJdLCJ0eXBlIjoic3RyaW5nIn0sIm1vbm9saXRoaWMiOnsiZGVzY3JpcHRpb24iOiJMb2tpIGNvbmZpZ3VyYXRpb24gZm9yIGBNb25vbGl0aGljYCBtb2RlLlxuVXNlIHRoaXMgb3B0aW9uIHdoZW4gTG9raSBpcyBpbnN0YWxsZWQgdXNpbmcgdGhlIG1vbm9saXRoaWMgZGVwbG95bWVudCBtb2RlIChodHRwczovL2dyYWZhbmEuY29tL2RvY3MvbG9raS9sYXRlc3QvZnVuZGFtZW50YWxzL2FyY2hpdGVjdHVyZS9kZXBsb3ltZW50LW1vZGVzLyNtb25vbGl0aGljLW1vZGUpLlxuSXQgaXMgaWdub3JlZCBmb3Igb3RoZXIgbW9kZXMuIiwicHJvcGVydGllcyI6eyJ0ZW5hbnRJRCI6eyJkZWZhdWx0IjoibmV0b2JzZXJ2IiwiZGVzY3JpcHRpb24iOiJgdGVuYW50SURgIGlzIHRoZSBMb2tpIGBYLVNjb3BlLU9yZ0lEYCBoZWFkZXIgdGhhdCBpZGVudGlmaWVzIHRoZSB0ZW5hbnQgZm9yIGVhY2ggcmVxdWVzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInRscyI6eyJkZXNjcmlwdGlvbiI6IlRMUyBjbGllbnQgY29uZmlndXJhdGlvbiBmb3IgTG9raSBVUkwuIiwicHJvcGVydGllcyI6eyJjYUNlcnQiOnsiZGVzY3JpcHRpb24iOiJgY2FDZXJ0YCBkZWZpbmVzIHRoZSByZWZlcmVuY2Ugb2YgdGhlIGNlcnRpZmljYXRlIGZvciB0aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LiIsInByb3BlcnRpZXMiOnsiY2VydEZpbGUiOnsiZGVzY3JpcHRpb24iOiJgY2VydEZpbGVgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwiY2VydEtleSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0S2V5YCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4gT21pdCB3aGVuIHRoZSBrZXkgaXMgbm90IG5lY2Vzc2FyeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwiZW5hYmxlIjp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6IkVuYWJsZSBUTFMiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJpbnNlY3VyZVNraXBWZXJpZnkiOnsiZGVmYXVsdCI6ZmFsc2UsImRlc2NyaXB0aW9uIjoiYGluc2VjdXJlU2tpcFZlcmlmeWAgYWxsb3dzIHNraXBwaW5nIGNsaWVudC1zaWRlIHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyIGNlcnRpZmljYXRlLlxuSWYgc2V0IHRvIGB0cnVlYCwgdGhlIGBjYUNlcnRgIGZpZWxkIGlzIGlnbm9yZWQuIiwidHlwZSI6ImJvb2xlYW4ifSwidXNlckNlcnQiOnsiZGVzY3JpcHRpb24iOiJgdXNlckNlcnRgIGRlZmluZXMgdGhlIHVzZXIgY2VydGlmaWNhdGUgcmVmZXJlbmNlIGFuZCBpcyB1c2VkIGZvciBtVExTLiBXaGVuIHlvdSB1c2Ugb25lLXdheSBUTFMsIHlvdSBjYW4gaWdub3JlIHRoaXMgcHJvcGVydHkuIiwicHJvcGVydGllcyI6eyJjZXJ0RmlsZSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0RmlsZWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIiwidHlwZSI6InN0cmluZyJ9LCJjZXJ0S2V5Ijp7ImRlc2NyaXB0aW9uIjoiYGNlcnRLZXlgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIHByaXZhdGUga2V5IGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiBPbWl0IHdoZW4gdGhlIGtleSBpcyBub3QgbmVjZXNzYXJ5LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiIsInR5cGUiOiJzdHJpbmcifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiIiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIElmIG9taXR0ZWQsIHRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UgYXMgd2hlcmUgTmV0T2JzZXJ2IGlzIGRlcGxveWVkLlxuSWYgdGhlIG5hbWVzcGFjZSBpcyBkaWZmZXJlbnQsIHRoZSBjb25maWcgbWFwIG9yIHRoZSBzZWNyZXQgaXMgY29waWVkIHNvIHRoYXQgaXQgY2FuIGJlIG1vdW50ZWQgYXMgcmVxdWlyZWQuIiwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiVHlwZSBmb3IgdGhlIGNlcnRpZmljYXRlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ1cmwiOnsiZGVmYXVsdCI6Imh0dHA6Ly9sb2tpOjMxMDAvIiwiZGVzY3JpcHRpb24iOiJgdXJsYCBpcyB0aGUgdW5pcXVlIGFkZHJlc3Mgb2YgYW4gZXhpc3RpbmcgTG9raSBzZXJ2aWNlIHRoYXQgcG9pbnRzIHRvIGJvdGggdGhlIGluZ2VzdGVyIGFuZCB0aGUgcXVlcmllci4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInJlYWRUaW1lb3V0Ijp7ImRlZmF1bHQiOiIzMHMiLCJkZXNjcmlwdGlvbiI6ImByZWFkVGltZW91dGAgaXMgdGhlIG1heGltdW0gY29uc29sZSBwbHVnaW4gbG9raSBxdWVyeSB0b3RhbCB0aW1lIGxpbWl0LlxuQSB0aW1lb3V0IG9mIHplcm8gbWVhbnMgbm8gdGltZW91dC4iLCJ0eXBlIjoic3RyaW5nIn0sIndyaXRlQmF0Y2hTaXplIjp7ImRlZmF1bHQiOjEwNDg1NzYwLCJkZXNjcmlwdGlvbiI6ImB3cml0ZUJhdGNoU2l6ZWAgaXMgdGhlIG1heGltdW0gYmF0Y2ggc2l6ZSAoaW4gYnl0ZXMpIG9mIExva2kgbG9ncyB0byBhY2N1bXVsYXRlIGJlZm9yZSBzZW5kaW5nLiIsImZvcm1hdCI6ImludDY0IiwibWluaW11bSI6MSwidHlwZSI6ImludGVnZXIifSwid3JpdGVCYXRjaFdhaXQiOnsiZGVmYXVsdCI6IjFzIiwiZGVzY3JpcHRpb24iOiJgd3JpdGVCYXRjaFdhaXRgIGlzIHRoZSBtYXhpbXVtIHRpbWUgdG8gd2FpdCBiZWZvcmUgc2VuZGluZyBhIExva2kgYmF0Y2guIiwidHlwZSI6InN0cmluZyJ9LCJ3cml0ZVRpbWVvdXQiOnsiZGVmYXVsdCI6IjEwcyIsImRlc2NyaXB0aW9uIjoiYHdyaXRlVGltZW91dGAgaXMgdGhlIG1heGltdW0gTG9raSB0aW1lIGNvbm5lY3Rpb24gLyByZXF1ZXN0IGxpbWl0LlxuQSB0aW1lb3V0IG9mIHplcm8gbWVhbnMgbm8gdGltZW91dC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJtb2RlIl0sInR5cGUiOiJvYmplY3QifSwibmFtZXNwYWNlIjp7ImRlZmF1bHQiOiJuZXRvYnNlcnYiLCJkZXNjcmlwdGlvbiI6Ik5hbWVzcGFjZSB3aGVyZSBOZXRPYnNlcnYgcG9kcyBhcmUgZGVwbG95ZWQuIiwidHlwZSI6InN0cmluZyIsIngta3ViZXJuZXRlcy12YWxpZGF0aW9ucyI6W3sibWVzc2FnZSI6Ik5hbWVzcGFjZSBpcyBpbW11dGFibGUuIElmIHlvdSBuZWVkIHRvIGNoYW5nZSBpdCwgZGVsZXRlIGFuZCByZWNyZWF0ZSB0aGUgcmVzb3VyY2UuIiwicnVsZSI6InNlbGYgPT0gb2xkU2VsZiJ9XX0sIm5ldHdvcmtQb2xpY3kiOnsiZGVzY3JpcHRpb24iOiJgbmV0d29ya1BvbGljeWAgZGVmaW5lcyBpbmdyZXNzIG5ldHdvcmsgcG9saWN5IHNldHRpbmdzIGZvciBOZXRPYnNlcnYgY29tcG9uZW50cyBpc29sYXRpb24uIiwicHJvcGVydGllcyI6eyJhZGRpdGlvbmFsTmFtZXNwYWNlcyI6eyJkZXNjcmlwdGlvbiI6ImBhZGRpdGlvbmFsTmFtZXNwYWNlc2AgY29udGFpbnMgYWRkaXRpb25hbCBuYW1lc3BhY2VzIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUgTmV0T2JzZXJ2IG5hbWVzcGFjZS5cbkl0IHByb3ZpZGVzIGZsZXhpYmlsaXR5IGluIHRoZSBuZXR3b3JrIHBvbGljeSBjb25maWd1cmF0aW9uLCBidXQgaWYgeW91IG5lZWQgYSBtb3JlIHNwZWNpZmljXG5jb25maWd1cmF0aW9uLCB5b3UgY2FuIGRpc2FibGUgaXQgYW5kIGluc3RhbGwgeW91ciBvd24gaW5zdGVhZC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJlbmFibGUiOnsiZGVzY3JpcHRpb24iOiJTZXQgYGVuYWJsZWAgdG8gYHRydWVgIHRvIGRlcGxveSBuZXR3b3JrIHBvbGljaWVzIG9uIHRoZSBuYW1lc3BhY2VzIHVzZWQgYnkgTmV0T2JzZXJ2IChtYWluIGFuZCBwcml2aWxlZ2VkKS4gSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cblRoZXNlIG5ldHdvcmsgcG9saWNpZXMgYmV0dGVyIGlzb2xhdGUgdGhlIE5ldE9ic2VydiBjb21wb25lbnRzIHRvIHByZXZlbnQgdW5kZXNpcmVkIGNvbm5lY3Rpb25zIHRvIHRoZW0uXG5UbyBpbmNyZWFzZSB0aGUgc2VjdXJpdHkgb2YgY29ubmVjdGlvbnMsIGVuYWJsZSB0aGlzIG9wdGlvbiBvciBjcmVhdGUgeW91ciBvd24gbmV0d29yayBwb2xpY3kuIiwidHlwZSI6ImJvb2xlYW4ifX0sInR5cGUiOiJvYmplY3QifSwicHJvY2Vzc29yIjp7ImRlc2NyaXB0aW9uIjoiYHByb2Nlc3NvcmAgZGVmaW5lcyB0aGUgc2V0dGluZ3Mgb2YgdGhlIGNvbXBvbmVudCB0aGF0IHJlY2VpdmVzIHRoZSBmbG93cyBmcm9tIHRoZSBhZ2VudCxcbmVucmljaGVzIHRoZW0sIGdlbmVyYXRlcyBtZXRyaWNzLCBhbmQgZm9yd2FyZHMgdGhlbSB0byB0aGUgTG9raSBwZXJzaXN0ZW5jZSBsYXllciBhbmQvb3IgYW55IGF2YWlsYWJsZSBleHBvcnRlci4iLCJwcm9wZXJ0aWVzIjp7ImFkZFpvbmUiOnsiZGVzY3JpcHRpb24iOiJgYWRkWm9uZWAgYWxsb3dzIGF2YWlsYWJpbGl0eSB6b25lIGF3YXJlbmVzcyBieSBsYWJlbGxpbmcgZmxvd3Mgd2l0aCB0aGVpciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHpvbmVzLlxuVGhpcyBmZWF0dXJlIHJlcXVpcmVzIHRoZSBcInRvcG9sb2d5Lmt1YmVybmV0ZXMuaW8vem9uZVwiIGxhYmVsIHRvIGJlIHNldCBvbiBub2Rlcy4iLCJ0eXBlIjoiYm9vbGVhbiJ9LCJhZHZhbmNlZCI6eyJkZXNjcmlwdGlvbiI6ImBhZHZhbmNlZGAgYWxsb3dzIHNldHRpbmcgc29tZSBhc3BlY3RzIG9mIHRoZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBmbG93IHByb2Nlc3Nvci5cblRoaXMgc2VjdGlvbiBpcyBhaW1lZCBtb3N0bHkgZm9yIGRlYnVnZ2luZyBhbmQgZmluZS1ncmFpbmVkIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMsXG5zdWNoIGFzIGBHT0dDYCBhbmQgYEdPTUFYUFJPQ1NgIGVudmlyb25tZW50IHZhcmlhYmxlcy4gU2V0IHRoZXNlIHZhbHVlcyBhdCB5b3VyIG93biByaXNrLiIsInByb3BlcnRpZXMiOnsiY29udmVyc2F0aW9uRW5kVGltZW91dCI6eyJkZWZhdWx0IjoiMTBzIiwiZGVzY3JpcHRpb24iOiJgY29udmVyc2F0aW9uRW5kVGltZW91dGAgaXMgdGhlIHRpbWUgdG8gd2FpdCBhZnRlciBhIG5ldHdvcmsgZmxvdyBpcyByZWNlaXZlZCwgdG8gY29uc2lkZXIgdGhlIGNvbnZlcnNhdGlvbiBlbmRlZC5cblRoaXMgZGVsYXkgaXMgaWdub3JlZCB3aGVuIGEgRklOIHBhY2tldCBpcyBjb2xsZWN0ZWQgZm9yIFRDUCBmbG93cyAoc2VlIGBjb252ZXJzYXRpb25UZXJtaW5hdGluZ1RpbWVvdXRgIGluc3RlYWQpLiIsInR5cGUiOiJzdHJpbmcifSwiY29udmVyc2F0aW9uSGVhcnRiZWF0SW50ZXJ2YWwiOnsiZGVmYXVsdCI6IjMwcyIsImRlc2NyaXB0aW9uIjoiYGNvbnZlcnNhdGlvbkhlYXJ0YmVhdEludGVydmFsYCBpcyB0aGUgdGltZSB0byB3YWl0IGJldHdlZW4gXCJ0aWNrXCIgZXZlbnRzIG9mIGEgY29udmVyc2F0aW9uIiwidHlwZSI6InN0cmluZyJ9LCJjb252ZXJzYXRpb25UZXJtaW5hdGluZ1RpbWVvdXQiOnsiZGVmYXVsdCI6IjVzIiwiZGVzY3JpcHRpb24iOiJgY29udmVyc2F0aW9uVGVybWluYXRpbmdUaW1lb3V0YCBpcyB0aGUgdGltZSB0byB3YWl0IGZyb20gZGV0ZWN0ZWQgRklOIGZsYWcgdG8gZW5kIGEgY29udmVyc2F0aW9uLiBPbmx5IHJlbGV2YW50IGZvciBUQ1AgZmxvd3MuIiwidHlwZSI6InN0cmluZyJ9LCJkcm9wVW51c2VkRmllbGRzIjp7ImRlZmF1bHQiOnRydWUsImRlc2NyaXB0aW9uIjoiYGRyb3BVbnVzZWRGaWVsZHNgIFtkZXByZWNhdGVkICgqKV0gdGhpcyBzZXR0aW5nIGlzIG5vdCB1c2VkIGFueW1vcmUuIiwidHlwZSI6ImJvb2xlYW4ifSwiZW5hYmxlS3ViZVByb2JlcyI6eyJkZWZhdWx0Ijp0cnVlLCJkZXNjcmlwdGlvbiI6ImBlbmFibGVLdWJlUHJvYmVzYCBpcyBhIGZsYWcgdG8gZW5hYmxlIG9yIGRpc2FibGUgS3ViZXJuZXRlcyBsaXZlbmVzcyBhbmQgcmVhZGluZXNzIHByb2JlcyIsInR5cGUiOiJib29sZWFuIn0sImVudiI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoiYGVudmAgYWxsb3dzIHBhc3NpbmcgY3VzdG9tIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB1bmRlcmx5aW5nIGNvbXBvbmVudHMuIFVzZWZ1bCBmb3IgcGFzc2luZ1xuc29tZSB2ZXJ5IGNvbmNyZXRlIHBlcmZvcm1hbmNlLXR1bmluZyBvcHRpb25zLCBzdWNoIGFzIGBHT0dDYCBhbmQgYEdPTUFYUFJPQ1NgLCB0aGF0IHNob3VsZCBub3QgYmVcbnB1YmxpY2x5IGV4cG9zZWQgYXMgcGFydCBvZiB0aGUgRmxvd0NvbGxlY3RvciBkZXNjcmlwdG9yLCBhcyB0aGV5IGFyZSBvbmx5IHVzZWZ1bFxuaW4gZWRnZSBkZWJ1ZyBvciBzdXBwb3J0IHNjZW5hcmlvcy4iLCJ0eXBlIjoib2JqZWN0In0sImhlYWx0aFBvcnQiOnsiZGVmYXVsdCI6ODA4MCwiZGVzY3JpcHRpb24iOiJgaGVhbHRoUG9ydGAgaXMgYSBjb2xsZWN0b3IgSFRUUCBwb3J0IGluIHRoZSBQb2QgdGhhdCBleHBvc2VzIHRoZSBoZWFsdGggY2hlY2sgQVBJIiwiZm9ybWF0IjoiaW50MzIiLCJtYXhpbXVtIjo2NTUzNSwibWluaW11bSI6MSwidHlwZSI6ImludGVnZXIifSwicG9ydCI6eyJkZWZhdWx0IjoyMDU1LCJkZXNjcmlwdGlvbiI6IlBvcnQgb2YgdGhlIGZsb3cgY29sbGVjdG9yIChob3N0IHBvcnQpLlxuQnkgY29udmVudGlvbiwgc29tZSB2YWx1ZXMgYXJlIGZvcmJpZGRlbi4gSXQgbXVzdCBiZSBncmVhdGVyIHRoYW4gMTAyNCBhbmQgZGlmZmVyZW50IGZyb21cbjQ1MDAsIDQ3ODkgYW5kIDYwODEuIiwiZm9ybWF0IjoiaW50MzIiLCJtYXhpbXVtIjo2NTUzNSwibWluaW11bSI6MTAyNSwidHlwZSI6ImludGVnZXIifSwicHJvZmlsZVBvcnQiOnsiZGVzY3JpcHRpb24iOiJgcHJvZmlsZVBvcnRgIGFsbG93cyBzZXR0aW5nIHVwIGEgR28gcHByb2YgcHJvZmlsZXIgbGlzdGVuaW5nIHRvIHRoaXMgcG9ydCIsImZvcm1hdCI6ImludDMyIiwibWF4aW11bSI6NjU1MzUsIm1pbmltdW0iOjAsInR5cGUiOiJpbnRlZ2VyIn0sInNjaGVkdWxpbmciOnsiZGVzY3JpcHRpb24iOiJzY2hlZHVsaW5nIGNvbnRyb2xzIGhvdyB0aGUgcG9kcyBhcmUgc2NoZWR1bGVkIG9uIG5vZGVzLiIsInByb3BlcnRpZXMiOnsiYWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJJZiBzcGVjaWZpZWQsIHRoZSBwb2QncyBzY2hlZHVsaW5nIGNvbnN0cmFpbnRzLiBGb3IgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvcmVmZXJlbmNlL2t1YmVybmV0ZXMtYXBpL3dvcmtsb2FkLXJlc291cmNlcy9wb2QtdjEvI3NjaGVkdWxpbmcuIiwicHJvcGVydGllcyI6eyJub2RlQWZmaW5pdHkiOnsiZGVzY3JpcHRpb24iOiJEZXNjcmliZXMgbm9kZSBhZmZpbml0eSBzY2hlZHVsaW5nIHJ1bGVzIGZvciB0aGUgcG9kLiIsInByb3BlcnRpZXMiOnsicHJlZmVycmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb24iOnsiZGVzY3JpcHRpb24iOiJUaGUgc2NoZWR1bGVyIHdpbGwgcHJlZmVyIHRvIHNjaGVkdWxlIHBvZHMgdG8gbm9kZXMgdGhhdCBzYXRpc2Z5XG50aGUgYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFmZmluaXR5IGV4cHJlc3Npb25zLCBldGMuKSxcbmNvbXB1dGUgYSBzdW0gYnkgaXRlcmF0aW5nIHRocm91Z2ggdGhlIGVsZW1lbnRzIG9mIHRoaXMgZmllbGQgYW5kIGFkZGluZ1xuXCJ3ZWlnaHRcIiB0byB0aGUgc3VtIGlmIHRoZSBub2RlIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgbWF0Y2hFeHByZXNzaW9uczsgdGhlXG5ub2RlKHMpIHdpdGggdGhlIGhpZ2hlc3Qgc3VtIGFyZSB0aGUgbW9zdCBwcmVmZXJyZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBbiBlbXB0eSBwcmVmZXJyZWQgc2NoZWR1bGluZyB0ZXJtIG1hdGNoZXMgYWxsIG9iamVjdHMgd2l0aCBpbXBsaWNpdCB3ZWlnaHQgMFxuKGkuZS4gaXQncyBhIG5vLW9wKS4gQSBudWxsIHByZWZlcnJlZCBzY2hlZHVsaW5nIHRlcm0gbWF0Y2hlcyBubyBvYmplY3RzIChpLmUuIGlzIGFsc28gYSBuby1vcCkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJlbmNlIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBsYWJlbHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hGaWVsZHMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2Ygbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudHMgYnkgbm9kZSdzIGZpZWxkcy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbm9kZSBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yXG50aGF0IHJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJSZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMsIERvZXNOb3RFeGlzdC4gR3QsIGFuZCBMdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6IkFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgR3Qgb3IgTHQsIHRoZSB2YWx1ZXNcbmFycmF5IG11c3QgaGF2ZSBhIHNpbmdsZSBlbGVtZW50LCB3aGljaCB3aWxsIGJlIGludGVycHJldGVkIGFzIGFuIGludGVnZXIuXG5UaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpYyBtZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJ3ZWlnaHQiOnsiZGVzY3JpcHRpb24iOiJXZWlnaHQgYXNzb2NpYXRlZCB3aXRoIG1hdGNoaW5nIHRoZSBjb3JyZXNwb25kaW5nIG5vZGVTZWxlY3RvclRlcm0sIGluIHRoZSByYW5nZSAxLTEwMC4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJwcmVmZXJlbmNlIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGFuIHVwZGF0ZSksIHRoZSBzeXN0ZW1cbm1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS4iLCJwcm9wZXJ0aWVzIjp7Im5vZGVTZWxlY3RvclRlcm1zIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHRlcm1zLiBUaGUgdGVybXMgYXJlIE9SZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG51bGwgb3IgZW1wdHkgbm9kZSBzZWxlY3RvciB0ZXJtIG1hdGNoZXMgbm8gb2JqZWN0cy4gVGhlIHJlcXVpcmVtZW50cyBvZlxudGhlbSBhcmUgQU5EZWQuXG5UaGUgVG9wb2xvZ3lTZWxlY3RvclRlcm0gdHlwZSBpbXBsZW1lbnRzIGEgc3Vic2V0IG9mIHRoZSBOb2RlU2VsZWN0b3JUZXJtLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6IkEgbGlzdCBvZiBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50cyBieSBub2RlJ3MgbGFiZWxzLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBub2RlIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3JcbnRoYXQgcmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJUaGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6IlJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cywgRG9lc05vdEV4aXN0LiBHdCwgYW5kIEx0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoiQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBHdCBvciBMdCwgdGhlIHZhbHVlc1xuYXJyYXkgbXVzdCBoYXZlIGEgc2luZ2xlIGVsZW1lbnQsIHdoaWNoIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlci5cblRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljIG1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoRmllbGRzIjp7ImRlc2NyaXB0aW9uIjoiQSBsaXN0IG9mIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnRzIGJ5IG5vZGUncyBmaWVsZHMuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIG5vZGUgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvclxudGhhdCByZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6IlRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoiUmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzLCBEb2VzTm90RXhpc3QuIEd0LCBhbmQgTHQuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJBbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEd0IG9yIEx0LCB0aGUgdmFsdWVzXG5hcnJheSBtdXN0IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhbiBpbnRlZ2VyLlxuVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWMgbWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsibm9kZVNlbGVjdG9yVGVybXMiXSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJwb2RBZmZpbml0eSI6eyJkZXNjcmlwdGlvbiI6IkRlc2NyaWJlcyBwb2QgYWZmaW5pdHkgc2NoZWR1bGluZyBydWxlcyAoZS5nLiBjby1sb2NhdGUgdGhpcyBwb2QgaW4gdGhlIHNhbWUgbm9kZSwgem9uZSwgZXRjLiBhcyBzb21lIG90aGVyIHBvZChzKSkuIiwicHJvcGVydGllcyI6eyJwcmVmZXJyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IlRoZSBzY2hlZHVsZXIgd2lsbCBwcmVmZXIgdG8gc2NoZWR1bGUgcG9kcyB0byBub2RlcyB0aGF0IHNhdGlzZnlcbnRoZSBhZmZpbml0eSBleHByZXNzaW9ucyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCwgYnV0IGl0IG1heSBjaG9vc2VcbmEgbm9kZSB0aGF0IHZpb2xhdGVzIG9uZSBvciBtb3JlIG9mIHRoZSBleHByZXNzaW9ucy4gVGhlIG5vZGUgdGhhdCBpc1xubW9zdCBwcmVmZXJyZWQgaXMgdGhlIG9uZSB3aXRoIHRoZSBncmVhdGVzdCBzdW0gb2Ygd2VpZ2h0cywgaS5lLlxuZm9yIGVhY2ggbm9kZSB0aGF0IG1lZXRzIGFsbCBvZiB0aGUgc2NoZWR1bGluZyByZXF1aXJlbWVudHMgKHJlc291cmNlXG5yZXF1ZXN0LCByZXF1aXJlZER1cmluZ1NjaGVkdWxpbmcgYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgYWRkaW5nXG5cIndlaWdodFwiIHRvIHRoZSBzdW0gaWYgdGhlIG5vZGUgaGFzIHBvZHMgd2hpY2ggbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm07IHRoZVxubm9kZShzKSB3aXRoIHRoZSBoaWdoZXN0IHN1bSBhcmUgdGhlIG1vc3QgcHJlZmVycmVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHdlaWdodHMgb2YgYWxsIG9mIHRoZSBtYXRjaGVkIFdlaWdodGVkUG9kQWZmaW5pdHlUZXJtIGZpZWxkcyBhcmUgYWRkZWQgcGVyLW5vZGUgdG8gZmluZCB0aGUgbW9zdCBwcmVmZXJyZWQgbm9kZShzKSIsInByb3BlcnRpZXMiOnsicG9kQWZmaW5pdHlUZXJtIjp7ImRlc2NyaXB0aW9uIjoiUmVxdWlyZWQuIEEgcG9kIGFmZmluaXR5IHRlcm0sIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyB3ZWlnaHQuIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwid2VpZ2h0Ijp7ImRlc2NyaXB0aW9uIjoid2VpZ2h0IGFzc29jaWF0ZWQgd2l0aCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBwb2RBZmZpbml0eVRlcm0sXG5pbiB0aGUgcmFuZ2UgMS0xMDAuIiwiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9fSwicmVxdWlyZWQiOlsicG9kQWZmaW5pdHlUZXJtIiwid2VpZ2h0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJyZXF1aXJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBjZWFzZSB0byBiZSBtZXRcbmF0IHNvbWUgcG9pbnQgZHVyaW5nIHBvZCBleGVjdXRpb24gKGUuZy4gZHVlIHRvIGEgcG9kIGxhYmVsIHVwZGF0ZSksIHRoZVxuc3lzdGVtIG1heSBvciBtYXkgbm90IHRyeSB0byBldmVudHVhbGx5IGV2aWN0IHRoZSBwb2QgZnJvbSBpdHMgbm9kZS5cbldoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzLCB0aGUgbGlzdHMgb2Ygbm9kZXMgY29ycmVzcG9uZGluZyB0byBlYWNoXG5wb2RBZmZpbml0eVRlcm0gYXJlIGludGVyc2VjdGVkLCBpLmUuIGFsbCB0ZXJtcyBtdXN0IGJlIHNhdGlzZmllZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgYSBzZXQgb2YgcG9kcyAobmFtZWx5IHRob3NlIG1hdGNoaW5nIHRoZSBsYWJlbFNlbGVjdG9yXG5yZWxhdGl2ZSB0byB0aGUgZ2l2ZW4gbmFtZXNwYWNlKHMpKSB0aGF0IHRoaXMgcG9kIHNob3VsZCBiZVxuY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoLFxud2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlIHdob3NlIHZhbHVlIG9mXG50aGUgbGFiZWwgd2l0aCBrZXkgXHUwMDNjdG9wb2xvZ3lLZXlcdTAwM2UgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoXG5hIHBvZCBvZiB0aGUgc2V0IG9mIHBvZHMgaXMgcnVubmluZyIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInR5cGUiOiJvYmplY3QifSwicG9kQW50aUFmZmluaXR5Ijp7ImRlc2NyaXB0aW9uIjoiRGVzY3JpYmVzIHBvZCBhbnRpLWFmZmluaXR5IHNjaGVkdWxpbmcgcnVsZXMgKGUuZy4gYXZvaWQgcHV0dGluZyB0aGlzIHBvZCBpbiB0aGUgc2FtZSBub2RlLCB6b25lLCBldGMuIGFzIHNvbWUgb3RoZXIgcG9kKHMpKS4iLCJwcm9wZXJ0aWVzIjp7InByZWZlcnJlZER1cmluZ1NjaGVkdWxpbmdJZ25vcmVkRHVyaW5nRXhlY3V0aW9uIjp7ImRlc2NyaXB0aW9uIjoiVGhlIHNjaGVkdWxlciB3aWxsIHByZWZlciB0byBzY2hlZHVsZSBwb2RzIHRvIG5vZGVzIHRoYXQgc2F0aXNmeVxudGhlIGFudGktYWZmaW5pdHkgZXhwcmVzc2lvbnMgc3BlY2lmaWVkIGJ5IHRoaXMgZmllbGQsIGJ1dCBpdCBtYXkgY2hvb3NlXG5hIG5vZGUgdGhhdCB2aW9sYXRlcyBvbmUgb3IgbW9yZSBvZiB0aGUgZXhwcmVzc2lvbnMuIFRoZSBub2RlIHRoYXQgaXNcbm1vc3QgcHJlZmVycmVkIGlzIHRoZSBvbmUgd2l0aCB0aGUgZ3JlYXRlc3Qgc3VtIG9mIHdlaWdodHMsIGkuZS5cbmZvciBlYWNoIG5vZGUgdGhhdCBtZWV0cyBhbGwgb2YgdGhlIHNjaGVkdWxpbmcgcmVxdWlyZW1lbnRzIChyZXNvdXJjZVxucmVxdWVzdCwgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nIGFudGktYWZmaW5pdHkgZXhwcmVzc2lvbnMsIGV0Yy4pLFxuY29tcHV0ZSBhIHN1bSBieSBpdGVyYXRpbmcgdGhyb3VnaCB0aGUgZWxlbWVudHMgb2YgdGhpcyBmaWVsZCBhbmQgc3VidHJhY3Rpbmdcblwid2VpZ2h0XCIgZnJvbSB0aGUgc3VtIGlmIHRoZSBub2RlIGhhcyBwb2RzIHdoaWNoIG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtOyB0aGVcbm5vZGUocykgd2l0aCB0aGUgaGlnaGVzdCBzdW0gYXJlIHRoZSBtb3N0IHByZWZlcnJlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSB3ZWlnaHRzIG9mIGFsbCBvZiB0aGUgbWF0Y2hlZCBXZWlnaHRlZFBvZEFmZmluaXR5VGVybSBmaWVsZHMgYXJlIGFkZGVkIHBlci1ub2RlIHRvIGZpbmQgdGhlIG1vc3QgcHJlZmVycmVkIG5vZGUocykiLCJwcm9wZXJ0aWVzIjp7InBvZEFmZmluaXR5VGVybSI6eyJkZXNjcmlwdGlvbiI6IlJlcXVpcmVkLiBBIHBvZCBhZmZpbml0eSB0ZXJtLCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgd2VpZ2h0LiIsInByb3BlcnRpZXMiOnsibGFiZWxTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciBhIHNldCBvZiByZXNvdXJjZXMsIGluIHRoaXMgY2FzZSBwb2RzLlxuSWYgaXQncyBudWxsLCB0aGlzIFBvZEFmZmluaXR5VGVybSBtYXRjaGVzIHdpdGggbm8gUG9kcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtaXNtYXRjaExhYmVsS2V5cyI6eyJkZXNjcmlwdGlvbiI6Ik1pc21hdGNoTGFiZWxLZXlzIGlzIGEgc2V0IG9mIHBvZCBsYWJlbCBrZXlzIHRvIHNlbGVjdCB3aGljaCBwb2RzIHdpbGxcbmJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gVGhlIGtleXMgYXJlIHVzZWQgdG8gbG9va3VwIHZhbHVlcyBmcm9tIHRoZVxuaW5jb21pbmcgcG9kIGxhYmVscywgdGhvc2Uga2V5LXZhbHVlIGxhYmVscyBhcmUgbWVyZ2VkIHdpdGggYGxhYmVsU2VsZWN0b3JgIGFzIGBrZXkgbm90aW4gKHZhbHVlKWBcbnRvIHNlbGVjdCB0aGUgZ3JvdXAgb2YgZXhpc3RpbmcgcG9kcyB3aGljaCBwb2RzIHdpbGwgYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXG5mb3IgdGhlIGluY29taW5nIHBvZCdzIHBvZCAoYW50aSkgYWZmaW5pdHkuIEtleXMgdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgaW5jb21pbmdcbnBvZCBsYWJlbHMgd2lsbCBiZSBpZ25vcmVkLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBlbXB0eS5cblRoZSBzYW1lIGtleSBpcyBmb3JiaWRkZW4gdG8gZXhpc3QgaW4gYm90aCBtaXNtYXRjaExhYmVsS2V5cyBhbmQgbGFiZWxTZWxlY3Rvci5cbkFsc28sIG1pc21hdGNoTGFiZWxLZXlzIGNhbm5vdCBiZSBzZXQgd2hlbiBsYWJlbFNlbGVjdG9yIGlzbid0IHNldC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibmFtZXNwYWNlU2VsZWN0b3IiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHF1ZXJ5IG92ZXIgdGhlIHNldCBvZiBuYW1lc3BhY2VzIHRoYXQgdGhlIHRlcm0gYXBwbGllcyB0by5cblRoZSB0ZXJtIGlzIGFwcGxpZWQgdG8gdGhlIHVuaW9uIG9mIHRoZSBuYW1lc3BhY2VzIHNlbGVjdGVkIGJ5IHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBsaXN0ZWQgaW4gdGhlIG5hbWVzcGFjZXMgZmllbGQuXG5udWxsIHNlbGVjdG9yIGFuZCBudWxsIG9yIGVtcHR5IG5hbWVzcGFjZXMgbGlzdCBtZWFucyBcInRoaXMgcG9kJ3MgbmFtZXNwYWNlXCIuXG5BbiBlbXB0eSBzZWxlY3RvciAoe30pIG1hdGNoZXMgYWxsIG5hbWVzcGFjZXMuIiwicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7ImRlc2NyaXB0aW9uIjoibWF0Y2hFeHByZXNzaW9ucyBpcyBhIGxpc3Qgb2YgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnRzLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgc2VsZWN0b3IgcmVxdWlyZW1lbnQgaXMgYSBzZWxlY3RvciB0aGF0IGNvbnRhaW5zIHZhbHVlcywgYSBrZXksIGFuZCBhbiBvcGVyYXRvciB0aGF0XG5yZWxhdGVzIHRoZSBrZXkgYW5kIHZhbHVlcy4iLCJwcm9wZXJ0aWVzIjp7ImtleSI6eyJkZXNjcmlwdGlvbiI6ImtleSBpcyB0aGUgbGFiZWwga2V5IHRoYXQgdGhlIHNlbGVjdG9yIGFwcGxpZXMgdG8uIiwidHlwZSI6InN0cmluZyJ9LCJvcGVyYXRvciI6eyJkZXNjcmlwdGlvbiI6Im9wZXJhdG9yIHJlcHJlc2VudHMgYSBrZXkncyByZWxhdGlvbnNoaXAgdG8gYSBzZXQgb2YgdmFsdWVzLlxuVmFsaWQgb3BlcmF0b3JzIGFyZSBJbiwgTm90SW4sIEV4aXN0cyBhbmQgRG9lc05vdEV4aXN0LiIsInR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7ImRlc2NyaXB0aW9uIjoidmFsdWVzIGlzIGFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMuIElmIHRoZSBvcGVyYXRvciBpcyBJbiBvciBOb3RJbixcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBub24tZW1wdHkuIElmIHRoZSBvcGVyYXRvciBpcyBFeGlzdHMgb3IgRG9lc05vdEV4aXN0LFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIGVtcHR5LiBUaGlzIGFycmF5IGlzIHJlcGxhY2VkIGR1cmluZyBhIHN0cmF0ZWdpY1xubWVyZ2UgcGF0Y2guIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6Im1hdGNoTGFiZWxzIGlzIGEgbWFwIG9mIHtrZXksdmFsdWV9IHBhaXJzLiBBIHNpbmdsZSB7a2V5LHZhbHVlfSBpbiB0aGUgbWF0Y2hMYWJlbHNcbm1hcCBpcyBlcXVpdmFsZW50IHRvIGFuIGVsZW1lbnQgb2YgbWF0Y2hFeHByZXNzaW9ucywgd2hvc2Uga2V5IGZpZWxkIGlzIFwia2V5XCIsIHRoZVxub3BlcmF0b3IgaXMgXCJJblwiLCBhbmQgdGhlIHZhbHVlcyBhcnJheSBjb250YWlucyBvbmx5IFwidmFsdWVcIi4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VzIjp7ImRlc2NyaXB0aW9uIjoibmFtZXNwYWNlcyBzcGVjaWZpZXMgYSBzdGF0aWMgbGlzdCBvZiBuYW1lc3BhY2UgbmFtZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgbGlzdGVkIGluIHRoaXMgZmllbGRcbmFuZCB0aGUgb25lcyBzZWxlY3RlZCBieSBuYW1lc3BhY2VTZWxlY3Rvci5cbm51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IGFuZCBudWxsIG5hbWVzcGFjZVNlbGVjdG9yIG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwidG9wb2xvZ3lLZXkiOnsiZGVzY3JpcHRpb24iOiJUaGlzIHBvZCBzaG91bGQgYmUgY28tbG9jYXRlZCAoYWZmaW5pdHkpIG9yIG5vdCBjby1sb2NhdGVkIChhbnRpLWFmZmluaXR5KSB3aXRoIHRoZSBwb2RzIG1hdGNoaW5nXG50aGUgbGFiZWxTZWxlY3RvciBpbiB0aGUgc3BlY2lmaWVkIG5hbWVzcGFjZXMsIHdoZXJlIGNvLWxvY2F0ZWQgaXMgZGVmaW5lZCBhcyBydW5uaW5nIG9uIGEgbm9kZVxud2hvc2UgdmFsdWUgb2YgdGhlIGxhYmVsIHdpdGgga2V5IHRvcG9sb2d5S2V5IG1hdGNoZXMgdGhhdCBvZiBhbnkgbm9kZSBvbiB3aGljaCBhbnkgb2YgdGhlXG5zZWxlY3RlZCBwb2RzIGlzIHJ1bm5pbmcuXG5FbXB0eSB0b3BvbG9neUtleSBpcyBub3QgYWxsb3dlZC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0b3BvbG9neUtleSJdLCJ0eXBlIjoib2JqZWN0In0sIndlaWdodCI6eyJkZXNjcmlwdGlvbiI6IndlaWdodCBhc3NvY2lhdGVkIHdpdGggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcG9kQWZmaW5pdHlUZXJtLFxuaW4gdGhlIHJhbmdlIDEtMTAwLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifX0sInJlcXVpcmVkIjpbInBvZEFmZmluaXR5VGVybSIsIndlaWdodCJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwicmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbiI6eyJkZXNjcmlwdGlvbiI6IklmIHRoZSBhbnRpLWFmZmluaXR5IHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhpcyBmaWVsZCBhcmUgbm90IG1ldCBhdFxuc2NoZWR1bGluZyB0aW1lLCB0aGUgcG9kIHdpbGwgbm90IGJlIHNjaGVkdWxlZCBvbnRvIHRoZSBub2RlLlxuSWYgdGhlIGFudGktYWZmaW5pdHkgcmVxdWlyZW1lbnRzIHNwZWNpZmllZCBieSB0aGlzIGZpZWxkIGNlYXNlIHRvIGJlIG1ldFxuYXQgc29tZSBwb2ludCBkdXJpbmcgcG9kIGV4ZWN1dGlvbiAoZS5nLiBkdWUgdG8gYSBwb2QgbGFiZWwgdXBkYXRlKSwgdGhlXG5zeXN0ZW0gbWF5IG9yIG1heSBub3QgdHJ5IHRvIGV2ZW50dWFsbHkgZXZpY3QgdGhlIHBvZCBmcm9tIGl0cyBub2RlLlxuV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMsIHRoZSBsaXN0cyBvZiBub2RlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2hcbnBvZEFmZmluaXR5VGVybSBhcmUgaW50ZXJzZWN0ZWQsIGkuZS4gYWxsIHRlcm1zIG11c3QgYmUgc2F0aXNmaWVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiRGVmaW5lcyBhIHNldCBvZiBwb2RzIChuYW1lbHkgdGhvc2UgbWF0Y2hpbmcgdGhlIGxhYmVsU2VsZWN0b3JcbnJlbGF0aXZlIHRvIHRoZSBnaXZlbiBuYW1lc3BhY2UocykpIHRoYXQgdGhpcyBwb2Qgc2hvdWxkIGJlXG5jby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGgsXG53aGVyZSBjby1sb2NhdGVkIGlzIGRlZmluZWQgYXMgcnVubmluZyBvbiBhIG5vZGUgd2hvc2UgdmFsdWUgb2ZcbnRoZSBsYWJlbCB3aXRoIGtleSBcdTAwM2N0b3BvbG9neUtleVx1MDAzZSBtYXRjaGVzIHRoYXQgb2YgYW55IG5vZGUgb24gd2hpY2hcbmEgcG9kIG9mIHRoZSBzZXQgb2YgcG9kcyBpcyBydW5uaW5nIiwicHJvcGVydGllcyI6eyJsYWJlbFNlbGVjdG9yIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBxdWVyeSBvdmVyIGEgc2V0IG9mIHJlc291cmNlcywgaW4gdGhpcyBjYXNlIHBvZHMuXG5JZiBpdCdzIG51bGwsIHRoaXMgUG9kQWZmaW5pdHlUZXJtIG1hdGNoZXMgd2l0aCBubyBQb2RzLiIsInByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJkZXNjcmlwdGlvbiI6Im1hdGNoRXhwcmVzc2lvbnMgaXMgYSBsaXN0IG9mIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50cy4gVGhlIHJlcXVpcmVtZW50cyBhcmUgQU5EZWQuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJBIGxhYmVsIHNlbGVjdG9yIHJlcXVpcmVtZW50IGlzIGEgc2VsZWN0b3IgdGhhdCBjb250YWlucyB2YWx1ZXMsIGEga2V5LCBhbmQgYW4gb3BlcmF0b3IgdGhhdFxucmVsYXRlcyB0aGUga2V5IGFuZCB2YWx1ZXMuIiwicHJvcGVydGllcyI6eyJrZXkiOnsiZGVzY3JpcHRpb24iOiJrZXkgaXMgdGhlIGxhYmVsIGtleSB0aGF0IHRoZSBzZWxlY3RvciBhcHBsaWVzIHRvLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJvcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIGEgc2V0IG9mIHZhbHVlcy5cblZhbGlkIG9wZXJhdG9ycyBhcmUgSW4sIE5vdEluLCBFeGlzdHMgYW5kIERvZXNOb3RFeGlzdC4iLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlcyI6eyJkZXNjcmlwdGlvbiI6InZhbHVlcyBpcyBhbiBhcnJheSBvZiBzdHJpbmcgdmFsdWVzLiBJZiB0aGUgb3BlcmF0b3IgaXMgSW4gb3IgTm90SW4sXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgbm9uLWVtcHR5LiBJZiB0aGUgb3BlcmF0b3IgaXMgRXhpc3RzIG9yIERvZXNOb3RFeGlzdCxcbnRoZSB2YWx1ZXMgYXJyYXkgbXVzdCBiZSBlbXB0eS4gVGhpcyBhcnJheSBpcyByZXBsYWNlZCBkdXJpbmcgYSBzdHJhdGVnaWNcbm1lcmdlIHBhdGNoLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwiZGVzY3JpcHRpb24iOiJtYXRjaExhYmVscyBpcyBhIG1hcCBvZiB7a2V5LHZhbHVlfSBwYWlycy4gQSBzaW5nbGUge2tleSx2YWx1ZX0gaW4gdGhlIG1hdGNoTGFiZWxzXG5tYXAgaXMgZXF1aXZhbGVudCB0byBhbiBlbGVtZW50IG9mIG1hdGNoRXhwcmVzc2lvbnMsIHdob3NlIGtleSBmaWVsZCBpcyBcImtleVwiLCB0aGVcbm9wZXJhdG9yIGlzIFwiSW5cIiwgYW5kIHRoZSB2YWx1ZXMgYXJyYXkgY29udGFpbnMgb25seSBcInZhbHVlXCIuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QiLCJ4LWt1YmVybmV0ZXMtbWFwLXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbEtleXMiOnsiZGVzY3JpcHRpb24iOiJNYXRjaExhYmVsS2V5cyBpcyBhIHNldCBvZiBwb2QgbGFiZWwga2V5cyB0byBzZWxlY3Qgd2hpY2ggcG9kcyB3aWxsXG5iZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIFRoZSBrZXlzIGFyZSB1c2VkIHRvIGxvb2t1cCB2YWx1ZXMgZnJvbSB0aGVcbmluY29taW5nIHBvZCBsYWJlbHMsIHRob3NlIGtleS12YWx1ZSBsYWJlbHMgYXJlIG1lcmdlZCB3aXRoIGBsYWJlbFNlbGVjdG9yYCBhcyBga2V5IGluICh2YWx1ZSlgXG50byBzZWxlY3QgdGhlIGdyb3VwIG9mIGV4aXN0aW5nIHBvZHMgd2hpY2ggcG9kcyB3aWxsIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvblxuZm9yIHRoZSBpbmNvbWluZyBwb2QncyBwb2QgKGFudGkpIGFmZmluaXR5LiBLZXlzIHRoYXQgZG9uJ3QgZXhpc3QgaW4gdGhlIGluY29taW5nXG5wb2QgbGFiZWxzIHdpbGwgYmUgaWdub3JlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZW1wdHkuXG5UaGUgc2FtZSBrZXkgaXMgZm9yYmlkZGVuIHRvIGV4aXN0IGluIGJvdGggbWF0Y2hMYWJlbEtleXMgYW5kIGxhYmVsU2VsZWN0b3IuXG5BbHNvLCBtYXRjaExhYmVsS2V5cyBjYW5ub3QgYmUgc2V0IHdoZW4gbGFiZWxTZWxlY3RvciBpc24ndCBzZXQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1pc21hdGNoTGFiZWxLZXlzIjp7ImRlc2NyaXB0aW9uIjoiTWlzbWF0Y2hMYWJlbEtleXMgaXMgYSBzZXQgb2YgcG9kIGxhYmVsIGtleXMgdG8gc2VsZWN0IHdoaWNoIHBvZHMgd2lsbFxuYmUgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiBUaGUga2V5cyBhcmUgdXNlZCB0byBsb29rdXAgdmFsdWVzIGZyb20gdGhlXG5pbmNvbWluZyBwb2QgbGFiZWxzLCB0aG9zZSBrZXktdmFsdWUgbGFiZWxzIGFyZSBtZXJnZWQgd2l0aCBgbGFiZWxTZWxlY3RvcmAgYXMgYGtleSBub3RpbiAodmFsdWUpYFxudG8gc2VsZWN0IHRoZSBncm91cCBvZiBleGlzdGluZyBwb2RzIHdoaWNoIHBvZHMgd2lsbCBiZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cbmZvciB0aGUgaW5jb21pbmcgcG9kJ3MgcG9kIChhbnRpKSBhZmZpbml0eS4gS2V5cyB0aGF0IGRvbid0IGV4aXN0IGluIHRoZSBpbmNvbWluZ1xucG9kIGxhYmVscyB3aWxsIGJlIGlnbm9yZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5LlxuVGhlIHNhbWUga2V5IGlzIGZvcmJpZGRlbiB0byBleGlzdCBpbiBib3RoIG1pc21hdGNoTGFiZWxLZXlzIGFuZCBsYWJlbFNlbGVjdG9yLlxuQWxzbywgbWlzbWF0Y2hMYWJlbEtleXMgY2Fubm90IGJlIHNldCB3aGVuIGxhYmVsU2VsZWN0b3IgaXNuJ3Qgc2V0LiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJuYW1lc3BhY2VTZWxlY3RvciI6eyJkZXNjcmlwdGlvbiI6IkEgbGFiZWwgcXVlcnkgb3ZlciB0aGUgc2V0IG9mIG5hbWVzcGFjZXMgdGhhdCB0aGUgdGVybSBhcHBsaWVzIHRvLlxuVGhlIHRlcm0gaXMgYXBwbGllZCB0byB0aGUgdW5pb24gb2YgdGhlIG5hbWVzcGFjZXMgc2VsZWN0ZWQgYnkgdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIGxpc3RlZCBpbiB0aGUgbmFtZXNwYWNlcyBmaWVsZC5cbm51bGwgc2VsZWN0b3IgYW5kIG51bGwgb3IgZW1wdHkgbmFtZXNwYWNlcyBsaXN0IG1lYW5zIFwidGhpcyBwb2QncyBuYW1lc3BhY2VcIi5cbkFuIGVtcHR5IHNlbGVjdG9yICh7fSkgbWF0Y2hlcyBhbGwgbmFtZXNwYWNlcy4iLCJwcm9wZXJ0aWVzIjp7Im1hdGNoRXhwcmVzc2lvbnMiOnsiZGVzY3JpcHRpb24iOiJtYXRjaEV4cHJlc3Npb25zIGlzIGEgbGlzdCBvZiBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudHMuIFRoZSByZXF1aXJlbWVudHMgYXJlIEFORGVkLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQSBsYWJlbCBzZWxlY3RvciByZXF1aXJlbWVudCBpcyBhIHNlbGVjdG9yIHRoYXQgY29udGFpbnMgdmFsdWVzLCBhIGtleSwgYW5kIGFuIG9wZXJhdG9yIHRoYXRcbnJlbGF0ZXMgdGhlIGtleSBhbmQgdmFsdWVzLiIsInByb3BlcnRpZXMiOnsia2V5Ijp7ImRlc2NyaXB0aW9uIjoia2V5IGlzIHRoZSBsYWJlbCBrZXkgdGhhdCB0aGUgc2VsZWN0b3IgYXBwbGllcyB0by4iLCJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7ImRlc2NyaXB0aW9uIjoib3BlcmF0b3IgcmVwcmVzZW50cyBhIGtleSdzIHJlbGF0aW9uc2hpcCB0byBhIHNldCBvZiB2YWx1ZXMuXG5WYWxpZCBvcGVyYXRvcnMgYXJlIEluLCBOb3RJbiwgRXhpc3RzIGFuZCBEb2VzTm90RXhpc3QuIiwidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiZGVzY3JpcHRpb24iOiJ2YWx1ZXMgaXMgYW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcy4gSWYgdGhlIG9wZXJhdG9yIGlzIEluIG9yIE5vdEluLFxudGhlIHZhbHVlcyBhcnJheSBtdXN0IGJlIG5vbi1lbXB0eS4gSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cyBvciBEb2VzTm90RXhpc3QsXG50aGUgdmFsdWVzIGFycmF5IG11c3QgYmUgZW1wdHkuIFRoaXMgYXJyYXkgaXMgcmVwbGFjZWQgZHVyaW5nIGEgc3RyYXRlZ2ljXG5tZXJnZSBwYXRjaC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifX0sInJlcXVpcmVkIjpbImtleSIsIm9wZXJhdG9yIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJtYXRjaExhYmVscyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJ0eXBlIjoic3RyaW5nIn0sImRlc2NyaXB0aW9uIjoibWF0Y2hMYWJlbHMgaXMgYSBtYXAgb2Yge2tleSx2YWx1ZX0gcGFpcnMuIEEgc2luZ2xlIHtrZXksdmFsdWV9IGluIHRoZSBtYXRjaExhYmVsc1xubWFwIGlzIGVxdWl2YWxlbnQgdG8gYW4gZWxlbWVudCBvZiBtYXRjaEV4cHJlc3Npb25zLCB3aG9zZSBrZXkgZmllbGQgaXMgXCJrZXlcIiwgdGhlXG5vcGVyYXRvciBpcyBcIkluXCIsIGFuZCB0aGUgdmFsdWVzIGFycmF5IGNvbnRhaW5zIG9ubHkgXCJ2YWx1ZVwiLiBUaGUgcmVxdWlyZW1lbnRzIGFyZSBBTkRlZC4iLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sIm5hbWVzcGFjZXMiOnsiZGVzY3JpcHRpb24iOiJuYW1lc3BhY2VzIHNwZWNpZmllcyBhIHN0YXRpYyBsaXN0IG9mIG5hbWVzcGFjZSBuYW1lcyB0aGF0IHRoZSB0ZXJtIGFwcGxpZXMgdG8uXG5UaGUgdGVybSBpcyBhcHBsaWVkIHRvIHRoZSB1bmlvbiBvZiB0aGUgbmFtZXNwYWNlcyBsaXN0ZWQgaW4gdGhpcyBmaWVsZFxuYW5kIHRoZSBvbmVzIHNlbGVjdGVkIGJ5IG5hbWVzcGFjZVNlbGVjdG9yLlxubnVsbCBvciBlbXB0eSBuYW1lc3BhY2VzIGxpc3QgYW5kIG51bGwgbmFtZXNwYWNlU2VsZWN0b3IgbWVhbnMgXCJ0aGlzIHBvZCdzIG5hbWVzcGFjZVwiLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9LCJ0b3BvbG9neUtleSI6eyJkZXNjcmlwdGlvbiI6IlRoaXMgcG9kIHNob3VsZCBiZSBjby1sb2NhdGVkIChhZmZpbml0eSkgb3Igbm90IGNvLWxvY2F0ZWQgKGFudGktYWZmaW5pdHkpIHdpdGggdGhlIHBvZHMgbWF0Y2hpbmdcbnRoZSBsYWJlbFNlbGVjdG9yIGluIHRoZSBzcGVjaWZpZWQgbmFtZXNwYWNlcywgd2hlcmUgY28tbG9jYXRlZCBpcyBkZWZpbmVkIGFzIHJ1bm5pbmcgb24gYSBub2RlXG53aG9zZSB2YWx1ZSBvZiB0aGUgbGFiZWwgd2l0aCBrZXkgdG9wb2xvZ3lLZXkgbWF0Y2hlcyB0aGF0IG9mIGFueSBub2RlIG9uIHdoaWNoIGFueSBvZiB0aGVcbnNlbGVjdGVkIHBvZHMgaXMgcnVubmluZy5cbkVtcHR5IHRvcG9sb2d5S2V5IGlzIG5vdCBhbGxvd2VkLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInRvcG9sb2d5S2V5Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJub2RlU2VsZWN0b3IiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6ImBub2RlU2VsZWN0b3JgIGFsbG93cyBzY2hlZHVsaW5nIG9mIHBvZHMgb25seSBvbnRvIG5vZGVzIHRoYXQgaGF2ZSBlYWNoIG9mIHRoZSBzcGVjaWZpZWQgbGFiZWxzLlxuRm9yIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vYXNzaWduLXBvZC1ub2RlLy4iLCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn0sInByaW9yaXR5Q2xhc3NOYW1lIjp7ImRlc2NyaXB0aW9uIjoiSWYgc3BlY2lmaWVkLCBpbmRpY2F0ZXMgdGhlIHBvZCdzIHByaW9yaXR5LiBGb3IgZG9jdW1lbnRhdGlvbiwgcmVmZXIgdG8gaHR0cHM6Ly9rdWJlcm5ldGVzLmlvL2RvY3MvY29uY2VwdHMvc2NoZWR1bGluZy1ldmljdGlvbi9wb2QtcHJpb3JpdHktcHJlZW1wdGlvbi8jaG93LXRvLXVzZS1wcmlvcml0eS1hbmQtcHJlZW1wdGlvbi5cbklmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHQgcHJpb3JpdHkgaXMgdXNlZCwgb3IgemVybyBpZiB0aGVyZSBpcyBubyBkZWZhdWx0LiIsInR5cGUiOiJzdHJpbmcifSwidG9sZXJhdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJgdG9sZXJhdGlvbnNgIGlzIGEgbGlzdCBvZiB0b2xlcmF0aW9ucyB0aGF0IGFsbG93IHRoZSBwb2QgdG8gc2NoZWR1bGUgb250byBub2RlcyB3aXRoIG1hdGNoaW5nIHRhaW50cy5cbkZvciBkb2N1bWVudGF0aW9uLCByZWZlciB0byBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9yZWZlcmVuY2Uva3ViZXJuZXRlcy1hcGkvd29ya2xvYWQtcmVzb3VyY2VzL3BvZC12MS8jc2NoZWR1bGluZy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlRoZSBwb2QgdGhpcyBUb2xlcmF0aW9uIGlzIGF0dGFjaGVkIHRvIHRvbGVyYXRlcyBhbnkgdGFpbnQgdGhhdCBtYXRjaGVzXG50aGUgdHJpcGxlIFx1MDAzY2tleSx2YWx1ZSxlZmZlY3RcdTAwM2UgdXNpbmcgdGhlIG1hdGNoaW5nIG9wZXJhdG9yIFx1MDAzY29wZXJhdG9yXHUwMDNlLiIsInByb3BlcnRpZXMiOnsiZWZmZWN0Ijp7ImRlc2NyaXB0aW9uIjoiRWZmZWN0IGluZGljYXRlcyB0aGUgdGFpbnQgZWZmZWN0IHRvIG1hdGNoLiBFbXB0eSBtZWFucyBtYXRjaCBhbGwgdGFpbnQgZWZmZWN0cy5cbldoZW4gc3BlY2lmaWVkLCBhbGxvd2VkIHZhbHVlcyBhcmUgTm9TY2hlZHVsZSwgUHJlZmVyTm9TY2hlZHVsZSBhbmQgTm9FeGVjdXRlLiIsInR5cGUiOiJzdHJpbmcifSwia2V5Ijp7ImRlc2NyaXB0aW9uIjoiS2V5IGlzIHRoZSB0YWludCBrZXkgdGhhdCB0aGUgdG9sZXJhdGlvbiBhcHBsaWVzIHRvLiBFbXB0eSBtZWFucyBtYXRjaCBhbGwgdGFpbnQga2V5cy5cbklmIHRoZSBrZXkgaXMgZW1wdHksIG9wZXJhdG9yIG11c3QgYmUgRXhpc3RzOyB0aGlzIGNvbWJpbmF0aW9uIG1lYW5zIHRvIG1hdGNoIGFsbCB2YWx1ZXMgYW5kIGFsbCBrZXlzLiIsInR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsiZGVzY3JpcHRpb24iOiJPcGVyYXRvciByZXByZXNlbnRzIGEga2V5J3MgcmVsYXRpb25zaGlwIHRvIHRoZSB2YWx1ZS5cblZhbGlkIG9wZXJhdG9ycyBhcmUgRXhpc3RzIGFuZCBFcXVhbC4gRGVmYXVsdHMgdG8gRXF1YWwuXG5FeGlzdHMgaXMgZXF1aXZhbGVudCB0byB3aWxkY2FyZCBmb3IgdmFsdWUsIHNvIHRoYXQgYSBwb2QgY2FuXG50b2xlcmF0ZSBhbGwgdGFpbnRzIG9mIGEgcGFydGljdWxhciBjYXRlZ29yeS4iLCJ0eXBlIjoic3RyaW5nIn0sInRvbGVyYXRpb25TZWNvbmRzIjp7ImRlc2NyaXB0aW9uIjoiVG9sZXJhdGlvblNlY29uZHMgcmVwcmVzZW50cyB0aGUgcGVyaW9kIG9mIHRpbWUgdGhlIHRvbGVyYXRpb24gKHdoaWNoIG11c3QgYmVcbm9mIGVmZmVjdCBOb0V4ZWN1dGUsIG90aGVyd2lzZSB0aGlzIGZpZWxkIGlzIGlnbm9yZWQpIHRvbGVyYXRlcyB0aGUgdGFpbnQuIEJ5IGRlZmF1bHQsXG5pdCBpcyBub3Qgc2V0LCB3aGljaCBtZWFucyB0b2xlcmF0ZSB0aGUgdGFpbnQgZm9yZXZlciAoZG8gbm90IGV2aWN0KS4gWmVybyBhbmRcbm5lZ2F0aXZlIHZhbHVlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgMCAoZXZpY3QgaW1tZWRpYXRlbHkpIGJ5IHRoZSBzeXN0ZW0uIiwiZm9ybWF0IjoiaW50NjQiLCJ0eXBlIjoiaW50ZWdlciJ9LCJ2YWx1ZSI6eyJkZXNjcmlwdGlvbiI6IlZhbHVlIGlzIHRoZSB0YWludCB2YWx1ZSB0aGUgdG9sZXJhdGlvbiBtYXRjaGVzIHRvLlxuSWYgdGhlIG9wZXJhdG9yIGlzIEV4aXN0cywgdGhlIHZhbHVlIHNob3VsZCBiZSBlbXB0eSwgb3RoZXJ3aXNlIGp1c3QgYSByZWd1bGFyIHN0cmluZy4iLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9fSwidHlwZSI6Im9iamVjdCJ9LCJzZWNvbmRhcnlOZXR3b3JrcyI6eyJkZXNjcmlwdGlvbiI6IkRlZmluZXMgc2Vjb25kYXJ5IG5ldHdvcmtzIHRvIGJlIGNoZWNrZWQgZm9yIHJlc291cmNlcyBpZGVudGlmaWNhdGlvbi5cblRvIGd1YXJhbnRlZSBhIGNvcnJlY3QgaWRlbnRpZmljYXRpb24sIGluZGV4ZWQgdmFsdWVzIG11c3QgZm9ybSBhbiB1bmlxdWUgaWRlbnRpZmllciBhY3Jvc3MgdGhlIGNsdXN0ZXIuXG5JZiB0aGUgc2FtZSBpbmRleCBpcyB1c2VkIGJ5IHNldmVyYWwgcmVzb3VyY2VzLCB0aG9zZSByZXNvdXJjZXMgbWlnaHQgYmUgaW5jb3JyZWN0bHkgbGFiZWxlZC4iLCJpdGVtcyI6eyJwcm9wZXJ0aWVzIjp7ImluZGV4Ijp7ImRlc2NyaXB0aW9uIjoiYGluZGV4YCBpcyBhIGxpc3Qgb2YgZmllbGRzIHRvIHVzZSBmb3IgaW5kZXhpbmcgdGhlIHBvZHMuIFRoZXkgc2hvdWxkIGZvcm0gYSB1bmlxdWUgUG9kIGlkZW50aWZpZXIgYWNyb3NzIHRoZSBjbHVzdGVyLlxuQ2FuIGJlIGFueSBvZjogYE1BQ2AsIGBJUGAsIGBJbnRlcmZhY2VgLlxuRmllbGRzIGFic2VudCBmcm9tIHRoZSAnazhzLnYxLmNuaS5jbmNmLmlvL25ldHdvcmstc3RhdHVzJyBhbm5vdGF0aW9uIG11c3Qgbm90IGJlIGFkZGVkIHRvIHRoZSBpbmRleC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IkZpZWxkIHRvIGluZGV4IGZvciBzZWNvbmRhcnkgbmV0d29yayBwb2QgaWRlbnRpZmljYXRpb24sIGNhbiBiZSBhbnkgb2Y6IGBNQUNgLCBgSVBgLCBgSW50ZXJmYWNlYC4iLCJlbnVtIjpbIk1BQyIsIklQIiwiSW50ZXJmYWNlIl0sInR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJgbmFtZWAgc2hvdWxkIG1hdGNoIHRoZSBuZXR3b3JrIG5hbWUgYXMgdmlzaWJsZSBpbiB0aGUgcG9kcyBhbm5vdGF0aW9uICdrOHMudjEuY25pLmNuY2YuaW8vbmV0d29yay1zdGF0dXMnLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImluZGV4IiwibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9fSwidHlwZSI6Im9iamVjdCJ9LCJjbHVzdGVyTmFtZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJgY2x1c3Rlck5hbWVgIGlzIHRoZSBuYW1lIG9mIHRoZSBjbHVzdGVyIHRvIGFwcGVhciBpbiB0aGUgZmxvd3MgZGF0YS4gVGhpcyBpcyB1c2VmdWwgaW4gYSBtdWx0aS1jbHVzdGVyIGNvbnRleHQuIFdoZW4gdXNpbmcgT3BlblNoaWZ0LCBsZWF2ZSBlbXB0eSB0byBtYWtlIGl0IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZC4iLCJ0eXBlIjoic3RyaW5nIn0sImRlZHVwZXIiOnsiZGVzY3JpcHRpb24iOiJgZGVkdXBlcmAgYWxsb3dzIHlvdSB0byBzYW1wbGUgb3IgZHJvcCBmbG93cyBpZGVudGlmaWVkIGFzIGR1cGxpY2F0ZXMsIGluIG9yZGVyIHRvIHNhdmUgb24gcmVzb3VyY2UgdXNhZ2UuIiwicHJvcGVydGllcyI6eyJtb2RlIjp7ImRlZmF1bHQiOiJEaXNhYmxlZCIsImRlc2NyaXB0aW9uIjoiU2V0IHRoZSBQcm9jZXNzb3IgZGUtZHVwbGljYXRpb24gbW9kZS4gSXQgY29tZXMgaW4gYWRkaXRpb24gdG8gdGhlIEFnZW50LWJhc2VkIGRlZHVwbGljYXRpb24sIHNpbmNlIHRoZSBBZ2VudCBjYW5ub3QgZGUtZHVwbGljYXRlIHNhbWUgZmxvd3MgcmVwb3J0ZWQgZnJvbSBkaWZmZXJlbnQgbm9kZXMuXHUwMDNjYnJcdTAwM2Vcbi0gVXNlIGBEcm9wYCB0byBkcm9wIGV2ZXJ5IGZsb3cgY29uc2lkZXJlZCBhcyBkdXBsaWNhdGVzLCBhbGxvd2luZyBzYXZpbmcgbW9yZSBvbiByZXNvdXJjZSB1c2FnZSBidXQgcG90ZW50aWFsbHkgbG9zaW5nIHNvbWUgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgbmV0d29yayBpbnRlcmZhY2VzIHVzZWQgZnJvbSBwZWVyLCBvciBuZXR3b3JrIGV2ZW50cy5cdTAwM2Niclx1MDAzZVxuLSBVc2UgYFNhbXBsZWAgdG8gcmFuZG9tbHkga2VlcCBvbmx5IG9uZSBmbG93IG9uIDUwLCB3aGljaCBpcyB0aGUgZGVmYXVsdCwgYW1vbmcgdGhlIG9uZXMgY29uc2lkZXJlZCBhcyBkdXBsaWNhdGVzLiBUaGlzIGlzIGEgY29tcHJvbWlzZSBiZXR3ZWVuIGRyb3BwaW5nIGV2ZXJ5IGR1cGxpY2F0ZSBvciBrZWVwaW5nIGV2ZXJ5IGR1cGxpY2F0ZS4gVGhpcyBzYW1wbGluZyBhY3Rpb24gY29tZXMgaW4gYWRkaXRpb24gdG8gdGhlIEFnZW50LWJhc2VkIHNhbXBsaW5nLiBJZiBib3RoIEFnZW50IGFuZCBQcm9jZXNzb3Igc2FtcGxpbmcgdmFsdWVzIGFyZSBgNTBgLCB0aGUgY29tYmluZWQgc2FtcGxpbmcgaXMgMToyNTAwLlx1MDAzY2JyXHUwMDNlXG4tIFVzZSBgRGlzYWJsZWRgIHRvIHR1cm4gb2ZmIFByb2Nlc3Nvci1iYXNlZCBkZS1kdXBsaWNhdGlvbi5cdTAwM2Niclx1MDAzZSIsImVudW0iOlsiRGlzYWJsZWQiLCJEcm9wIiwiU2FtcGxlIl0sInR5cGUiOiJzdHJpbmcifSwic2FtcGxpbmciOnsiZGVmYXVsdCI6NTAsImRlc2NyaXB0aW9uIjoiYHNhbXBsaW5nYCBpcyB0aGUgc2FtcGxpbmcgcmF0aW8gd2hlbiBkZWR1cGVyIGBtb2RlYCBpcyBgU2FtcGxlYC4gRm9yIGV4YW1wbGUsIGEgdmFsdWUgb2YgYDUwYCBtZWFucyB0aGF0IDEgZmxvdyBpbiA1MCBpcyBzYW1wbGVkLiIsImZvcm1hdCI6ImludDMyIiwibWluaW11bSI6MCwidHlwZSI6ImludGVnZXIifX0sInR5cGUiOiJvYmplY3QifSwiZmlsdGVycyI6eyJkZXNjcmlwdGlvbiI6ImBmaWx0ZXJzYCBsZXRzIHlvdSBkZWZpbmUgY3VzdG9tIGZpbHRlcnMgdG8gbGltaXQgdGhlIGFtb3VudCBvZiBnZW5lcmF0ZWQgZmxvd3MuXG5UaGVzZSBmaWx0ZXJzIHByb3ZpZGUgbW9yZSBmbGV4aWJpbGl0eSB0aGFuIHRoZSBlQlBGIEFnZW50IGZpbHRlcnMgKGluIGBzcGVjLmFnZW50LmVicGYuZmxvd0ZpbHRlcmApLCBzdWNoIGFzIGFsbG93aW5nIHRvIGZpbHRlciBieSBLdWJlcm5ldGVzIG5hbWVzcGFjZSxcbmJ1dCB3aXRoIGEgbGVzc2VyIGltcHJvdmVtZW50IGluIHBlcmZvcm1hbmNlLiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiYEZMUEZpbHRlclNldGAgZGVmaW5lcyB0aGUgZGVzaXJlZCBjb25maWd1cmF0aW9uIGZvciBGTFAtYmFzZWQgZmlsdGVyaW5nIHNhdGlzZnlpbmcgYWxsIGNvbmRpdGlvbnMuIiwicHJvcGVydGllcyI6eyJvdXRwdXRUYXJnZXQiOnsiZGVzY3JpcHRpb24iOiJJZiBzcGVjaWZpZWQsIHRoZXNlIGZpbHRlcnMgdGFyZ2V0IGEgc2luZ2xlIG91dHB1dDogYExva2lgLCBgTWV0cmljc2Agb3IgYEV4cG9ydGVyc2AuIEJ5IGRlZmF1bHQsIGFsbCBvdXRwdXRzIGFyZSB0YXJnZXRlZC4iLCJlbnVtIjpbIiIsIkxva2kiLCJNZXRyaWNzIiwiRXhwb3J0ZXJzIl0sInR5cGUiOiJzdHJpbmcifSwicXVlcnkiOnsiZGVzY3JpcHRpb24iOiJBIHF1ZXJ5IHRoYXQgc2VsZWN0cyB0aGUgbmV0d29yayBmbG93cyB0byBrZWVwLiBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgcXVlcnkgbGFuZ3VhZ2UgaW4gaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9mbG93bG9ncy1waXBlbGluZS9ibG9iL21haW4vZG9jcy9maWx0ZXJpbmcubWQuIiwidHlwZSI6InN0cmluZyJ9LCJzYW1wbGluZyI6eyJkZXNjcmlwdGlvbiI6ImBzYW1wbGluZ2AgaXMgYW4gb3B0aW9uYWwgc2FtcGxpbmcgcmF0aW8gdG8gYXBwbHkgdG8gdGhpcyBmaWx0ZXIuIEZvciBleGFtcGxlLCBhIHZhbHVlIG9mIGA1MGAgbWVhbnMgdGhhdCAxIG1hdGNoaW5nIGZsb3cgaW4gNTAgaXMgc2FtcGxlZC4iLCJmb3JtYXQiOiJpbnQzMiIsIm1pbmltdW0iOjAsInR5cGUiOiJpbnRlZ2VyIn19LCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJpbWFnZVB1bGxQb2xpY3kiOnsiZGVmYXVsdCI6IklmTm90UHJlc2VudCIsImRlc2NyaXB0aW9uIjoiYGltYWdlUHVsbFBvbGljeWAgaXMgdGhlIEt1YmVybmV0ZXMgcHVsbCBwb2xpY3kgZm9yIHRoZSBpbWFnZSBkZWZpbmVkIGFib3ZlIiwiZW51bSI6WyJJZk5vdFByZXNlbnQiLCJBbHdheXMiLCJOZXZlciJdLCJ0eXBlIjoic3RyaW5nIn0sImthZmthQ29uc3VtZXJBdXRvc2NhbGVyIjp7ImRlc2NyaXB0aW9uIjoiYGthZmthQ29uc3VtZXJBdXRvc2NhbGVyYCBpcyB0aGUgc3BlYyBvZiBhIGhvcml6b250YWwgcG9kIGF1dG9zY2FsZXIgdG8gc2V0IHVwIGZvciBgZmxvd2xvZ3MtcGlwZWxpbmUtdHJhbnNmb3JtZXJgLCB3aGljaCBjb25zdW1lcyBLYWZrYSBtZXNzYWdlcy5cblRoaXMgc2V0dGluZyBpcyBpZ25vcmVkIHdoZW4gS2Fma2EgaXMgZGlzYWJsZWQuIiwicHJvcGVydGllcyI6eyJtYXhSZXBsaWNhcyI6eyJkZWZhdWx0IjozLCJkZXNjcmlwdGlvbiI6ImBtYXhSZXBsaWNhc2AgaXMgdGhlIHVwcGVyIGxpbWl0IGZvciB0aGUgbnVtYmVyIG9mIHBvZHMgdGhhdCBjYW4gYmUgc2V0IGJ5IHRoZSBhdXRvc2NhbGVyOyBjYW5ub3QgYmUgc21hbGxlciB0aGFuIE1pblJlcGxpY2FzLiIsImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwibWV0cmljcyI6eyJkZXNjcmlwdGlvbiI6Ik1ldHJpY3MgdXNlZCBieSB0aGUgcG9kIGF1dG9zY2FsZXIuIEZvciBkb2N1bWVudGF0aW9uLCByZWZlciB0byBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9yZWZlcmVuY2Uva3ViZXJuZXRlcy1hcGkvd29ya2xvYWQtcmVzb3VyY2VzL2hvcml6b250YWwtcG9kLWF1dG9zY2FsZXItdjIvIiwiaXRlbXMiOnsicHJvcGVydGllcyI6eyJjb250YWluZXJSZXNvdXJjZSI6eyJwcm9wZXJ0aWVzIjp7ImNvbnRhaW5lciI6eyJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsidHlwZSI6InN0cmluZyJ9LCJ0YXJnZXQiOnsicHJvcGVydGllcyI6eyJhdmVyYWdlVXRpbGl6YXRpb24iOnsiZm9ybWF0IjoiaW50MzIiLCJ0eXBlIjoiaW50ZWdlciJ9LCJhdmVyYWdlVmFsdWUiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX0sInR5cGUiOnsidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9fSwicmVxdWlyZWQiOlsiY29udGFpbmVyIiwibmFtZSIsInRhcmdldCJdLCJ0eXBlIjoib2JqZWN0In0sImV4dGVybmFsIjp7InByb3BlcnRpZXMiOnsibWV0cmljIjp7InByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInNlbGVjdG9yIjp7InByb3BlcnRpZXMiOnsibWF0Y2hFeHByZXNzaW9ucyI6eyJpdGVtcyI6eyJwcm9wZXJ0aWVzIjp7ImtleSI6eyJ0eXBlIjoic3RyaW5nIn0sIm9wZXJhdG9yIjp7InR5cGUiOiJzdHJpbmcifSwidmFsdWVzIjp7Iml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsia2V5Iiwib3BlcmF0b3IiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn0sIm1hdGNoTGFiZWxzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCIsIngta3ViZXJuZXRlcy1tYXAtdHlwZSI6ImF0b21pYyJ9fSwicmVxdWlyZWQiOlsibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInRhcmdldCI6eyJwcm9wZXJ0aWVzIjp7ImF2ZXJhZ2VVdGlsaXphdGlvbiI6eyJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sImF2ZXJhZ2VWYWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sInZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJtZXRyaWMiLCJ0YXJnZXQiXSwidHlwZSI6Im9iamVjdCJ9LCJvYmplY3QiOnsicHJvcGVydGllcyI6eyJkZXNjcmliZWRPYmplY3QiOnsicHJvcGVydGllcyI6eyJhcGlWZXJzaW9uIjp7InR5cGUiOiJzdHJpbmcifSwia2luZCI6eyJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsia2luZCIsIm5hbWUiXSwidHlwZSI6Im9iamVjdCJ9LCJtZXRyaWMiOnsicHJvcGVydGllcyI6eyJuYW1lIjp7InR5cGUiOiJzdHJpbmcifSwic2VsZWN0b3IiOnsicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7Iml0ZW1zIjp7InByb3BlcnRpZXMiOnsia2V5Ijp7InR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwidGFyZ2V0Ijp7InByb3BlcnRpZXMiOnsiYXZlcmFnZVV0aWxpemF0aW9uIjp7ImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwiYXZlcmFnZVZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifSwidmFsdWUiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbImRlc2NyaWJlZE9iamVjdCIsIm1ldHJpYyIsInRhcmdldCJdLCJ0eXBlIjoib2JqZWN0In0sInBvZHMiOnsicHJvcGVydGllcyI6eyJtZXRyaWMiOnsicHJvcGVydGllcyI6eyJuYW1lIjp7InR5cGUiOiJzdHJpbmcifSwic2VsZWN0b3IiOnsicHJvcGVydGllcyI6eyJtYXRjaEV4cHJlc3Npb25zIjp7Iml0ZW1zIjp7InByb3BlcnRpZXMiOnsia2V5Ijp7InR5cGUiOiJzdHJpbmcifSwib3BlcmF0b3IiOnsidHlwZSI6InN0cmluZyJ9LCJ2YWx1ZXMiOnsiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkiLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJrZXkiLCJvcGVyYXRvciJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSIsIngta3ViZXJuZXRlcy1saXN0LXR5cGUiOiJhdG9taWMifSwibWF0Y2hMYWJlbHMiOnsiYWRkaXRpb25hbFByb3BlcnRpZXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0IiwieC1rdWJlcm5ldGVzLW1hcC10eXBlIjoiYXRvbWljIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwidGFyZ2V0Ijp7InByb3BlcnRpZXMiOnsiYXZlcmFnZVV0aWxpemF0aW9uIjp7ImZvcm1hdCI6ImludDMyIiwidHlwZSI6ImludGVnZXIifSwiYXZlcmFnZVZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJ0eXBlIjp7InR5cGUiOiJzdHJpbmcifSwidmFsdWUiOnsiYW55T2YiOlt7InR5cGUiOiJpbnRlZ2VyIn0seyJ0eXBlIjoic3RyaW5nIn1dLCJwYXR0ZXJuIjoiXihcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSgoW0tNR1RQRV1pKXxbbnVta01HVFBFXXwoW2VFXShcXCt8LSk/KChbMC05XSsoXFwuWzAtOV0qKT8pfChcXC5bMC05XSspKSkpPyQiLCJ4LWt1YmVybmV0ZXMtaW50LW9yLXN0cmluZyI6dHJ1ZX19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifX0sInJlcXVpcmVkIjpbIm1ldHJpYyIsInRhcmdldCJdLCJ0eXBlIjoib2JqZWN0In0sInJlc291cmNlIjp7InByb3BlcnRpZXMiOnsibmFtZSI6eyJ0eXBlIjoic3RyaW5nIn0sInRhcmdldCI6eyJwcm9wZXJ0aWVzIjp7ImF2ZXJhZ2VVdGlsaXphdGlvbiI6eyJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sImF2ZXJhZ2VWYWx1ZSI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn0sInZhbHVlIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9fSwicmVxdWlyZWQiOlsidHlwZSJdLCJ0eXBlIjoib2JqZWN0In19LCJyZXF1aXJlZCI6WyJuYW1lIiwidGFyZ2V0Il0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6eyJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sIm1pblJlcGxpY2FzIjp7ImRlc2NyaXB0aW9uIjoiYG1pblJlcGxpY2FzYCBpcyB0aGUgbG93ZXIgbGltaXQgZm9yIHRoZSBudW1iZXIgb2YgcmVwbGljYXMgdG8gd2hpY2ggdGhlIGF1dG9zY2FsZXJcbmNhbiBzY2FsZSBkb3duLiBJdCBkZWZhdWx0cyB0byAxIHBvZC4gbWluUmVwbGljYXMgaXMgYWxsb3dlZCB0byBiZSAwIGlmIHRoZVxuYWxwaGEgZmVhdHVyZSBnYXRlIEhQQVNjYWxlVG9aZXJvIGlzIGVuYWJsZWQgYW5kIGF0IGxlYXN0IG9uZSBPYmplY3Qgb3IgRXh0ZXJuYWxcbm1ldHJpYyBpcyBjb25maWd1cmVkLiBTY2FsaW5nIGlzIGFjdGl2ZSBhcyBsb25nIGFzIGF0IGxlYXN0IG9uZSBtZXRyaWMgdmFsdWUgaXNcbmF2YWlsYWJsZS4iLCJmb3JtYXQiOiJpbnQzMiIsInR5cGUiOiJpbnRlZ2VyIn0sInN0YXR1cyI6eyJkZWZhdWx0IjoiRGlzYWJsZWQiLCJkZXNjcmlwdGlvbiI6ImBzdGF0dXNgIGRlc2NyaWJlcyB0aGUgZGVzaXJlZCBzdGF0dXMgcmVnYXJkaW5nIGRlcGxveWluZyBhbiBob3Jpem9udGFsIHBvZCBhdXRvc2NhbGVyLlx1MDAzY2JyXHUwMDNlXG4tIGBEaXNhYmxlZGAgZG9lcyBub3QgZGVwbG95IGFuIGhvcml6b250YWwgcG9kIGF1dG9zY2FsZXIuXHUwMDNjYnJcdTAwM2Vcbi0gYEVuYWJsZWRgIGRlcGxveXMgYW4gaG9yaXpvbnRhbCBwb2QgYXV0b3NjYWxlci5cdTAwM2Niclx1MDAzZSIsImVudW0iOlsiRGlzYWJsZWQiLCJFbmFibGVkIl0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwia2Fma2FDb25zdW1lckJhdGNoU2l6ZSI6eyJkZWZhdWx0IjoxMDQ4NTc2MCwiZGVzY3JpcHRpb24iOiJga2Fma2FDb25zdW1lckJhdGNoU2l6ZWAgaW5kaWNhdGVzIHRvIHRoZSBicm9rZXIgdGhlIG1heGltdW0gYmF0Y2ggc2l6ZSwgaW4gYnl0ZXMsIHRoYXQgdGhlIGNvbnN1bWVyIGFjY2VwdHMuIElnbm9yZWQgd2hlbiBub3QgdXNpbmcgS2Fma2EuIERlZmF1bHQ6IDEwTUIuIiwidHlwZSI6ImludGVnZXIifSwia2Fma2FDb25zdW1lclF1ZXVlQ2FwYWNpdHkiOnsiZGVmYXVsdCI6MTAwMCwiZGVzY3JpcHRpb24iOiJga2Fma2FDb25zdW1lclF1ZXVlQ2FwYWNpdHlgIGRlZmluZXMgdGhlIGNhcGFjaXR5IG9mIHRoZSBpbnRlcm5hbCBtZXNzYWdlIHF1ZXVlIHVzZWQgaW4gdGhlIEthZmthIGNvbnN1bWVyIGNsaWVudC4gSWdub3JlZCB3aGVuIG5vdCB1c2luZyBLYWZrYS4iLCJ0eXBlIjoiaW50ZWdlciJ9LCJrYWZrYUNvbnN1bWVyUmVwbGljYXMiOnsiZGVmYXVsdCI6MywiZGVzY3JpcHRpb24iOiJga2Fma2FDb25zdW1lclJlcGxpY2FzYCBkZWZpbmVzIHRoZSBudW1iZXIgb2YgcmVwbGljYXMgKHBvZHMpIHRvIHN0YXJ0IGZvciBgZmxvd2xvZ3MtcGlwZWxpbmUtdHJhbnNmb3JtZXJgLCB3aGljaCBjb25zdW1lcyBLYWZrYSBtZXNzYWdlcy5cblRoaXMgc2V0dGluZyBpcyBpZ25vcmVkIHdoZW4gS2Fma2EgaXMgZGlzYWJsZWQuIiwiZm9ybWF0IjoiaW50MzIiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJsb2dMZXZlbCI6eyJkZWZhdWx0IjoiaW5mbyIsImRlc2NyaXB0aW9uIjoiYGxvZ0xldmVsYCBvZiB0aGUgcHJvY2Vzc29yIHJ1bnRpbWUiLCJlbnVtIjpbInRyYWNlIiwiZGVidWciLCJpbmZvIiwid2FybiIsImVycm9yIiwiZmF0YWwiLCJwYW5pYyJdLCJ0eXBlIjoic3RyaW5nIn0sImxvZ1R5cGVzIjp7ImRlZmF1bHQiOiJGbG93cyIsImRlc2NyaXB0aW9uIjoiYGxvZ1R5cGVzYCBkZWZpbmVzIHRoZSBkZXNpcmVkIHJlY29yZCB0eXBlcyB0byBnZW5lcmF0ZS4gUG9zc2libGUgdmFsdWVzIGFyZTpcdTAwM2Niclx1MDAzZVxuLSBgRmxvd3NgIHRvIGV4cG9ydCByZWd1bGFyIG5ldHdvcmsgZmxvd3MuIFRoaXMgaXMgdGhlIGRlZmF1bHQuXHUwMDNjYnJcdTAwM2Vcbi0gYENvbnZlcnNhdGlvbnNgIHRvIGdlbmVyYXRlIGV2ZW50cyBmb3Igc3RhcnRlZCBjb252ZXJzYXRpb25zLCBlbmRlZCBjb252ZXJzYXRpb25zIGFzIHdlbGwgYXMgcGVyaW9kaWMgXCJ0aWNrXCIgdXBkYXRlcy4gTm90ZSB0aGF0IGluIHRoaXMgbW9kZSwgUHJvbWV0aGV1cyBtZXRyaWNzIGFyZSBub3QgYWNjdXJhdGUgb24gbG9uZy1zdGFuZGluZyBjb252ZXJzYXRpb25zLlx1MDAzY2JyXHUwMDNlXG4tIGBFbmRlZENvbnZlcnNhdGlvbnNgIHRvIGdlbmVyYXRlIG9ubHkgZW5kZWQgY29udmVyc2F0aW9ucyBldmVudHMuIE5vdGUgdGhhdCBpbiB0aGlzIG1vZGUsIFByb21ldGhldXMgbWV0cmljcyBhcmUgbm90IGFjY3VyYXRlIG9uIGxvbmctc3RhbmRpbmcgY29udmVyc2F0aW9ucy5cdTAwM2Niclx1MDAzZVxuLSBgQWxsYCB0byBnZW5lcmF0ZSBib3RoIG5ldHdvcmsgZmxvd3MgYW5kIGFsbCBjb252ZXJzYXRpb25zIGV2ZW50cy4gSXQgaXMgbm90IHJlY29tbWVuZGVkIGR1ZSB0byB0aGUgaW1wYWN0IG9uIHJlc291cmNlcyBmb290cHJpbnQuXHUwMDNjYnJcdTAwM2UiLCJlbnVtIjpbIkZsb3dzIiwiQ29udmVyc2F0aW9ucyIsIkVuZGVkQ29udmVyc2F0aW9ucyIsIkFsbCJdLCJ0eXBlIjoic3RyaW5nIn0sIm1ldHJpY3MiOnsiZGVzY3JpcHRpb24iOiJgTWV0cmljc2AgZGVmaW5lIHRoZSBwcm9jZXNzb3IgY29uZmlndXJhdGlvbiByZWdhcmRpbmcgbWV0cmljcyIsInByb3BlcnRpZXMiOnsiZGlzYWJsZUFsZXJ0cyI6eyJkZXNjcmlwdGlvbiI6ImBkaXNhYmxlQWxlcnRzYCBpcyBhIGxpc3Qgb2YgYWxlcnRzIHRoYXQgc2hvdWxkIGJlIGRpc2FibGVkLlxuUG9zc2libGUgdmFsdWVzIGFyZTpcdTAwM2Niclx1MDAzZVxuYE5ldE9ic2Vydk5vRmxvd3NgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBubyBmbG93cyBhcmUgYmVpbmcgb2JzZXJ2ZWQgZm9yIGEgY2VydGFpbiBwZXJpb2QuXHUwMDNjYnJcdTAwM2VcbmBOZXRPYnNlcnZMb2tpRXJyb3JgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBmbG93cyBhcmUgYmVpbmcgZHJvcHBlZCBkdWUgdG8gTG9raSBlcnJvcnMuXHUwMDNjYnJcdTAwM2UiLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgYSBwcm9jZXNzb3IgYWxlcnQuXG5Qb3NzaWJsZSB2YWx1ZXMgYXJlOlx1MDAzY2JyXHUwMDNlXG4tIGBOZXRPYnNlcnZOb0Zsb3dzYCwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gbm8gZmxvd3MgYXJlIGJlaW5nIG9ic2VydmVkIGZvciBhIGNlcnRhaW4gcGVyaW9kLlx1MDAzY2JyXHUwMDNlXG4tIGBOZXRPYnNlcnZMb2tpRXJyb3JgLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBmbG93cyBhcmUgYmVpbmcgZHJvcHBlZCBkdWUgdG8gTG9raSBlcnJvcnMuXHUwMDNjYnJcdTAwM2UiLCJlbnVtIjpbIk5ldE9ic2Vydk5vRmxvd3MiLCJOZXRPYnNlcnZMb2tpRXJyb3IiXSwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifSwiaW5jbHVkZUxpc3QiOnsiZGVzY3JpcHRpb24iOiJgaW5jbHVkZUxpc3RgIGlzIGEgbGlzdCBvZiBtZXRyaWMgbmFtZXMgdG8gc3BlY2lmeSB3aGljaCBvbmVzIHRvIGdlbmVyYXRlLlxuVGhlIG5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIG5hbWVzIGluIFByb21ldGhldXMgd2l0aG91dCB0aGUgcHJlZml4LiBGb3IgZXhhbXBsZSxcbmBuYW1lc3BhY2VfZWdyZXNzX3BhY2tldHNfdG90YWxgIHNob3dzIHVwIGFzIGBuZXRvYnNlcnZfbmFtZXNwYWNlX2VncmVzc19wYWNrZXRzX3RvdGFsYCBpbiBQcm9tZXRoZXVzLlxuTm90ZSB0aGF0IHRoZSBtb3JlIG1ldHJpY3MgeW91IGFkZCwgdGhlIGJpZ2dlciBpcyB0aGUgaW1wYWN0IG9uIFByb21ldGhldXMgd29ya2xvYWQgcmVzb3VyY2VzLlxuTWV0cmljcyBlbmFibGVkIGJ5IGRlZmF1bHQgYXJlOlxuYG5hbWVzcGFjZV9mbG93c190b3RhbGAsIGBub2RlX2luZ3Jlc3NfYnl0ZXNfdG90YWxgLCBgbm9kZV9lZ3Jlc3NfYnl0ZXNfdG90YWxgLCBgd29ya2xvYWRfaW5ncmVzc19ieXRlc190b3RhbGAsXG5gd29ya2xvYWRfZWdyZXNzX2J5dGVzX3RvdGFsYCwgYG5hbWVzcGFjZV9kcm9wX3BhY2tldHNfdG90YWxgICh3aGVuIGBQYWNrZXREcm9wYCBmZWF0dXJlIGlzIGVuYWJsZWQpLFxuYG5hbWVzcGFjZV9ydHRfc2Vjb25kc2AgKHdoZW4gYEZsb3dSVFRgIGZlYXR1cmUgaXMgZW5hYmxlZCksIGBuYW1lc3BhY2VfZG5zX2xhdGVuY3lfc2Vjb25kc2AgKHdoZW4gYEROU1RyYWNraW5nYCBmZWF0dXJlIGlzIGVuYWJsZWQpLFxuYG5hbWVzcGFjZV9uZXR3b3JrX3BvbGljeV9ldmVudHNfdG90YWxgICh3aGVuIGBOZXR3b3JrRXZlbnRzYCBmZWF0dXJlIGlzIGVuYWJsZWQpLlxuTW9yZSBpbmZvcm1hdGlvbiwgd2l0aCBmdWxsIGxpc3Qgb2YgYXZhaWxhYmxlIG1ldHJpY3M6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LW9wZXJhdG9yL2Jsb2IvbWFpbi9kb2NzL01ldHJpY3MubWQiLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6Ik1ldHJpYyBuYW1lLiBNb3JlIGluZm9ybWF0aW9uIGluIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LW9wZXJhdG9yL2Jsb2IvbWFpbi9kb2NzL01ldHJpY3MubWQuIiwiZW51bSI6WyJuYW1lc3BhY2VfZWdyZXNzX2J5dGVzX3RvdGFsIiwibmFtZXNwYWNlX2VncmVzc19wYWNrZXRzX3RvdGFsIiwibmFtZXNwYWNlX2luZ3Jlc3NfYnl0ZXNfdG90YWwiLCJuYW1lc3BhY2VfaW5ncmVzc19wYWNrZXRzX3RvdGFsIiwibmFtZXNwYWNlX2Zsb3dzX3RvdGFsIiwibm9kZV9lZ3Jlc3NfYnl0ZXNfdG90YWwiLCJub2RlX2VncmVzc19wYWNrZXRzX3RvdGFsIiwibm9kZV9pbmdyZXNzX2J5dGVzX3RvdGFsIiwibm9kZV9pbmdyZXNzX3BhY2tldHNfdG90YWwiLCJub2RlX2Zsb3dzX3RvdGFsIiwid29ya2xvYWRfZWdyZXNzX2J5dGVzX3RvdGFsIiwid29ya2xvYWRfZWdyZXNzX3BhY2tldHNfdG90YWwiLCJ3b3JrbG9hZF9pbmdyZXNzX2J5dGVzX3RvdGFsIiwid29ya2xvYWRfaW5ncmVzc19wYWNrZXRzX3RvdGFsIiwid29ya2xvYWRfZmxvd3NfdG90YWwiLCJuYW1lc3BhY2VfZHJvcF9ieXRlc190b3RhbCIsIm5hbWVzcGFjZV9kcm9wX3BhY2tldHNfdG90YWwiLCJub2RlX2Ryb3BfYnl0ZXNfdG90YWwiLCJub2RlX2Ryb3BfcGFja2V0c190b3RhbCIsIndvcmtsb2FkX2Ryb3BfYnl0ZXNfdG90YWwiLCJ3b3JrbG9hZF9kcm9wX3BhY2tldHNfdG90YWwiLCJuYW1lc3BhY2VfcnR0X3NlY29uZHMiLCJub2RlX3J0dF9zZWNvbmRzIiwid29ya2xvYWRfcnR0X3NlY29uZHMiLCJuYW1lc3BhY2VfZG5zX2xhdGVuY3lfc2Vjb25kcyIsIm5vZGVfZG5zX2xhdGVuY3lfc2Vjb25kcyIsIndvcmtsb2FkX2Ruc19sYXRlbmN5X3NlY29uZHMiLCJub2RlX25ldHdvcmtfcG9saWN5X2V2ZW50c190b3RhbCIsIm5hbWVzcGFjZV9uZXR3b3JrX3BvbGljeV9ldmVudHNfdG90YWwiLCJ3b3JrbG9hZF9uZXR3b3JrX3BvbGljeV9ldmVudHNfdG90YWwiLCJub2RlX2lwc2VjX2Zsb3dzX3RvdGFsIiwibm9kZV90b19ub2RlX2luZ3Jlc3NfZmxvd3NfdG90YWwiXSwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifSwic2VydmVyIjp7ImRlc2NyaXB0aW9uIjoiTWV0cmljcyBzZXJ2ZXIgZW5kcG9pbnQgY29uZmlndXJhdGlvbiBmb3IgUHJvbWV0aGV1cyBzY3JhcGVyIiwicHJvcGVydGllcyI6eyJwb3J0Ijp7ImRlc2NyaXB0aW9uIjoiVGhlIG1ldHJpY3Mgc2VydmVyIEhUVFAgcG9ydC4iLCJmb3JtYXQiOiJpbnQzMiIsIm1heGltdW0iOjY1NTM1LCJtaW5pbXVtIjoxLCJ0eXBlIjoiaW50ZWdlciJ9LCJ0bHMiOnsiZGVzY3JpcHRpb24iOiJUTFMgY29uZmlndXJhdGlvbi4iLCJwcm9wZXJ0aWVzIjp7Imluc2VjdXJlU2tpcFZlcmlmeSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJgaW5zZWN1cmVTa2lwVmVyaWZ5YCBhbGxvd3Mgc2tpcHBpbmcgY2xpZW50LXNpZGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBwcm92aWRlZCBjZXJ0aWZpY2F0ZS5cbklmIHNldCB0byBgdHJ1ZWAsIHRoZSBgcHJvdmlkZWRDYUZpbGVgIGZpZWxkIGlzIGlnbm9yZWQuIiwidHlwZSI6ImJvb2xlYW4ifSwicHJvdmlkZWQiOnsiZGVzY3JpcHRpb24iOiJUTFMgY29uZmlndXJhdGlvbiB3aGVuIGB0eXBlYCBpcyBzZXQgdG8gYFByb3ZpZGVkYC4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sInByb3ZpZGVkQ2FGaWxlIjp7ImRlc2NyaXB0aW9uIjoiUmVmZXJlbmNlIHRvIHRoZSBDQSBmaWxlIHdoZW4gYHR5cGVgIGlzIHNldCB0byBgUHJvdmlkZWRgLiIsInByb3BlcnRpZXMiOnsiZmlsZSI6eyJkZXNjcmlwdGlvbiI6IkZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwibmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgdGhlIGZpbGUuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIHRoZSBmaWxlLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBmaWxlIHJlZmVyZW5jZTogYGNvbmZpZ21hcGAgb3IgYHNlY3JldGAuIiwiZW51bSI6WyJjb25maWdtYXAiLCJzZWNyZXQiXSwidHlwZSI6InN0cmluZyJ9fSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImRlZmF1bHQiOiJEaXNhYmxlZCIsImRlc2NyaXB0aW9uIjoiU2VsZWN0IHRoZSB0eXBlIG9mIFRMUyBjb25maWd1cmF0aW9uOlx1MDAzY2JyXHUwMDNlXG4tIGBEaXNhYmxlZGAgKGRlZmF1bHQpIHRvIG5vdCBjb25maWd1cmUgVExTIGZvciB0aGUgZW5kcG9pbnQuXG4tIGBQcm92aWRlZGAgdG8gbWFudWFsbHkgcHJvdmlkZSBjZXJ0IGZpbGUgYW5kIGEga2V5IGZpbGUuIFtVbnN1cHBvcnRlZCAoKildLlxuLSBgQXV0b2AgdG8gdXNlIE9wZW5TaGlmdCBhdXRvIGdlbmVyYXRlZCBjZXJ0aWZpY2F0ZSB1c2luZyBhbm5vdGF0aW9ucy4iLCJlbnVtIjpbIkRpc2FibGVkIiwiUHJvdmlkZWQiLCJBdXRvIl0sInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJtdWx0aUNsdXN0ZXJEZXBsb3ltZW50Ijp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6IlNldCBgbXVsdGlDbHVzdGVyRGVwbG95bWVudGAgdG8gYHRydWVgIHRvIGVuYWJsZSBtdWx0aSBjbHVzdGVycyBmZWF0dXJlLiBUaGlzIGFkZHMgYGNsdXN0ZXJOYW1lYCBsYWJlbCB0byBmbG93cyBkYXRhIiwidHlwZSI6ImJvb2xlYW4ifSwicmVzb3VyY2VzIjp7ImRlZmF1bHQiOnsibGltaXRzIjp7Im1lbW9yeSI6IjgwME1pIn0sInJlcXVlc3RzIjp7ImNwdSI6IjEwMG0iLCJtZW1vcnkiOiIxMDBNaSJ9fSwiZGVzY3JpcHRpb24iOiJgcmVzb3VyY2VzYCBhcmUgdGhlIGNvbXB1dGUgcmVzb3VyY2VzIHJlcXVpcmVkIGJ5IHRoaXMgY29udGFpbmVyLlxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJwcm9wZXJ0aWVzIjp7ImNsYWltcyI6eyJkZXNjcmlwdGlvbiI6IkNsYWltcyBsaXN0cyB0aGUgbmFtZXMgb2YgcmVzb3VyY2VzLCBkZWZpbmVkIGluIHNwZWMucmVzb3VyY2VDbGFpbXMsXG50aGF0IGFyZSB1c2VkIGJ5IHRoaXMgY29udGFpbmVyLlxuXG5UaGlzIGZpZWxkIGRlcGVuZHMgb24gdGhlXG5EeW5hbWljUmVzb3VyY2VBbGxvY2F0aW9uIGZlYXR1cmUgZ2F0ZS5cblxuVGhpcyBmaWVsZCBpcyBpbW11dGFibGUuIEl0IGNhbiBvbmx5IGJlIHNldCBmb3IgY29udGFpbmVycy4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlJlc291cmNlQ2xhaW0gcmVmZXJlbmNlcyBvbmUgZW50cnkgaW4gUG9kU3BlYy5SZXNvdXJjZUNsYWltcy4iLCJwcm9wZXJ0aWVzIjp7Im5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG11c3QgbWF0Y2ggdGhlIG5hbWUgb2Ygb25lIGVudHJ5IGluIHBvZC5zcGVjLnJlc291cmNlQ2xhaW1zIG9mXG50aGUgUG9kIHdoZXJlIHRoaXMgZmllbGQgaXMgdXNlZC4gSXQgbWFrZXMgdGhhdCByZXNvdXJjZSBhdmFpbGFibGVcbmluc2lkZSBhIGNvbnRhaW5lci4iLCJ0eXBlIjoic3RyaW5nIn0sInJlcXVlc3QiOnsiZGVzY3JpcHRpb24iOiJSZXF1ZXN0IGlzIHRoZSBuYW1lIGNob3NlbiBmb3IgYSByZXF1ZXN0IGluIHRoZSByZWZlcmVuY2VkIGNsYWltLlxuSWYgZW1wdHksIGV2ZXJ5dGhpbmcgZnJvbSB0aGUgY2xhaW0gaXMgbWFkZSBhdmFpbGFibGUsIG90aGVyd2lzZVxub25seSB0aGUgcmVzdWx0IG9mIHRoaXMgcmVxdWVzdC4iLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJuYW1lIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5IiwieC1rdWJlcm5ldGVzLWxpc3QtbWFwLWtleXMiOlsibmFtZSJdLCJ4LWt1YmVybmV0ZXMtbGlzdC10eXBlIjoibWFwIn0sImxpbWl0cyI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJhbnlPZiI6W3sidHlwZSI6ImludGVnZXIifSx7InR5cGUiOiJzdHJpbmcifV0sInBhdHRlcm4iOiJeKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKChbS01HVFBFXWkpfFtudW1rTUdUUEVdfChbZUVdKFxcK3wtKT8oKFswLTldKyhcXC5bMC05XSopPyl8KFxcLlswLTldKykpKSk/JCIsIngta3ViZXJuZXRlcy1pbnQtb3Itc3RyaW5nIjp0cnVlfSwiZGVzY3JpcHRpb24iOiJMaW1pdHMgZGVzY3JpYmVzIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBjb21wdXRlIHJlc291cmNlcyBhbGxvd2VkLlxuTW9yZSBpbmZvOiBodHRwczovL2t1YmVybmV0ZXMuaW8vZG9jcy9jb25jZXB0cy9jb25maWd1cmF0aW9uL21hbmFnZS1yZXNvdXJjZXMtY29udGFpbmVycy8iLCJ0eXBlIjoib2JqZWN0In0sInJlcXVlc3RzIjp7ImFkZGl0aW9uYWxQcm9wZXJ0aWVzIjp7ImFueU9mIjpbeyJ0eXBlIjoiaW50ZWdlciJ9LHsidHlwZSI6InN0cmluZyJ9XSwicGF0dGVybiI6Il4oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkoKFtLTUdUUEVdaSl8W251bWtNR1RQRV18KFtlRV0oXFwrfC0pPygoWzAtOV0rKFxcLlswLTldKik/KXwoXFwuWzAtOV0rKSkpKT8kIiwieC1rdWJlcm5ldGVzLWludC1vci1zdHJpbmciOnRydWV9LCJkZXNjcmlwdGlvbiI6IlJlcXVlc3RzIGRlc2NyaWJlcyB0aGUgbWluaW11bSBhbW91bnQgb2YgY29tcHV0ZSByZXNvdXJjZXMgcmVxdWlyZWQuXG5JZiBSZXF1ZXN0cyBpcyBvbWl0dGVkIGZvciBhIGNvbnRhaW5lciwgaXQgZGVmYXVsdHMgdG8gTGltaXRzIGlmIHRoYXQgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsXG5vdGhlcndpc2UgdG8gYW4gaW1wbGVtZW50YXRpb24tZGVmaW5lZCB2YWx1ZS4gUmVxdWVzdHMgY2Fubm90IGV4Y2VlZCBMaW1pdHMuXG5Nb3JlIGluZm86IGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL2NvbmZpZ3VyYXRpb24vbWFuYWdlLXJlc291cmNlcy1jb250YWluZXJzLyIsInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwic3VibmV0TGFiZWxzIjp7ImRlc2NyaXB0aW9uIjoiYHN1Ym5ldExhYmVsc2AgYWxsb3dzIHRvIGRlZmluZSBjdXN0b20gbGFiZWxzIG9uIHN1Ym5ldHMgYW5kIElQcyBvciB0byBlbmFibGUgYXV0b21hdGljIGxhYmVsbGluZyBvZiByZWNvZ25pemVkIHN1Ym5ldHMgaW4gT3BlblNoaWZ0LCB3aGljaCBpcyB1c2VkIHRvIGlkZW50aWZ5IGNsdXN0ZXIgZXh0ZXJuYWwgdHJhZmZpYy5cbldoZW4gYSBzdWJuZXQgbWF0Y2hlcyB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIElQIG9mIGEgZmxvdywgYSBjb3JyZXNwb25kaW5nIGZpZWxkIGlzIGFkZGVkOiBgU3JjU3VibmV0TGFiZWxgIG9yIGBEc3RTdWJuZXRMYWJlbGAuIiwicHJvcGVydGllcyI6eyJjdXN0b21MYWJlbHMiOnsiZGVzY3JpcHRpb24iOiJgY3VzdG9tTGFiZWxzYCBhbGxvd3MgdG8gY3VzdG9taXplIHN1Ym5ldHMgYW5kIElQcyBsYWJlbGxpbmcsIHN1Y2ggYXMgdG8gaWRlbnRpZnkgY2x1c3Rlci1leHRlcm5hbCB3b3JrbG9hZHMgb3Igd2ViIHNlcnZpY2VzLlxuSWYgeW91IGVuYWJsZSBgb3BlblNoaWZ0QXV0b0RldGVjdGAsIGBjdXN0b21MYWJlbHNgIGNhbiBvdmVycmlkZSB0aGUgZGV0ZWN0ZWQgc3VibmV0cyBpbiBjYXNlIHRoZXkgb3ZlcmxhcC4iLCJpdGVtcyI6eyJkZXNjcmlwdGlvbiI6IlN1Ym5ldExhYmVsIGFsbG93cyB0byBsYWJlbCBzdWJuZXRzIGFuZCBJUHMsIHN1Y2ggYXMgdG8gaWRlbnRpZnkgY2x1c3Rlci1leHRlcm5hbCB3b3JrbG9hZHMgb3Igd2ViIHNlcnZpY2VzLiIsInByb3BlcnRpZXMiOnsiY2lkcnMiOnsiZGVzY3JpcHRpb24iOiJMaXN0IG9mIENJRFJzLCBzdWNoIGFzIGBbXCIxLjIuMy40LzMyXCJdYC4iLCJpdGVtcyI6eyJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOiJhcnJheSJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTGFiZWwgbmFtZSwgdXNlZCB0byBmbGFnIG1hdGNoaW5nIGZsb3dzLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImNpZHJzIiwibmFtZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJvcGVuU2hpZnRBdXRvRGV0ZWN0Ijp7ImRlc2NyaXB0aW9uIjoiYG9wZW5TaGlmdEF1dG9EZXRlY3RgIGFsbG93cywgd2hlbiBzZXQgdG8gYHRydWVgLCB0byBkZXRlY3QgYXV0b21hdGljYWxseSB0aGUgbWFjaGluZXMsIHBvZHMgYW5kIHNlcnZpY2VzIHN1Ym5ldHMgYmFzZWQgb24gdGhlXG5PcGVuU2hpZnQgaW5zdGFsbCBjb25maWd1cmF0aW9uIGFuZCB0aGUgQ2x1c3RlciBOZXR3b3JrIE9wZXJhdG9yIGNvbmZpZ3VyYXRpb24uIEluZGlyZWN0bHksIHRoaXMgaXMgYSB3YXkgdG8gYWNjdXJhdGVseSBkZXRlY3RcbmV4dGVybmFsIHRyYWZmaWM6IGZsb3dzIHRoYXQgYXJlIG5vdCBsYWJlbGVkIGZvciB0aG9zZSBzdWJuZXRzIGFyZSBleHRlcm5hbCB0byB0aGUgY2x1c3Rlci4gRW5hYmxlZCBieSBkZWZhdWx0IG9uIE9wZW5TaGlmdC4iLCJ0eXBlIjoiYm9vbGVhbiJ9fSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9LCJwcm9tZXRoZXVzIjp7ImRlc2NyaXB0aW9uIjoiYHByb21ldGhldXNgIGRlZmluZXMgUHJvbWV0aGV1cyBzZXR0aW5ncywgc3VjaCBhcyBxdWVyaWVyIGNvbmZpZ3VyYXRpb24gdXNlZCB0byBmZXRjaCBtZXRyaWNzIGZyb20gdGhlIENvbnNvbGUgcGx1Z2luLiIsInByb3BlcnRpZXMiOnsicXVlcmllciI6eyJkZXNjcmlwdGlvbiI6IlByb21ldGhldXMgcXVlcnlpbmcgY29uZmlndXJhdGlvbiwgc3VjaCBhcyBjbGllbnQgc2V0dGluZ3MsIHVzZWQgaW4gdGhlIENvbnNvbGUgcGx1Z2luLiIsInByb3BlcnRpZXMiOnsiZW5hYmxlIjp7ImRlc2NyaXB0aW9uIjoiV2hlbiBgZW5hYmxlYCBpcyBgdHJ1ZWAsIHRoZSBDb25zb2xlIHBsdWdpbiBxdWVyaWVzIGZsb3cgbWV0cmljcyBmcm9tIFByb21ldGhldXMgaW5zdGVhZCBvZiBMb2tpIHdoZW5ldmVyIHBvc3NpYmxlLlxuSXQgaXMgZW5iYWxlZCBieSBkZWZhdWx0OiBzZXQgaXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZS5cblRoZSBDb25zb2xlIHBsdWdpbiBjYW4gdXNlIGVpdGhlciBMb2tpIG9yIFByb21ldGhldXMgYXMgYSBkYXRhIHNvdXJjZSBmb3IgbWV0cmljcyAoc2VlIGFsc28gYHNwZWMubG9raWApLCBvciBib3RoLlxuTm90IGFsbCBxdWVyaWVzIGFyZSB0cmFuc3Bvc2FibGUgZnJvbSBMb2tpIHRvIFByb21ldGhldXMuIEhlbmNlLCBpZiBMb2tpIGlzIGRpc2FibGVkLCBzb21lIGZlYXR1cmVzIG9mIHRoZSBwbHVnaW4gYXJlIGRpc2FibGVkIGFzIHdlbGwsXG5zdWNoIGFzIGdldHRpbmcgcGVyLXBvZCBpbmZvcm1hdGlvbiBvciB2aWV3aW5nIHJhdyBmbG93cy5cbklmIGJvdGggUHJvbWV0aGV1cyBhbmQgTG9raSBhcmUgZW5hYmxlZCwgUHJvbWV0aGV1cyB0YWtlcyBwcmVjZWRlbmNlIGFuZCBMb2tpIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgcXVlcmllcyB0aGF0IFByb21ldGhldXMgY2Fubm90IGhhbmRsZS5cbklmIHRoZXkgYXJlIGJvdGggZGlzYWJsZWQsIHRoZSBDb25zb2xlIHBsdWdpbiBpcyBub3QgZGVwbG95ZWQuIiwidHlwZSI6ImJvb2xlYW4ifSwibWFudWFsIjp7ImRlc2NyaXB0aW9uIjoiUHJvbWV0aGV1cyBjb25maWd1cmF0aW9uIGZvciBgTWFudWFsYCBtb2RlLiIsInByb3BlcnRpZXMiOnsiZm9yd2FyZFVzZXJUb2tlbiI6eyJkZXNjcmlwdGlvbiI6IlNldCBgdHJ1ZWAgdG8gZm9yd2FyZCBsb2dnZWQgaW4gdXNlciB0b2tlbiBpbiBxdWVyaWVzIHRvIFByb21ldGhldXMiLCJ0eXBlIjoiYm9vbGVhbiJ9LCJ0bHMiOnsiZGVzY3JpcHRpb24iOiJUTFMgY2xpZW50IGNvbmZpZ3VyYXRpb24gZm9yIFByb21ldGhldXMgVVJMLiIsInByb3BlcnRpZXMiOnsiY2FDZXJ0Ijp7ImRlc2NyaXB0aW9uIjoiYGNhQ2VydGAgZGVmaW5lcyB0aGUgcmVmZXJlbmNlIG9mIHRoZSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIENlcnRpZmljYXRlIEF1dGhvcml0eS4iLCJwcm9wZXJ0aWVzIjp7ImNlcnRGaWxlIjp7ImRlc2NyaXB0aW9uIjoiYGNlcnRGaWxlYCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4iLCJ0eXBlIjoic3RyaW5nIn0sImNlcnRLZXkiOnsiZGVzY3JpcHRpb24iOiJgY2VydEtleWAgZGVmaW5lcyB0aGUgcGF0aCB0byB0aGUgY2VydGlmaWNhdGUgcHJpdmF0ZSBrZXkgZmlsZSBuYW1lIHdpdGhpbiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQuIE9taXQgd2hlbiB0aGUga2V5IGlzIG5vdCBuZWNlc3NhcnkuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lIjp7ImRlc2NyaXB0aW9uIjoiTmFtZSBvZiB0aGUgY29uZmlnIG1hcCBvciBzZWNyZXQgY29udGFpbmluZyBjZXJ0aWZpY2F0ZXMuIiwidHlwZSI6InN0cmluZyJ9LCJuYW1lc3BhY2UiOnsiZGVmYXVsdCI6IiIsImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4gSWYgb21pdHRlZCwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSBhcyB3aGVyZSBOZXRPYnNlcnYgaXMgZGVwbG95ZWQuXG5JZiB0aGUgbmFtZXNwYWNlIGlzIGRpZmZlcmVudCwgdGhlIGNvbmZpZyBtYXAgb3IgdGhlIHNlY3JldCBpcyBjb3BpZWQgc28gdGhhdCBpdCBjYW4gYmUgbW91bnRlZCBhcyByZXF1aXJlZC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIGZvciB0aGUgY2VydGlmaWNhdGUgcmVmZXJlbmNlOiBgY29uZmlnbWFwYCBvciBgc2VjcmV0YC4iLCJlbnVtIjpbImNvbmZpZ21hcCIsInNlY3JldCJdLCJ0eXBlIjoic3RyaW5nIn19LCJ0eXBlIjoib2JqZWN0In0sImVuYWJsZSI6eyJkZWZhdWx0IjpmYWxzZSwiZGVzY3JpcHRpb24iOiJFbmFibGUgVExTIiwidHlwZSI6ImJvb2xlYW4ifSwiaW5zZWN1cmVTa2lwVmVyaWZ5Ijp7ImRlZmF1bHQiOmZhbHNlLCJkZXNjcmlwdGlvbiI6ImBpbnNlY3VyZVNraXBWZXJpZnlgIGFsbG93cyBza2lwcGluZyBjbGllbnQtc2lkZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZS5cbklmIHNldCB0byBgdHJ1ZWAsIHRoZSBgY2FDZXJ0YCBmaWVsZCBpcyBpZ25vcmVkLiIsInR5cGUiOiJib29sZWFuIn0sInVzZXJDZXJ0Ijp7ImRlc2NyaXB0aW9uIjoiYHVzZXJDZXJ0YCBkZWZpbmVzIHRoZSB1c2VyIGNlcnRpZmljYXRlIHJlZmVyZW5jZSBhbmQgaXMgdXNlZCBmb3IgbVRMUy4gV2hlbiB5b3UgdXNlIG9uZS13YXkgVExTLCB5b3UgY2FuIGlnbm9yZSB0aGlzIHByb3BlcnR5LiIsInByb3BlcnRpZXMiOnsiY2VydEZpbGUiOnsiZGVzY3JpcHRpb24iOiJgY2VydEZpbGVgIGRlZmluZXMgdGhlIHBhdGggdG8gdGhlIGNlcnRpZmljYXRlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0LiIsInR5cGUiOiJzdHJpbmcifSwiY2VydEtleSI6eyJkZXNjcmlwdGlvbiI6ImBjZXJ0S2V5YCBkZWZpbmVzIHRoZSBwYXRoIHRvIHRoZSBjZXJ0aWZpY2F0ZSBwcml2YXRlIGtleSBmaWxlIG5hbWUgd2l0aGluIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldC4gT21pdCB3aGVuIHRoZSBrZXkgaXMgbm90IG5lY2Vzc2FyeS4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb25maWcgbWFwIG9yIHNlY3JldCBjb250YWluaW5nIGNlcnRpZmljYXRlcy4iLCJ0eXBlIjoic3RyaW5nIn0sIm5hbWVzcGFjZSI6eyJkZWZhdWx0IjoiIiwiZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugb2YgdGhlIGNvbmZpZyBtYXAgb3Igc2VjcmV0IGNvbnRhaW5pbmcgY2VydGlmaWNhdGVzLiBJZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlIGFzIHdoZXJlIE5ldE9ic2VydiBpcyBkZXBsb3llZC5cbklmIHRoZSBuYW1lc3BhY2UgaXMgZGlmZmVyZW50LCB0aGUgY29uZmlnIG1hcCBvciB0aGUgc2VjcmV0IGlzIGNvcGllZCBzbyB0aGF0IGl0IGNhbiBiZSBtb3VudGVkIGFzIHJlcXVpcmVkLiIsInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6IlR5cGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSByZWZlcmVuY2U6IGBjb25maWdtYXBgIG9yIGBzZWNyZXRgLiIsImVudW0iOlsiY29uZmlnbWFwIiwic2VjcmV0Il0sInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifX0sInR5cGUiOiJvYmplY3QifSwidXJsIjp7ImRlZmF1bHQiOiJodHRwOi8vcHJvbWV0aGV1czo5MDkwIiwiZGVzY3JpcHRpb24iOiJgdXJsYCBpcyB0aGUgYWRkcmVzcyBvZiBhbiBleGlzdGluZyBQcm9tZXRoZXVzIHNlcnZpY2UgdG8gdXNlIGZvciBxdWVyeWluZyBtZXRyaWNzLiIsInR5cGUiOiJzdHJpbmcifX0sInR5cGUiOiJvYmplY3QifSwibW9kZSI6eyJkZWZhdWx0IjoiQXV0byIsImRlc2NyaXB0aW9uIjoiYG1vZGVgIG11c3QgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBQcm9tZXRoZXVzIGluc3RhbGxhdGlvbiB0aGF0IHN0b3JlcyBOZXRPYnNlcnYgbWV0cmljczpcdTAwM2Niclx1MDAzZVxuLSBVc2UgYEF1dG9gIHRvIHRyeSBjb25maWd1cmluZyBhdXRvbWF0aWNhbGx5LiBJbiBPcGVuU2hpZnQsIGl0IHVzZXMgdGhlIFRoYW5vcyBxdWVyaWVyIGZyb20gT3BlblNoaWZ0IENsdXN0ZXIgTW9uaXRvcmluZ1x1MDAzY2JyXHUwMDNlXG4tIFVzZSBgTWFudWFsYCBmb3IgYSBtYW51YWwgc2V0dXBcdTAwM2Niclx1MDAzZSIsImVudW0iOlsiTWFudWFsIiwiQXV0byJdLCJ0eXBlIjoic3RyaW5nIn0sInRpbWVvdXQiOnsiZGVmYXVsdCI6IjMwcyIsImRlc2NyaXB0aW9uIjoiYHRpbWVvdXRgIGlzIHRoZSByZWFkIHRpbWVvdXQgZm9yIGNvbnNvbGUgcGx1Z2luIHF1ZXJpZXMgdG8gUHJvbWV0aGV1cy5cbkEgdGltZW91dCBvZiB6ZXJvIG1lYW5zIG5vIHRpbWVvdXQuIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibW9kZSJdLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In0sInN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6ImBGbG93Q29sbGVjdG9yU3RhdHVzYCBkZWZpbmVzIHRoZSBvYnNlcnZlZCBzdGF0ZSBvZiBGbG93Q29sbGVjdG9yIiwicHJvcGVydGllcyI6eyJjb25kaXRpb25zIjp7ImRlc2NyaXB0aW9uIjoiYGNvbmRpdGlvbnNgIHJlcHJlc2VudHMgdGhlIGxhdGVzdCBhdmFpbGFibGUgb2JzZXJ2YXRpb25zIG9mIGFuIG9iamVjdCdzIHN0YXRlIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJDb25kaXRpb24gY29udGFpbnMgZGV0YWlscyBmb3Igb25lIGFzcGVjdCBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGlzIEFQSSBSZXNvdXJjZS4iLCJwcm9wZXJ0aWVzIjp7Imxhc3RUcmFuc2l0aW9uVGltZSI6eyJkZXNjcmlwdGlvbiI6Imxhc3RUcmFuc2l0aW9uVGltZSBpcyB0aGUgbGFzdCB0aW1lIHRoZSBjb25kaXRpb24gdHJhbnNpdGlvbmVkIGZyb20gb25lIHN0YXR1cyB0byBhbm90aGVyLlxuVGhpcyBzaG91bGQgYmUgd2hlbiB0aGUgdW5kZXJseWluZyBjb25kaXRpb24gY2hhbmdlZC4gIElmIHRoYXQgaXMgbm90IGtub3duLCB0aGVuIHVzaW5nIHRoZSB0aW1lIHdoZW4gdGhlIEFQSSBmaWVsZCBjaGFuZ2VkIGlzIGFjY2VwdGFibGUuIiwiZm9ybWF0IjoiZGF0ZS10aW1lIiwidHlwZSI6InN0cmluZyJ9LCJtZXNzYWdlIjp7ImRlc2NyaXB0aW9uIjoibWVzc2FnZSBpcyBhIGh1bWFuIHJlYWRhYmxlIG1lc3NhZ2UgaW5kaWNhdGluZyBkZXRhaWxzIGFib3V0IHRoZSB0cmFuc2l0aW9uLlxuVGhpcyBtYXkgYmUgYW4gZW1wdHkgc3RyaW5nLiIsIm1heExlbmd0aCI6MzI3NjgsInR5cGUiOiJzdHJpbmcifSwib2JzZXJ2ZWRHZW5lcmF0aW9uIjp7ImRlc2NyaXB0aW9uIjoib2JzZXJ2ZWRHZW5lcmF0aW9uIHJlcHJlc2VudHMgdGhlIC5tZXRhZGF0YS5nZW5lcmF0aW9uIHRoYXQgdGhlIGNvbmRpdGlvbiB3YXMgc2V0IGJhc2VkIHVwb24uXG5Gb3IgaW5zdGFuY2UsIGlmIC5tZXRhZGF0YS5nZW5lcmF0aW9uIGlzIGN1cnJlbnRseSAxMiwgYnV0IHRoZSAuc3RhdHVzLmNvbmRpdGlvbnNbeF0ub2JzZXJ2ZWRHZW5lcmF0aW9uIGlzIDksIHRoZSBjb25kaXRpb24gaXMgb3V0IG9mIGRhdGVcbndpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgaW5zdGFuY2UuIiwiZm9ybWF0IjoiaW50NjQiLCJtaW5pbXVtIjowLCJ0eXBlIjoiaW50ZWdlciJ9LCJyZWFzb24iOnsiZGVzY3JpcHRpb24iOiJyZWFzb24gY29udGFpbnMgYSBwcm9ncmFtbWF0aWMgaWRlbnRpZmllciBpbmRpY2F0aW5nIHRoZSByZWFzb24gZm9yIHRoZSBjb25kaXRpb24ncyBsYXN0IHRyYW5zaXRpb24uXG5Qcm9kdWNlcnMgb2Ygc3BlY2lmaWMgY29uZGl0aW9uIHR5cGVzIG1heSBkZWZpbmUgZXhwZWN0ZWQgdmFsdWVzIGFuZCBtZWFuaW5ncyBmb3IgdGhpcyBmaWVsZCxcbmFuZCB3aGV0aGVyIHRoZSB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgYSBndWFyYW50ZWVkIEFQSS5cblRoZSB2YWx1ZSBzaG91bGQgYmUgYSBDYW1lbENhc2Ugc3RyaW5nLlxuVGhpcyBmaWVsZCBtYXkgbm90IGJlIGVtcHR5LiIsIm1heExlbmd0aCI6MTAyNCwibWluTGVuZ3RoIjoxLCJwYXR0ZXJuIjoiXltBLVphLXpdKFtBLVphLXowLTlfLDpdKltBLVphLXowLTlfXSk/JCIsInR5cGUiOiJzdHJpbmcifSwic3RhdHVzIjp7ImRlc2NyaXB0aW9uIjoic3RhdHVzIG9mIHRoZSBjb25kaXRpb24sIG9uZSBvZiBUcnVlLCBGYWxzZSwgVW5rbm93bi4iLCJlbnVtIjpbIlRydWUiLCJGYWxzZSIsIlVua25vd24iXSwidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoidHlwZSBvZiBjb25kaXRpb24gaW4gQ2FtZWxDYXNlIG9yIGluIGZvby5leGFtcGxlLmNvbS9DYW1lbENhc2UuIiwibWF4TGVuZ3RoIjozMTYsInBhdHRlcm4iOiJeKFthLXowLTldKFstYS16MC05XSpbYS16MC05XSk/KFxcLlthLXowLTldKFstYS16MC05XSpbYS16MC05XSk/KSovKT8oKFtBLVphLXowLTldWy1BLVphLXowLTlfLl0qKT9bQS1aYS16MC05XSkkIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsibGFzdFRyYW5zaXRpb25UaW1lIiwibWVzc2FnZSIsInJlYXNvbiIsInN0YXR1cyIsInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwibmFtZXNwYWNlIjp7ImRlc2NyaXB0aW9uIjoiTmFtZXNwYWNlIHdoZXJlIGNvbnNvbGUgcGx1Z2luIGFuZCBmbG93bG9ncy1waXBlbGluZSBoYXZlIGJlZW4gZGVwbG95ZWQuXG5EZXByZWNhdGVkOiBhbm5vdGF0aW9ucyBhcmUgdXNlZCBpbnN0ZWFkIiwidHlwZSI6InN0cmluZyJ9fSwicmVxdWlyZWQiOlsiY29uZGl0aW9ucyJdLCJ0eXBlIjoib2JqZWN0In19LCJ0eXBlIjoib2JqZWN0In19LCJzZXJ2ZWQiOnRydWUsInN0b3JhZ2UiOnRydWUsInN1YnJlc291cmNlcyI6eyJzdGF0dXMiOnt9fX1dfSwic3RhdHVzIjp7ImFjY2VwdGVkTmFtZXMiOnsia2luZCI6IiIsInBsdXJhbCI6IiJ9LCJjb25kaXRpb25zIjpudWxsLCJzdG9yZWRWZXJzaW9ucyI6bnVsbH19 +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiY29udHJvbGxlci1nZW4ua3ViZWJ1aWxkZXIuaW8vdmVyc2lvbiI6InYwLjE2LjIifSwiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJmbG93bWV0cmljcy5mbG93cy5uZXRvYnNlcnYuaW8ifSwic3BlYyI6eyJncm91cCI6ImZsb3dzLm5ldG9ic2Vydi5pbyIsIm5hbWVzIjp7ImtpbmQiOiJGbG93TWV0cmljIiwibGlzdEtpbmQiOiJGbG93TWV0cmljTGlzdCIsInBsdXJhbCI6ImZsb3dtZXRyaWNzIiwic2luZ3VsYXIiOiJmbG93bWV0cmljIn0sInNjb3BlIjoiTmFtZXNwYWNlZCIsInZlcnNpb25zIjpbeyJhZGRpdGlvbmFsUHJpbnRlckNvbHVtbnMiOlt7Impzb25QYXRoIjoiLnN0YXR1cy5wcm9tZXRoZXVzTmFtZSIsIm5hbWUiOiJNZXRyaWMgTmFtZSIsInR5cGUiOiJzdHJpbmcifSx7Impzb25QYXRoIjoiLnN0YXR1cy5jb25kaXRpb25zWz8oQC50eXBlPT1cIlJlYWR5XCIpXS5yZWFzb24iLCJuYW1lIjoiU3RhdHVzIiwidHlwZSI6InN0cmluZyJ9LHsianNvblBhdGgiOiIuc3RhdHVzLmNvbmRpdGlvbnNbPyhALnR5cGU9PVwiQ2FyZGluYWxpdHlXYXJuaW5nXCIpXS5yZWFzb24iLCJuYW1lIjoiQ2FyZGluYWxpdHkiLCJ0eXBlIjoic3RyaW5nIn1dLCJuYW1lIjoidjFhbHBoYTEiLCJzY2hlbWEiOnsib3BlbkFQSVYzU2NoZW1hIjp7ImRlc2NyaXB0aW9uIjoiRmxvd01ldHJpYyBpcyB0aGUgQVBJIGFsbG93aW5nIHRvIGNyZWF0ZSBjdXN0b20gbWV0cmljcyBmcm9tIHRoZSBjb2xsZWN0ZWQgZmxvdyBsb2dzLiIsInByb3BlcnRpZXMiOnsiYXBpVmVyc2lvbiI6eyJkZXNjcmlwdGlvbiI6IkFQSVZlcnNpb24gZGVmaW5lcyB0aGUgdmVyc2lvbmVkIHNjaGVtYSBvZiB0aGlzIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC5cblNlcnZlcnMgc2hvdWxkIGNvbnZlcnQgcmVjb2duaXplZCBzY2hlbWFzIHRvIHRoZSBsYXRlc3QgaW50ZXJuYWwgdmFsdWUsIGFuZFxubWF5IHJlamVjdCB1bnJlY29nbml6ZWQgdmFsdWVzLlxuTW9yZSBpbmZvOiBodHRwczovL2dpdC5rOHMuaW8vY29tbXVuaXR5L2NvbnRyaWJ1dG9ycy9kZXZlbC9zaWctYXJjaGl0ZWN0dXJlL2FwaS1jb252ZW50aW9ucy5tZCNyZXNvdXJjZXMiLCJ0eXBlIjoic3RyaW5nIn0sImtpbmQiOnsiZGVzY3JpcHRpb24iOiJLaW5kIGlzIGEgc3RyaW5nIHZhbHVlIHJlcHJlc2VudGluZyB0aGUgUkVTVCByZXNvdXJjZSB0aGlzIG9iamVjdCByZXByZXNlbnRzLlxuU2VydmVycyBtYXkgaW5mZXIgdGhpcyBmcm9tIHRoZSBlbmRwb2ludCB0aGUgY2xpZW50IHN1Ym1pdHMgcmVxdWVzdHMgdG8uXG5DYW5ub3QgYmUgdXBkYXRlZC5cbkluIENhbWVsQ2FzZS5cbk1vcmUgaW5mbzogaHR0cHM6Ly9naXQuazhzLmlvL2NvbW11bml0eS9jb250cmlidXRvcnMvZGV2ZWwvc2lnLWFyY2hpdGVjdHVyZS9hcGktY29udmVudGlvbnMubWQjdHlwZXMta2luZHMiLCJ0eXBlIjoic3RyaW5nIn0sIm1ldGFkYXRhIjp7InR5cGUiOiJvYmplY3QifSwic3BlYyI6eyJkZXNjcmlwdGlvbiI6IkZsb3dNZXRyaWNTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgRmxvd01ldHJpY1xuVGhlIHByb3ZpZGVkIEFQSSBhbGxvd3MgeW91IHRvIGN1c3RvbWl6ZSB0aGVzZSBtZXRyaWNzIGFjY29yZGluZyB0byB5b3VyIG5lZWRzLlx1MDAzY2JyXHUwMDNlXG5XaGVuIGFkZGluZyBuZXcgbWV0cmljcyBvciBtb2RpZnlpbmcgZXhpc3RpbmcgbGFiZWxzLCB5b3UgbXVzdCBjYXJlZnVsbHkgbW9uaXRvciB0aGUgbWVtb3J5XG51c2FnZSBvZiBQcm9tZXRoZXVzIHdvcmtsb2FkcyBhcyB0aGlzIGNvdWxkIHBvdGVudGlhbGx5IGhhdmUgYSBoaWdoIGltcGFjdC4gQ2YgaHR0cHM6Ly9yaG9icy1oYW5kYm9vay5uZXRsaWZ5LmFwcC9wcm9kdWN0cy9vcGVuc2hpZnRtb25pdG9yaW5nL3RlbGVtZXRyeS5tZC8jd2hhdC1pcy10aGUtY2FyZGluYWxpdHktb2YtYS1tZXRyaWNcdTAwM2Niclx1MDAzZVxuVG8gY2hlY2sgdGhlIGNhcmRpbmFsaXR5IG9mIGFsbCBOZXRPYnNlcnYgbWV0cmljcywgcnVuIGFzIGBwcm9tcWxgOiBgY291bnQoe19fbmFtZV9fPX5cIm5ldG9ic2Vydi4qXCJ9KSBieSAoX19uYW1lX18pYC4iLCJwcm9wZXJ0aWVzIjp7ImJ1Y2tldHMiOnsiZGVzY3JpcHRpb24iOiJBIGxpc3Qgb2YgYnVja2V0cyB0byB1c2Ugd2hlbiBgdHlwZWAgaXMgXCJIaXN0b2dyYW1cIi4gVGhlIGxpc3QgbXVzdCBiZSBwYXJzYWJsZSBhcyBmbG9hdHMuIFdoZW4gbm90IHNldCwgUHJvbWV0aGV1cyBkZWZhdWx0IGJ1Y2tldHMgYXJlIHVzZWQuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifSwiY2hhcnRzIjp7ImRlc2NyaXB0aW9uIjoiQ2hhcnRzIGNvbmZpZ3VyYXRpb24sIGZvciB0aGUgT3BlblNoaWZ0IENvbnNvbGUgaW4gdGhlIGFkbWluaXN0cmF0b3IgdmlldywgRGFzaGJvYXJkcyBtZW51LiIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQ29uZmlndXJlcyBjaGFydHMgLyBkYXNoYm9hcmQgZ2VuZXJhdGlvbiBhc3NvY2lhdGVkIHRvIGEgbWV0cmljIiwicHJvcGVydGllcyI6eyJkYXNoYm9hcmROYW1lIjp7ImRlZmF1bHQiOiJNYWluIiwiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb250YWluaW5nIGRhc2hib2FyZC4gSWYgdGhpcyBuYW1lIGRvZXMgbm90IHJlZmVyIHRvIGFuIGV4aXN0aW5nIGRhc2hib2FyZCwgYSBuZXcgZGFzaGJvYXJkIGlzIGNyZWF0ZWQuIiwidHlwZSI6InN0cmluZyJ9LCJxdWVyaWVzIjp7ImRlc2NyaXB0aW9uIjoiTGlzdCBvZiBxdWVyaWVzIHRvIGJlIGRpc3BsYXllZCBvbiB0aGlzIGNoYXJ0LiBJZiBgdHlwZWAgaXMgYFNpbmdsZVN0YXRgIGFuZCBtdWx0aXBsZSBxdWVyaWVzIGFyZSBwcm92aWRlZCxcbnRoaXMgY2hhcnQgaXMgYXV0b21hdGljYWxseSBleHBhbmRlZCBpbiBzZXZlcmFsIHBhbmVscyAob25lIHBlciBxdWVyeSkuIiwiaXRlbXMiOnsiZGVzY3JpcHRpb24iOiJDb25maWd1cmVzIFByb21RTCBxdWVyaWVzIiwicHJvcGVydGllcyI6eyJsZWdlbmQiOnsiZGVzY3JpcHRpb24iOiJUaGUgcXVlcnkgbGVnZW5kIHRoYXQgYXBwbGllcyB0byBlYWNoIHRpbWVzZXJpZXMgcmVwcmVzZW50ZWQgaW4gdGhpcyBjaGFydC4gV2hlbiBtdWx0aXBsZSB0aW1lc2VyaWVzIGFyZSBkaXNwbGF5ZWQsIHlvdSBzaG91bGQgc2V0IGEgbGVnZW5kXG50aGF0IGRpc3Rpbmd1aXNoZXMgZWFjaCBvZiB0aGVtLiBJdCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiBge3sgTGFiZWwgfX1gLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGBwcm9tUUxgIGdyb3VwcyB0aW1lc2VyaWVzIHBlclxubGFiZWwgc3VjaCBhczogYHN1bShyYXRlKCRNRVRSSUNbMm1dKSkgYnkgKExhYmVsMSwgTGFiZWwyKWAsIHlvdSBtYXkgd3JpdGUgYXMgdGhlIGxlZ2VuZDogYExhYmVsMT17eyBMYWJlbDEgfX0sIExhYmVsMj17eyBMYWJlbDIgfX1gLiIsInR5cGUiOiJzdHJpbmcifSwicHJvbVFMIjp7ImRlc2NyaXB0aW9uIjoiVGhlIGBwcm9tUUxgIHF1ZXJ5IHRvIGJlIHJ1biBhZ2FpbnN0IFByb21ldGhldXMuIElmIHRoZSBjaGFydCBgdHlwZWAgaXMgYFNpbmdsZVN0YXRgLCB0aGlzIHF1ZXJ5IHNob3VsZCBvbmx5IHJldHVyblxuYSBzaW5nbGUgdGltZXNlcmllcy4gRm9yIG90aGVyIHR5cGVzLCBhIHRvcCA3IGlzIGRpc3BsYXllZC5cbllvdSBjYW4gdXNlIGAkTUVUUklDYCB0byByZWZlciB0byB0aGUgbWV0cmljIGRlZmluZWQgaW4gdGhpcyByZXNvdXJjZS4gRm9yIGV4YW1wbGU6IGBzdW0ocmF0ZSgkTUVUUklDWzJtXSkpYC5cblRvIGxlYXJuIG1vcmUgYWJvdXQgYHByb21RTGAsIHJlZmVyIHRvIHRoZSBQcm9tZXRoZXVzIGRvY3VtZW50YXRpb246IGh0dHBzOi8vcHJvbWV0aGV1cy5pby9kb2NzL3Byb21ldGhldXMvbGF0ZXN0L3F1ZXJ5aW5nL2Jhc2ljcy8iLCJ0eXBlIjoic3RyaW5nIn0sInRvcCI6eyJkZWZhdWx0Ijo3LCJkZXNjcmlwdGlvbiI6IlRvcCBOIHNlcmllcyB0byBkaXNwbGF5IHBlciB0aW1lc3RhbXAuIERvZXMgbm90IGFwcGx5IHRvIGBTaW5nbGVTdGF0YCBjaGFydCB0eXBlLiIsIm1pbmltdW0iOjEsInR5cGUiOiJpbnRlZ2VyIn19LCJyZXF1aXJlZCI6WyJsZWdlbmQiLCJwcm9tUUwiLCJ0b3AiXSwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjoiYXJyYXkifSwic2VjdGlvbk5hbWUiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBjb250YWluaW5nIGRhc2hib2FyZCBzZWN0aW9uLiBJZiB0aGlzIG5hbWUgZG9lcyBub3QgcmVmZXIgdG8gYW4gZXhpc3Rpbmcgc2VjdGlvbiwgYSBuZXcgc2VjdGlvbiBpcyBjcmVhdGVkLlxuSWYgYHNlY3Rpb25OYW1lYCBpcyBvbWl0dGVkIG9yIGVtcHR5LCB0aGUgY2hhcnQgaXMgcGxhY2VkIGluIHRoZSBnbG9iYWwgdG9wIHNlY3Rpb24uIiwidHlwZSI6InN0cmluZyJ9LCJ0aXRsZSI6eyJkZXNjcmlwdGlvbiI6IlRpdGxlIG9mIHRoZSBjaGFydC4iLCJ0eXBlIjoic3RyaW5nIn0sInR5cGUiOnsiZGVzY3JpcHRpb24iOiJUeXBlIG9mIHRoZSBjaGFydC4iLCJlbnVtIjpbIlNpbmdsZVN0YXQiLCJMaW5lIiwiU3RhY2tBcmVhIl0sInR5cGUiOiJzdHJpbmcifSwidW5pdCI6eyJkZXNjcmlwdGlvbiI6IlVuaXQgb2YgdGhpcyBjaGFydC4gT25seSBhIGZldyB1bml0cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4gTGVhdmUgZW1wdHkgdG8gdXNlIGdlbmVyaWMgbnVtYmVyLiIsImVudW0iOlsiYnl0ZXMiLCJzZWNvbmRzIiwiQnBzIiwicHBzIiwicGVyY2VudCIsIiJdLCJ0eXBlIjoic3RyaW5nIn19LCJyZXF1aXJlZCI6WyJkYXNoYm9hcmROYW1lIiwicXVlcmllcyIsInRpdGxlIiwidHlwZSJdLCJ0eXBlIjoib2JqZWN0In0sInR5cGUiOiJhcnJheSJ9LCJkaXJlY3Rpb24iOnsiZGVmYXVsdCI6IkFueSIsImRlc2NyaXB0aW9uIjoiRmlsdGVyIGZvciBpbmdyZXNzLCBlZ3Jlc3Mgb3IgYW55IGRpcmVjdGlvbiBmbG93cy5cbldoZW4gc2V0IHRvIGBJbmdyZXNzYCwgaXQgaXMgZXF1aXZhbGVudCB0byBhZGRpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBmaWx0ZXIgb24gYEZsb3dEaXJlY3Rpb25gOiBgMHwyYC5cbldoZW4gc2V0IHRvIGBFZ3Jlc3NgLCBpdCBpcyBlcXVpdmFsZW50IHRvIGFkZGluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGZpbHRlciBvbiBgRmxvd0RpcmVjdGlvbmA6IGAxfDJgLiIsImVudW0iOlsiQW55IiwiRWdyZXNzIiwiSW5ncmVzcyJdLCJ0eXBlIjoic3RyaW5nIn0sImRpdmlkZXIiOnsiZGVzY3JpcHRpb24iOiJXaGVuIG5vbnplcm8sIHNjYWxlIGZhY3RvciAoZGl2aWRlcikgb2YgdGhlIHZhbHVlLiBNZXRyaWMgdmFsdWUgPSBGbG93IHZhbHVlIC8gRGl2aWRlci4iLCJ0eXBlIjoic3RyaW5nIn0sImZpbHRlcnMiOnsiZGVzY3JpcHRpb24iOiJgZmlsdGVyc2AgaXMgYSBsaXN0IG9mIGZpZWxkcyBhbmQgdmFsdWVzIHVzZWQgdG8gcmVzdHJpY3Qgd2hpY2ggZmxvd3MgYXJlIHRha2VuIGludG8gYWNjb3VudC5cblJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmllbGRzOiBodHRwczovL2RvY3Mub3BlbnNoaWZ0LmNvbS9jb250YWluZXItcGxhdGZvcm0vbGF0ZXN0L29ic2VydmFiaWxpdHkvbmV0d29ya19vYnNlcnZhYmlsaXR5L2pzb24tZmxvd3MtZm9ybWF0LXJlZmVyZW5jZS5odG1sLiIsIml0ZW1zIjp7InByb3BlcnRpZXMiOnsiZmllbGQiOnsiZGVzY3JpcHRpb24iOiJOYW1lIG9mIHRoZSBmaWVsZCB0byBmaWx0ZXIgb24iLCJ0eXBlIjoic3RyaW5nIn0sIm1hdGNoVHlwZSI6eyJkZWZhdWx0IjoiRXF1YWwiLCJkZXNjcmlwdGlvbiI6IlR5cGUgb2YgbWF0Y2hpbmcgdG8gYXBwbHkiLCJlbnVtIjpbIkVxdWFsIiwiTm90RXF1YWwiLCJQcmVzZW5jZSIsIkFic2VuY2UiLCJNYXRjaFJlZ2V4IiwiTm90TWF0Y2hSZWdleCJdLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlIjp7ImRlc2NyaXB0aW9uIjoiVmFsdWUgdG8gZmlsdGVyIG9uLiBXaGVuIGBtYXRjaFR5cGVgIGlzIGBFcXVhbGAgb3IgYE5vdEVxdWFsYCwgeW91IGNhbiB1c2UgZmllbGQgaW5qZWN0aW9uIHdpdGggYCQoU29tZUZpZWxkKWAgdG8gcmVmZXIgdG8gYW55IG90aGVyIGZpZWxkIG9mIHRoZSBmbG93LiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImZpZWxkIiwibWF0Y2hUeXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sImZsYXR0ZW4iOnsiZGVzY3JpcHRpb24iOiJgZmxhdHRlbmAgaXMgYSBsaXN0IG9mIGFycmF5LXR5cGUgZmllbGRzIHRoYXQgbXVzdCBiZSBmbGF0dGVuZWQsIHN1Y2ggYXMgSW50ZXJmYWNlcyBvciBOZXR3b3JrRXZlbnRzLiBGbGF0dGVuZWQgZmllbGRzIGdlbmVyYXRlIG9uZSBtZXRyaWMgcGVyIGl0ZW0gaW4gdGhhdCBmaWVsZC5cbkZvciBpbnN0YW5jZSwgd2hlbiBmbGF0dGVuaW5nIGBJbnRlcmZhY2VzYCBvbiBhIGJ5dGVzIGNvdW50ZXIsIGEgZmxvdyBoYXZpbmcgSW50ZXJmYWNlcyBbYnItZXgsIGVuczVdIGluY3JlYXNlcyBvbmUgY291bnRlciBmb3IgYGJyLWV4YCBhbmQgYW5vdGhlciBmb3IgYGVuczVgLiIsIml0ZW1zIjp7InR5cGUiOiJzdHJpbmcifSwidHlwZSI6ImFycmF5In0sImxhYmVscyI6eyJkZXNjcmlwdGlvbiI6ImBsYWJlbHNgIGlzIGEgbGlzdCBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyBQcm9tZXRoZXVzIGxhYmVscywgYWxzbyBrbm93biBhcyBkaW1lbnNpb25zLlxuRnJvbSBjaG9vc2luZyBsYWJlbHMgcmVzdWx0cyB0aGUgbGV2ZWwgb2YgZ3JhbnVsYXJpdHkgb2YgdGhpcyBtZXRyaWMsIGFuZCB0aGUgYXZhaWxhYmxlIGFnZ3JlZ2F0aW9ucyBhdCBxdWVyeSB0aW1lLlxuSXQgbXVzdCBiZSBkb25lIGNhcmVmdWxseSBhcyBpdCBpbXBhY3RzIHRoZSBtZXRyaWMgY2FyZGluYWxpdHkgKGNmIGh0dHBzOi8vcmhvYnMtaGFuZGJvb2submV0bGlmeS5hcHAvcHJvZHVjdHMvb3BlbnNoaWZ0bW9uaXRvcmluZy90ZWxlbWV0cnkubWQvI3doYXQtaXMtdGhlLWNhcmRpbmFsaXR5LW9mLWEtbWV0cmljKS5cbkluIGdlbmVyYWwsIGF2b2lkIHNldHRpbmcgdmVyeSBoaWdoIGNhcmRpbmFsaXR5IGxhYmVscyBzdWNoIGFzIElQIG9yIE1BQyBhZGRyZXNzZXMuXG5cIlNyY0s4U19Pd25lck5hbWVcIiBvciBcIkRzdEs4U19Pd25lck5hbWVcIiBzaG91bGQgYmUgcHJlZmVycmVkIG92ZXIgXCJTcmNLOFNfTmFtZVwiIG9yIFwiRHN0SzhTX05hbWVcIiBhcyBtdWNoIGFzIHBvc3NpYmxlLlxuUmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmaWVsZHM6IGh0dHBzOi8vZG9jcy5vcGVuc2hpZnQuY29tL2NvbnRhaW5lci1wbGF0Zm9ybS9sYXRlc3Qvb2JzZXJ2YWJpbGl0eS9uZXR3b3JrX29ic2VydmFiaWxpdHkvanNvbi1mbG93cy1mb3JtYXQtcmVmZXJlbmNlLmh0bWwuIiwiaXRlbXMiOnsidHlwZSI6InN0cmluZyJ9LCJ0eXBlIjoiYXJyYXkifSwibWV0cmljTmFtZSI6eyJkZXNjcmlwdGlvbiI6Ik5hbWUgb2YgdGhlIG1ldHJpYy4gSW4gUHJvbWV0aGV1cywgaXQgaXMgYXV0b21hdGljYWxseSBwcmVmaXhlZCB3aXRoIFwibmV0b2JzZXJ2X1wiLiIsInBhdHRlcm4iOiJeW2EtekEtWl9dW2EtekEtWjAtOTpfXSokfF4kIiwidHlwZSI6InN0cmluZyJ9LCJyZW1hcCI6eyJhZGRpdGlvbmFsUHJvcGVydGllcyI6eyJwYXR0ZXJuIjoiXlthLXpBLVpfXVthLXpBLVowLTlfXSokIiwidHlwZSI6InN0cmluZyJ9LCJkZXNjcmlwdGlvbiI6IlNldCB0aGUgYHJlbWFwYCBwcm9wZXJ0eSB0byB1c2UgZGlmZmVyZW50IG5hbWVzIGZvciB0aGUgZ2VuZXJhdGVkIG1ldHJpYyBsYWJlbHMgdGhhbiB0aGUgZmxvdyBmaWVsZHMuIFVzZSB0aGUgb3JpZ2luIGZsb3cgZmllbGRzIGFzIGtleXMsIGFuZCB0aGUgZGVzaXJlZCBsYWJlbCBuYW1lcyBhcyB2YWx1ZXMuIiwidHlwZSI6Im9iamVjdCJ9LCJ0eXBlIjp7ImRlc2NyaXB0aW9uIjoiTWV0cmljIHR5cGU6IFwiQ291bnRlclwiLCBcIkhpc3RvZ3JhbVwiIG9yIFwiR2F1Z2VcIi5cblVzZSBcIkNvdW50ZXJcIiBmb3IgYW55IHZhbHVlIHRoYXQgaW5jcmVhc2VzIG92ZXIgdGltZSBhbmQgb24gd2hpY2ggeW91IGNhbiBjb21wdXRlIGEgcmF0ZSwgc3VjaCBhcyBCeXRlcyBvciBQYWNrZXRzLlxuVXNlIFwiSGlzdG9ncmFtXCIgZm9yIGFueSB2YWx1ZSB0aGF0IG11c3QgYmUgc2FtcGxlZCBpbmRlcGVuZGVudGx5LCBzdWNoIGFzIGxhdGVuY2llcy5cblVzZSBcIkdhdWdlXCIgZm9yIG90aGVyIHZhbHVlcyB0aGF0IGRvbid0IG5lY2Vzc2l0YXRlIGFjY3VyYWN5IG92ZXIgdGltZSAoZ2F1Z2VzIGFyZSBzYW1wbGVkIG9ubHkgZXZlcnkgTiBzZWNvbmRzIHdoZW4gUHJvbWV0aGV1cyBmZXRjaGVzIHRoZSBtZXRyaWMpLiIsImVudW0iOlsiQ291bnRlciIsIkhpc3RvZ3JhbSJdLCJ0eXBlIjoic3RyaW5nIn0sInZhbHVlRmllbGQiOnsiZGVzY3JpcHRpb24iOiJgdmFsdWVGaWVsZGAgaXMgdGhlIGZsb3cgZmllbGQgdGhhdCBtdXN0IGJlIHVzZWQgYXMgYSB2YWx1ZSBmb3IgdGhpcyBtZXRyaWMuIFRoaXMgZmllbGQgbXVzdCBob2xkIG51bWVyaWMgdmFsdWVzLlxuTGVhdmUgZW1wdHkgdG8gY291bnQgZmxvd3MgcmF0aGVyIHRoYW4gYSBzcGVjaWZpYyB2YWx1ZSBwZXIgZmxvdy5cblJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZmllbGRzOiBodHRwczovL2RvY3Mub3BlbnNoaWZ0LmNvbS9jb250YWluZXItcGxhdGZvcm0vbGF0ZXN0L29ic2VydmFiaWxpdHkvbmV0d29ya19vYnNlcnZhYmlsaXR5L2pzb24tZmxvd3MtZm9ybWF0LXJlZmVyZW5jZS5odG1sLiIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbInR5cGUiXSwidHlwZSI6Im9iamVjdCJ9LCJzdGF0dXMiOnsiZGVzY3JpcHRpb24iOiJGbG93TWV0cmljU3RhdHVzIGRlZmluZXMgdGhlIG9ic2VydmVkIHN0YXRlIG9mIEZsb3dNZXRyaWMiLCJwcm9wZXJ0aWVzIjp7ImNvbmRpdGlvbnMiOnsiZGVzY3JpcHRpb24iOiJgY29uZGl0aW9uc2AgcmVwcmVzZW50IHRoZSBsYXRlc3QgYXZhaWxhYmxlIG9ic2VydmF0aW9ucyBvZiBhbiBvYmplY3QncyBzdGF0ZSIsIml0ZW1zIjp7ImRlc2NyaXB0aW9uIjoiQ29uZGl0aW9uIGNvbnRhaW5zIGRldGFpbHMgZm9yIG9uZSBhc3BlY3Qgb2YgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyBBUEkgUmVzb3VyY2UuIiwicHJvcGVydGllcyI6eyJsYXN0VHJhbnNpdGlvblRpbWUiOnsiZGVzY3JpcHRpb24iOiJsYXN0VHJhbnNpdGlvblRpbWUgaXMgdGhlIGxhc3QgdGltZSB0aGUgY29uZGl0aW9uIHRyYW5zaXRpb25lZCBmcm9tIG9uZSBzdGF0dXMgdG8gYW5vdGhlci5cblRoaXMgc2hvdWxkIGJlIHdoZW4gdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uIGNoYW5nZWQuICBJZiB0aGF0IGlzIG5vdCBrbm93biwgdGhlbiB1c2luZyB0aGUgdGltZSB3aGVuIHRoZSBBUEkgZmllbGQgY2hhbmdlZCBpcyBhY2NlcHRhYmxlLiIsImZvcm1hdCI6ImRhdGUtdGltZSIsInR5cGUiOiJzdHJpbmcifSwibWVzc2FnZSI6eyJkZXNjcmlwdGlvbiI6Im1lc3NhZ2UgaXMgYSBodW1hbiByZWFkYWJsZSBtZXNzYWdlIGluZGljYXRpbmcgZGV0YWlscyBhYm91dCB0aGUgdHJhbnNpdGlvbi5cblRoaXMgbWF5IGJlIGFuIGVtcHR5IHN0cmluZy4iLCJtYXhMZW5ndGgiOjMyNzY4LCJ0eXBlIjoic3RyaW5nIn0sIm9ic2VydmVkR2VuZXJhdGlvbiI6eyJkZXNjcmlwdGlvbiI6Im9ic2VydmVkR2VuZXJhdGlvbiByZXByZXNlbnRzIHRoZSAubWV0YWRhdGEuZ2VuZXJhdGlvbiB0aGF0IHRoZSBjb25kaXRpb24gd2FzIHNldCBiYXNlZCB1cG9uLlxuRm9yIGluc3RhbmNlLCBpZiAubWV0YWRhdGEuZ2VuZXJhdGlvbiBpcyBjdXJyZW50bHkgMTIsIGJ1dCB0aGUgLnN0YXR1cy5jb25kaXRpb25zW3hdLm9ic2VydmVkR2VuZXJhdGlvbiBpcyA5LCB0aGUgY29uZGl0aW9uIGlzIG91dCBvZiBkYXRlXG53aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGluc3RhbmNlLiIsImZvcm1hdCI6ImludDY0IiwibWluaW11bSI6MCwidHlwZSI6ImludGVnZXIifSwicmVhc29uIjp7ImRlc2NyaXB0aW9uIjoicmVhc29uIGNvbnRhaW5zIGEgcHJvZ3JhbW1hdGljIGlkZW50aWZpZXIgaW5kaWNhdGluZyB0aGUgcmVhc29uIGZvciB0aGUgY29uZGl0aW9uJ3MgbGFzdCB0cmFuc2l0aW9uLlxuUHJvZHVjZXJzIG9mIHNwZWNpZmljIGNvbmRpdGlvbiB0eXBlcyBtYXkgZGVmaW5lIGV4cGVjdGVkIHZhbHVlcyBhbmQgbWVhbmluZ3MgZm9yIHRoaXMgZmllbGQsXG5hbmQgd2hldGhlciB0aGUgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGEgZ3VhcmFudGVlZCBBUEkuXG5UaGUgdmFsdWUgc2hvdWxkIGJlIGEgQ2FtZWxDYXNlIHN0cmluZy5cblRoaXMgZmllbGQgbWF5IG5vdCBiZSBlbXB0eS4iLCJtYXhMZW5ndGgiOjEwMjQsIm1pbkxlbmd0aCI6MSwicGF0dGVybiI6Il5bQS1aYS16XShbQS1aYS16MC05Xyw6XSpbQS1aYS16MC05X10pPyQiLCJ0eXBlIjoic3RyaW5nIn0sInN0YXR1cyI6eyJkZXNjcmlwdGlvbiI6InN0YXR1cyBvZiB0aGUgY29uZGl0aW9uLCBvbmUgb2YgVHJ1ZSwgRmFsc2UsIFVua25vd24uIiwiZW51bSI6WyJUcnVlIiwiRmFsc2UiLCJVbmtub3duIl0sInR5cGUiOiJzdHJpbmcifSwidHlwZSI6eyJkZXNjcmlwdGlvbiI6InR5cGUgb2YgY29uZGl0aW9uIGluIENhbWVsQ2FzZSBvciBpbiBmb28uZXhhbXBsZS5jb20vQ2FtZWxDYXNlLiIsIm1heExlbmd0aCI6MzE2LCJwYXR0ZXJuIjoiXihbYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPyhcXC5bYS16MC05XShbLWEtejAtOV0qW2EtejAtOV0pPykqLyk/KChbQS1aYS16MC05XVstQS1aYS16MC05Xy5dKik/W0EtWmEtejAtOV0pJCIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImxhc3RUcmFuc2l0aW9uVGltZSIsIm1lc3NhZ2UiLCJyZWFzb24iLCJzdGF0dXMiLCJ0eXBlIl0sInR5cGUiOiJvYmplY3QifSwidHlwZSI6ImFycmF5In0sInByb21ldGhldXNOYW1lIjp7ImRlc2NyaXB0aW9uIjoiTWV0cmljIG5hbWUsIGluY2x1ZGluZyBwcmVmaXgsIGFzIGl0IGFwcGVhcnMgaW4gUHJvbWV0aGV1cyIsInR5cGUiOiJzdHJpbmcifX0sInJlcXVpcmVkIjpbImNvbmRpdGlvbnMiXSwidHlwZSI6Im9iamVjdCJ9fSwidHlwZSI6Im9iamVjdCJ9fSwic2VydmVkIjp0cnVlLCJzdG9yYWdlIjp0cnVlLCJzdWJyZXNvdXJjZXMiOnsic3RhdHVzIjp7fX19XX0sInN0YXR1cyI6eyJhY2NlcHRlZE5hbWVzIjp7ImtpbmQiOiIiLCJwbHVyYWwiOiIifSwiY29uZGl0aW9ucyI6bnVsbCwic3RvcmVkVmVyc2lvbnMiOm51bGx9fQ== +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsiYWxtLWV4YW1wbGVzIjoiW1xuICB7XG4gICAgXCJhcGlWZXJzaW9uXCI6IFwiZmxvd3MubmV0b2JzZXJ2LmlvL3YxYWxwaGExXCIsXG4gICAgXCJraW5kXCI6IFwiRmxvd01ldHJpY1wiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJsYWJlbHNcIjoge1xuICAgICAgICBcImFwcC5rdWJlcm5ldGVzLmlvL2NyZWF0ZWQtYnlcIjogXCJuZXRvYnNlcnYtb3BlcmF0b3JcIixcbiAgICAgICAgXCJhcHAua3ViZXJuZXRlcy5pby9pbnN0YW5jZVwiOiBcImZsb3dtZXRyaWMtc2FtcGxlXCIsXG4gICAgICAgIFwiYXBwLmt1YmVybmV0ZXMuaW8vbWFuYWdlZC1ieVwiOiBcImt1c3RvbWl6ZVwiLFxuICAgICAgICBcImFwcC5rdWJlcm5ldGVzLmlvL25hbWVcIjogXCJmbG93bWV0cmljXCIsXG4gICAgICAgIFwiYXBwLmt1YmVybmV0ZXMuaW8vcGFydC1vZlwiOiBcIm5ldG9ic2Vydi1vcGVyYXRvclwiXG4gICAgICB9LFxuICAgICAgXCJuYW1lXCI6IFwiZmxvd21ldHJpYy1zYW1wbGVcIlxuICAgIH0sXG4gICAgXCJzcGVjXCI6IHtcbiAgICAgIFwiY2hhcnRzXCI6IFtcbiAgICAgICAge1xuICAgICAgICAgIFwiZGFzaGJvYXJkTmFtZVwiOiBcIk1haW5cIixcbiAgICAgICAgICBcInF1ZXJpZXNcIjogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBcImxlZ2VuZFwiOiBcIlwiLFxuICAgICAgICAgICAgICBcInByb21RTFwiOiBcInN1bShyYXRlKCRNRVRSSUNbMm1dKSlcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJ0aXRsZVwiOiBcIkV4dGVybmFsIGluZ3Jlc3MgdHJhZmZpY1wiLFxuICAgICAgICAgIFwidHlwZVwiOiBcIlNpbmdsZVN0YXRcIixcbiAgICAgICAgICBcInVuaXRcIjogXCJCcHNcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgXCJkYXNoYm9hcmROYW1lXCI6IFwiTWFpblwiLFxuICAgICAgICAgIFwicXVlcmllc1wiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwibGVnZW5kXCI6IFwie3tEc3RLOFNfTmFtZXNwYWNlfX0gLyB7e0RzdEs4U19Pd25lck5hbWV9fVwiLFxuICAgICAgICAgICAgICBcInByb21RTFwiOiBcInN1bShyYXRlKCRNRVRSSUN7RHN0SzhTX05hbWVzcGFjZSE9XFxcIlxcXCJ9WzJtXSkpIGJ5IChEc3RLOFNfTmFtZXNwYWNlLCBEc3RLOFNfT3duZXJOYW1lKVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBcInNlY3Rpb25OYW1lXCI6IFwiRXh0ZXJuYWxcIixcbiAgICAgICAgICBcInRpdGxlXCI6IFwiVG9wIGV4dGVybmFsIGluZ3Jlc3MgdHJhZmZpYyBwZXIgd29ya2xvYWRcIixcbiAgICAgICAgICBcInR5cGVcIjogXCJTdGFja0FyZWFcIixcbiAgICAgICAgICBcInVuaXRcIjogXCJCcHNcIlxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgXCJkaXJlY3Rpb25cIjogXCJJbmdyZXNzXCIsXG4gICAgICBcImZpbHRlcnNcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJmaWVsZFwiOiBcIlNyY1N1Ym5ldExhYmVsXCIsXG4gICAgICAgICAgXCJtYXRjaFR5cGVcIjogXCJBYnNlbmNlXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFwibGFiZWxzXCI6IFtcbiAgICAgICAgXCJEc3RLOFNfSG9zdE5hbWVcIixcbiAgICAgICAgXCJEc3RLOFNfTmFtZXNwYWNlXCIsXG4gICAgICAgIFwiRHN0SzhTX093bmVyTmFtZVwiLFxuICAgICAgICBcIkRzdEs4U19Pd25lclR5cGVcIlxuICAgICAgXSxcbiAgICAgIFwibWV0cmljTmFtZVwiOiBcImNsdXN0ZXJfZXh0ZXJuYWxfaW5ncmVzc19ieXRlc190b3RhbFwiLFxuICAgICAgXCJ0eXBlXCI6IFwiQ291bnRlclwiLFxuICAgICAgXCJ2YWx1ZUZpZWxkXCI6IFwiQnl0ZXNcIlxuICAgIH1cbiAgfSxcbiAge1xuICAgIFwiYXBpVmVyc2lvblwiOiBcImZsb3dzLm5ldG9ic2Vydi5pby92MWJldGEyXCIsXG4gICAgXCJraW5kXCI6IFwiRmxvd0NvbGxlY3RvclwiLFxuICAgIFwibWV0YWRhdGFcIjoge1xuICAgICAgXCJuYW1lXCI6IFwiY2x1c3RlclwiXG4gICAgfSxcbiAgICBcInNwZWNcIjoge1xuICAgICAgXCJhZ2VudFwiOiB7XG4gICAgICAgIFwiZWJwZlwiOiB7XG4gICAgICAgICAgXCJjYWNoZUFjdGl2ZVRpbWVvdXRcIjogXCI1c1wiLFxuICAgICAgICAgIFwiY2FjaGVNYXhGbG93c1wiOiAxMDAwMDAsXG4gICAgICAgICAgXCJleGNsdWRlSW50ZXJmYWNlc1wiOiBbXG4gICAgICAgICAgICBcImxvXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIFwiaW1hZ2VQdWxsUG9saWN5XCI6IFwiSWZOb3RQcmVzZW50XCIsXG4gICAgICAgICAgXCJpbnRlcmZhY2VzXCI6IFtdLFxuICAgICAgICAgIFwia2Fma2FCYXRjaFNpemVcIjogMTA0ODU3NixcbiAgICAgICAgICBcImxvZ0xldmVsXCI6IFwiaW5mb1wiLFxuICAgICAgICAgIFwibWV0cmljc1wiOiB7XG4gICAgICAgICAgICBcInNlcnZlclwiOiB7XG4gICAgICAgICAgICAgIFwicG9ydFwiOiA5NDAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInByaXZpbGVnZWRcIjogZmFsc2UsXG4gICAgICAgICAgXCJyZXNvdXJjZXNcIjoge1xuICAgICAgICAgICAgXCJsaW1pdHNcIjoge1xuICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBcIjgwME1pXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlcXVlc3RzXCI6IHtcbiAgICAgICAgICAgICAgXCJjcHVcIjogXCIxMDBtXCIsXG4gICAgICAgICAgICAgIFwibWVtb3J5XCI6IFwiNTBNaVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNhbXBsaW5nXCI6IDUwXG4gICAgICAgIH0sXG4gICAgICAgIFwidHlwZVwiOiBcImVCUEZcIlxuICAgICAgfSxcbiAgICAgIFwiY29uc29sZVBsdWdpblwiOiB7XG4gICAgICAgIFwiYXV0b3NjYWxlclwiOiB7XG4gICAgICAgICAgXCJtYXhSZXBsaWNhc1wiOiAzLFxuICAgICAgICAgIFwibWV0cmljc1wiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFwicmVzb3VyY2VcIjoge1xuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImNwdVwiLFxuICAgICAgICAgICAgICAgIFwidGFyZ2V0XCI6IHtcbiAgICAgICAgICAgICAgICAgIFwiYXZlcmFnZVV0aWxpemF0aW9uXCI6IDUwLFxuICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiVXRpbGl6YXRpb25cIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiUmVzb3VyY2VcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgXCJtaW5SZXBsaWNhc1wiOiAxLFxuICAgICAgICAgIFwic3RhdHVzXCI6IFwiRGlzYWJsZWRcIlxuICAgICAgICB9LFxuICAgICAgICBcImVuYWJsZVwiOiB0cnVlLFxuICAgICAgICBcImltYWdlUHVsbFBvbGljeVwiOiBcIklmTm90UHJlc2VudFwiLFxuICAgICAgICBcImxvZ0xldmVsXCI6IFwiaW5mb1wiLFxuICAgICAgICBcInBvcnROYW1pbmdcIjoge1xuICAgICAgICAgIFwiZW5hYmxlXCI6IHRydWUsXG4gICAgICAgICAgXCJwb3J0TmFtZXNcIjoge1xuICAgICAgICAgICAgXCIzMTAwXCI6IFwibG9raVwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInF1aWNrRmlsdGVyc1wiOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJkZWZhdWx0XCI6IHRydWUsXG4gICAgICAgICAgICBcImZpbHRlclwiOiB7XG4gICAgICAgICAgICAgIFwiZmxvd19sYXllclwiOiBcIlxcXCJhcHBcXFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJBcHBsaWNhdGlvbnNcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJmaWx0ZXJcIjoge1xuICAgICAgICAgICAgICBcImZsb3dfbGF5ZXJcIjogXCJcXFwiaW5mcmFcXFwiXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJJbmZyYXN0cnVjdHVyZVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImRlZmF1bHRcIjogdHJ1ZSxcbiAgICAgICAgICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAgICAgICAgXCJkc3Rfa2luZFwiOiBcIlxcXCJQb2RcXFwiXCIsXG4gICAgICAgICAgICAgIFwic3JjX2tpbmRcIjogXCJcXFwiUG9kXFxcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiUG9kcyBuZXR3b3JrXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiZmlsdGVyXCI6IHtcbiAgICAgICAgICAgICAgXCJkc3Rfa2luZFwiOiBcIlxcXCJTZXJ2aWNlXFxcIlwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwiU2VydmljZXMgbmV0d29ya1wiXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBcInJlcGxpY2FzXCI6IDEsXG4gICAgICAgIFwicmVzb3VyY2VzXCI6IHtcbiAgICAgICAgICBcImxpbWl0c1wiOiB7XG4gICAgICAgICAgICBcIm1lbW9yeVwiOiBcIjEwME1pXCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVxdWVzdHNcIjoge1xuICAgICAgICAgICAgXCJjcHVcIjogXCIxMDBtXCIsXG4gICAgICAgICAgICBcIm1lbW9yeVwiOiBcIjUwTWlcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFwiZGVwbG95bWVudE1vZGVsXCI6IFwiRGlyZWN0XCIsXG4gICAgICBcImV4cG9ydGVyc1wiOiBbXSxcbiAgICAgIFwia2Fma2FcIjoge1xuICAgICAgICBcImFkZHJlc3NcIjogXCJrYWZrYS1jbHVzdGVyLWthZmthLWJvb3RzdHJhcC5uZXRvYnNlcnZcIixcbiAgICAgICAgXCJ0bHNcIjoge1xuICAgICAgICAgIFwiY2FDZXJ0XCI6IHtcbiAgICAgICAgICAgIFwiY2VydEZpbGVcIjogXCJjYS5jcnRcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImthZmthLWNsdXN0ZXItY2x1c3Rlci1jYS1jZXJ0XCIsXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzZWNyZXRcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlbmFibGVcIjogZmFsc2UsXG4gICAgICAgICAgXCJ1c2VyQ2VydFwiOiB7XG4gICAgICAgICAgICBcImNlcnRGaWxlXCI6IFwidXNlci5jcnRcIixcbiAgICAgICAgICAgIFwiY2VydEtleVwiOiBcInVzZXIua2V5XCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJmbHAta2Fma2FcIixcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInNlY3JldFwiXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRvcGljXCI6IFwibmV0d29yay1mbG93c1wiXG4gICAgICB9LFxuICAgICAgXCJsb2tpXCI6IHtcbiAgICAgICAgXCJlbmFibGVcIjogdHJ1ZSxcbiAgICAgICAgXCJsb2tpU3RhY2tcIjoge1xuICAgICAgICAgIFwibmFtZVwiOiBcImxva2lcIlxuICAgICAgICB9LFxuICAgICAgICBcIm1vZGVcIjogXCJNb25vbGl0aGljXCIsXG4gICAgICAgIFwibW9ub2xpdGhpY1wiOiB7XG4gICAgICAgICAgXCJ0ZW5hbnRJRFwiOiBcIm5ldG9ic2VydlwiLFxuICAgICAgICAgIFwidGxzXCI6IHtcbiAgICAgICAgICAgIFwiY2FDZXJ0XCI6IHtcbiAgICAgICAgICAgICAgXCJjZXJ0RmlsZVwiOiBcInNlcnZpY2UtY2EuY3J0XCIsXG4gICAgICAgICAgICAgIFwibmFtZVwiOiBcImxva2ktZ2F0ZXdheS1jYS1idW5kbGVcIixcbiAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiY29uZmlnbWFwXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImVuYWJsZVwiOiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cmxcIjogXCJodHRwOi8vbG9raS5uZXRvYnNlcnYuc3ZjOjMxMDAvXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJyZWFkVGltZW91dFwiOiBcIjMwc1wiLFxuICAgICAgICBcIndyaXRlQmF0Y2hTaXplXCI6IDEwNDg1NzYwLFxuICAgICAgICBcIndyaXRlQmF0Y2hXYWl0XCI6IFwiMXNcIixcbiAgICAgICAgXCJ3cml0ZVRpbWVvdXRcIjogXCIxMHNcIlxuICAgICAgfSxcbiAgICAgIFwibmFtZXNwYWNlXCI6IFwibmV0b2JzZXJ2XCIsXG4gICAgICBcIm5ldHdvcmtQb2xpY3lcIjoge1xuICAgICAgICBcImFkZGl0aW9uYWxOYW1lc3BhY2VzXCI6IFtdLFxuICAgICAgICBcImVuYWJsZVwiOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIFwicHJvY2Vzc29yXCI6IHtcbiAgICAgICAgXCJpbWFnZVB1bGxQb2xpY3lcIjogXCJJZk5vdFByZXNlbnRcIixcbiAgICAgICAgXCJrYWZrYUNvbnN1bWVyQXV0b3NjYWxlclwiOiBudWxsLFxuICAgICAgICBcImthZmthQ29uc3VtZXJCYXRjaFNpemVcIjogMTA0ODU3NjAsXG4gICAgICAgIFwia2Fma2FDb25zdW1lclF1ZXVlQ2FwYWNpdHlcIjogMTAwMCxcbiAgICAgICAgXCJrYWZrYUNvbnN1bWVyUmVwbGljYXNcIjogMyxcbiAgICAgICAgXCJsb2dMZXZlbFwiOiBcImluZm9cIixcbiAgICAgICAgXCJsb2dUeXBlc1wiOiBcIkZsb3dzXCIsXG4gICAgICAgIFwibWV0cmljc1wiOiB7XG4gICAgICAgICAgXCJkaXNhYmxlQWxlcnRzXCI6IFtdLFxuICAgICAgICAgIFwic2VydmVyXCI6IHtcbiAgICAgICAgICAgIFwicG9ydFwiOiA5NDAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInJlc291cmNlc1wiOiB7XG4gICAgICAgICAgXCJsaW1pdHNcIjoge1xuICAgICAgICAgICAgXCJtZW1vcnlcIjogXCI4MDBNaVwiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlcXVlc3RzXCI6IHtcbiAgICAgICAgICAgIFwiY3B1XCI6IFwiMTAwbVwiLFxuICAgICAgICAgICAgXCJtZW1vcnlcIjogXCIxMDBNaVwiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgXCJwcm9tZXRoZXVzXCI6IHtcbiAgICAgICAgXCJxdWVyaWVyXCI6IHtcbiAgICAgICAgICBcImVuYWJsZVwiOiB0cnVlLFxuICAgICAgICAgIFwibW9kZVwiOiBcIkF1dG9cIixcbiAgICAgICAgICBcInRpbWVvdXRcIjogXCIzMHNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5dIiwiY2FwYWJpbGl0aWVzIjoiU2VhbWxlc3MgVXBncmFkZXMiLCJjYXRlZ29yaWVzIjoiTW9uaXRvcmluZywgTmV0d29ya2luZywgT2JzZXJ2YWJpbGl0eSIsImNvbnNvbGUub3BlbnNoaWZ0LmlvL3BsdWdpbnMiOiJbXCJuZXRvYnNlcnYtcGx1Z2luXCJdIiwiY29udGFpbmVySW1hZ2UiOiJxdWF5LmlvL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3I6MS45LjItY29tbXVuaXR5IiwiY3JlYXRlZEF0IjoiMjAyNS0wOS0wOFQwODoyMzoyNloiLCJkZXNjcmlwdGlvbiI6Ik5ldHdvcmsgZmxvd3MgY29sbGVjdG9yIGFuZCBtb25pdG9yaW5nIHNvbHV0aW9uIiwib3BlcmF0b3JmcmFtZXdvcmsuaW8vaW5pdGlhbGl6YXRpb24tcmVzb3VyY2UiOiJ7XCJhcGlWZXJzaW9uXCI6XCJmbG93cy5uZXRvYnNlcnYuaW8vdjFiZXRhMlwiLCBcImtpbmRcIjpcIkZsb3dDb2xsZWN0b3JcIixcIm1ldGFkYXRhXCI6e1wibmFtZVwiOlwiY2x1c3RlclwifSxcInNwZWNcIjoge319Iiwib3BlcmF0b3JmcmFtZXdvcmsuaW8vc3VnZ2VzdGVkLW5hbWVzcGFjZSI6Im9wZW5zaGlmdC1uZXRvYnNlcnYtb3BlcmF0b3IiLCJvcGVyYXRvcnMub3BlcmF0b3JmcmFtZXdvcmsuaW8vYnVpbGRlciI6Im9wZXJhdG9yLXNkay12MS40MC4wIiwib3BlcmF0b3JzLm9wZXJhdG9yZnJhbWV3b3JrLmlvL3Byb2plY3RfbGF5b3V0IjoiZ28ua3ViZWJ1aWxkZXIuaW8vdjQiLCJyZXBvc2l0b3J5IjoiaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3IiLCJzdXBwb3J0IjoiTmV0T2JzZXJ2IHRlYW0ifSwibGFiZWxzIjp7Im9wZXJhdG9yZnJhbWV3b3JrLmlvL2FyY2guYW1kNjQiOiJzdXBwb3J0ZWQiLCJvcGVyYXRvcmZyYW1ld29yay5pby9hcmNoLmFybTY0Ijoic3VwcG9ydGVkIiwib3BlcmF0b3JmcmFtZXdvcmsuaW8vYXJjaC5wcGM2NGxlIjoic3VwcG9ydGVkIiwib3BlcmF0b3JmcmFtZXdvcmsuaW8vYXJjaC5zMzkweCI6InN1cHBvcnRlZCIsIm9wZXJhdG9yZnJhbWV3b3JrLmlvL29zLmxpbnV4Ijoic3VwcG9ydGVkIn0sIm5hbWUiOiJuZXRvYnNlcnYtb3BlcmF0b3IudjEuOS4yLWNvbW11bml0eSIsIm5hbWVzcGFjZSI6InBsYWNlaG9sZGVyIn0sInNwZWMiOnsiYXBpc2VydmljZWRlZmluaXRpb25zIjp7fSwiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZGVzY3JpcHRpb24iOiJgRmxvd0NvbGxlY3RvcmAgaXMgdGhlIHNjaGVtYSBmb3IgdGhlIG5ldHdvcmsgZmxvd3MgY29sbGVjdGlvbiBBUEksIHdoaWNoIHBpbG90cyBhbmQgY29uZmlndXJlcyB0aGUgdW5kZXJseWluZyBkZXBsb3ltZW50cy4iLCJkaXNwbGF5TmFtZSI6IkZsb3cgQ29sbGVjdG9yIiwia2luZCI6IkZsb3dDb2xsZWN0b3IiLCJuYW1lIjoiZmxvd2NvbGxlY3RvcnMuZmxvd3MubmV0b2JzZXJ2LmlvIiwic3BlY0Rlc2NyaXB0b3JzIjpbeyJkZXNjcmlwdGlvbiI6ImRlZmluZXMgdGhlIGRlc2lyZWQgdHlwZSBvZiBkZXBsb3ltZW50IGZvciBmbG93IHByb2Nlc3NpbmcuIiwiZGlzcGxheU5hbWUiOiJEZXBsb3ltZW50IG1vZGVsIiwicGF0aCI6ImRlcGxveW1lbnRNb2RlbCJ9LHsiZGVzY3JpcHRpb24iOiJmb3IgZmxvd3MgZXh0cmFjdGlvbi4iLCJkaXNwbGF5TmFtZSI6IkFnZW50IGNvbmZpZ3VyYXRpb24iLCJwYXRoIjoiYWdlbnQifSx7InBhdGgiOiJhZ2VudC50eXBlIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmhpZGRlbiJdfSx7InBhdGgiOiJhZ2VudC5pcGZpeCIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpoaWRkZW4iXX0seyJkZXNjcmlwdGlvbiI6IlNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIGVCUEYtYmFzZWQgZmxvdyByZXBvcnRlci4iLCJkaXNwbGF5TmFtZSI6ImVCUEYgQWdlbnQgY29uZmlndXJhdGlvbiIsInBhdGgiOiJhZ2VudC5lYnBmIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTphZ2VudC50eXBlOmVCUEYiXX0seyJkaXNwbGF5TmFtZSI6IlByaXZpbGVnZWQgbW9kZSIsInBhdGgiOiJhZ2VudC5lYnBmLnByaXZpbGVnZWQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6Ym9vbGVhblN3aXRjaCJdfSx7ImRpc3BsYXlOYW1lIjoiQ2FjaGUgYWN0aXZlIHRpbWVvdXQiLCJwYXRoIjoiYWdlbnQuZWJwZi5jYWNoZUFjdGl2ZVRpbWVvdXQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkaXNwbGF5TmFtZSI6IkNhY2hlIG1heCBmbG93cyIsInBhdGgiOiJhZ2VudC5lYnBmLmNhY2hlTWF4Rmxvd3MiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkaXNwbGF5TmFtZSI6IkthZmthIGJhdGNoIHNpemUiLCJwYXRoIjoiYWdlbnQuZWJwZi5rYWZrYUJhdGNoU2l6ZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6ZGVwbG95bWVudE1vZGVsOkthZmthIiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRpc3BsYXlOYW1lIjoiTG9nIGxldmVsIiwicGF0aCI6ImFnZW50LmVicGYubG9nTGV2ZWwiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkaXNwbGF5TmFtZSI6IkltYWdlIHB1bGwgcG9saWN5IiwicGF0aCI6ImFnZW50LmVicGYuaW1hZ2VQdWxsUG9saWN5IiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmltYWdlUHVsbFBvbGljeSIsInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkaXNwbGF5TmFtZSI6IlJlc291cmNlIFJlcXVpcmVtZW50cyIsInBhdGgiOiJhZ2VudC5lYnBmLnJlc291cmNlcyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpyZXNvdXJjZVJlcXVpcmVtZW50cyJdfSx7InBhdGgiOiJhZ2VudC5lYnBmLmFkdmFuY2VkIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmhpZGRlbiJdfSx7InBhdGgiOiJhZ2VudC5lYnBmLmZsb3dGaWx0ZXIiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6aGlkZGVuIl19LHsicGF0aCI6ImFnZW50LmVicGYubWV0cmljcy5lbmFibGUiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6aGlkZGVuIl19LHsiZGVzY3JpcHRpb24iOiJ0byB1c2UgS2Fma2EgYXMgYSBicm9rZXIgYXMgcGFydCBvZiB0aGUgZmxvdyBjb2xsZWN0aW9uIHBpcGVsaW5lLiIsImRpc3BsYXlOYW1lIjoiS2Fma2EgY29uZmlndXJhdGlvbiIsInBhdGgiOiJrYWZrYSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6ZGVwbG95bWVudE1vZGVsOkthZmthIl19LHsiZGlzcGxheU5hbWUiOiJUTFMgY29uZmlndXJhdGlvbiIsInBhdGgiOiJrYWZrYS50bHMifSx7InBhdGgiOiJrYWZrYS50bHMuZW5hYmxlIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmJvb2xlYW5Td2l0Y2giXX0seyJkaXNwbGF5TmFtZSI6Ikluc2VjdXJlIiwicGF0aCI6ImthZmthLnRscy5pbnNlY3VyZVNraXBWZXJpZnkiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6Ym9vbGVhblN3aXRjaCIsInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OmthZmthLnRscy5lbmFibGU6dHJ1ZSJdfSx7ImRpc3BsYXlOYW1lIjoiVXNlciBjZXJ0aWZpY2F0ZSB3aGVuIHVzaW5nIG1UTFMiLCJwYXRoIjoia2Fma2EudGxzLnVzZXJDZXJ0IiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTprYWZrYS50bHMuZW5hYmxlOnRydWUiXX0seyJkaXNwbGF5TmFtZSI6IkNBIGNlcnRpZmljYXRlIiwicGF0aCI6ImthZmthLnRscy5jYUNlcnQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OmthZmthLnRscy5lbmFibGU6dHJ1ZSJdfSx7InBhdGgiOiJrYWZrYS5zYXNsIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmhpZGRlbiJdfSx7ImRlc2NyaXB0aW9uIjoib2YgdGhlIGNvbXBvbmVudCB0aGF0IHJlY2VpdmVzIHRoZSBmbG93cyBmcm9tIHRoZSBhZ2VudCwgZW5yaWNoZXMgdGhlbSwgZ2VuZXJhdGVzIG1ldHJpY3MsIGFuZCBmb3J3YXJkcyB0aGVtIHRvIHRoZSBMb2tpIHBlcnNpc3RlbmNlIGxheWVyIGFuZC9vciBhbnkgYXZhaWxhYmxlIGV4cG9ydGVyLiIsImRpc3BsYXlOYW1lIjoiUHJvY2Vzc29yIGNvbmZpZ3VyYXRpb24iLCJwYXRoIjoicHJvY2Vzc29yIn0seyJkaXNwbGF5TmFtZSI6Ik11bHRpLWNsdXN0ZXIgZGVwbG95bWVudCIsInBhdGgiOiJwcm9jZXNzb3IubXVsdGlDbHVzdGVyRGVwbG95bWVudCIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCIsInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6Ym9vbGVhblN3aXRjaCJdfSx7ImRpc3BsYXlOYW1lIjoiQ2x1c3RlciBuYW1lIiwicGF0aCI6InByb2Nlc3Nvci5jbHVzdGVyTmFtZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCIsInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OnByb2Nlc3Nvci5tdWx0aUNsdXN0ZXJEZXBsb3ltZW50OnRydWUiXX0seyJkaXNwbGF5TmFtZSI6IkF2YWlsYWJpbGl0eSB6b25lcyIsInBhdGgiOiJwcm9jZXNzb3IuYWRkWm9uZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpib29sZWFuU3dpdGNoIl19LHsicGF0aCI6InByb2Nlc3Nvci5hZHZhbmNlZCIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpoaWRkZW4iXX0seyJkaXNwbGF5TmFtZSI6Ik1ldHJpY3MgY29uZmlndXJhdGlvbiIsInBhdGgiOiJwcm9jZXNzb3IubWV0cmljcyJ9LHsiZGlzcGxheU5hbWUiOiJTZXJ2ZXIgY29uZmlndXJhdGlvbiIsInBhdGgiOiJwcm9jZXNzb3IubWV0cmljcy5zZXJ2ZXIifSx7ImRpc3BsYXlOYW1lIjoiVExTIGNvbmZpZ3VyYXRpb24iLCJwYXRoIjoicHJvY2Vzc29yLm1ldHJpY3Muc2VydmVyLnRscyJ9LHsiZGlzcGxheU5hbWUiOiJJbnNlY3VyZSIsInBhdGgiOiJwcm9jZXNzb3IubWV0cmljcy5zZXJ2ZXIudGxzLmluc2VjdXJlU2tpcFZlcmlmeSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6cHJvY2Vzc29yLm1ldHJpY3Muc2VydmVyLnRscy50eXBlOlByb3ZpZGVkIl19LHsiZGlzcGxheU5hbWUiOiJDZXJ0IiwicGF0aCI6InByb2Nlc3Nvci5tZXRyaWNzLnNlcnZlci50bHMucHJvdmlkZWQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OnByb2Nlc3Nvci5tZXRyaWNzLnNlcnZlci50bHMudHlwZTpQcm92aWRlZCJdfSx7ImRpc3BsYXlOYW1lIjoiQ0EiLCJwYXRoIjoicHJvY2Vzc29yLm1ldHJpY3Muc2VydmVyLnRscy5wcm92aWRlZENhRmlsZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6cHJvY2Vzc29yLm1ldHJpY3Muc2VydmVyLnRscy50eXBlOlByb3ZpZGVkIl19LHsiZGlzcGxheU5hbWUiOiJLYWZrYSBjb25zdW1lciByZXBsaWNhcyIsInBhdGgiOiJwcm9jZXNzb3Iua2Fma2FDb25zdW1lclJlcGxpY2FzIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpkZXBsb3ltZW50TW9kZWw6S2Fma2EiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGlzcGxheU5hbWUiOiJrYWZrYSBjb25zdW1lciBhdXRvc2NhbGVyIiwicGF0aCI6InByb2Nlc3Nvci5rYWZrYUNvbnN1bWVyQXV0b3NjYWxlciIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6ZGVwbG95bWVudE1vZGVsOkthZmthIiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRpc3BsYXlOYW1lIjoiS2Fma2EgY29uc3VtZXIgcXVldWUgY2FwYWNpdHkiLCJwYXRoIjoicHJvY2Vzc29yLmthZmthQ29uc3VtZXJRdWV1ZUNhcGFjaXR5IiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpkZXBsb3ltZW50TW9kZWw6S2Fma2EiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGlzcGxheU5hbWUiOiJLYWZrYSBjb25zdW1lciBiYXRjaCBzaXplIiwicGF0aCI6InByb2Nlc3Nvci5rYWZrYUNvbnN1bWVyQmF0Y2hTaXplIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpkZXBsb3ltZW50TW9kZWw6S2Fma2EiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsicGF0aCI6InByb2Nlc3Nvci5zdWJuZXRMYWJlbHMub3BlblNoaWZ0QXV0b0RldGVjdCIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpoaWRkZW4iXX0seyJkaXNwbGF5TmFtZSI6IkxvZyBsZXZlbCIsInBhdGgiOiJwcm9jZXNzb3IubG9nTGV2ZWwiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkaXNwbGF5TmFtZSI6IkltYWdlIHB1bGwgcG9saWN5IiwicGF0aCI6InByb2Nlc3Nvci5pbWFnZVB1bGxQb2xpY3kiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6aW1hZ2VQdWxsUG9saWN5IiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRpc3BsYXlOYW1lIjoiUmVzb3VyY2UgUmVxdWlyZW1lbnRzIiwicGF0aCI6InByb2Nlc3Nvci5yZXNvdXJjZXMiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6cmVzb3VyY2VSZXF1aXJlbWVudHMiXX0seyJkZXNjcmlwdGlvbiI6ImZvciB0aGUgZmxvdyBzdG9yZS4iLCJkaXNwbGF5TmFtZSI6Ikxva2kgY2xpZW50IHNldHRpbmdzIiwicGF0aCI6Imxva2kifSx7ImRpc3BsYXlOYW1lIjoiRW5hYmxlIiwicGF0aCI6Imxva2kuZW5hYmxlIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmJvb2xlYW5Td2l0Y2giXX0seyJkaXNwbGF5TmFtZSI6Ik1vZGUiLCJwYXRoIjoibG9raS5tb2RlIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpsb2tpLmVuYWJsZTp0cnVlIl19LHsiZGlzcGxheU5hbWUiOiJMb2tpIHN0YWNrIiwicGF0aCI6Imxva2kubG9raVN0YWNrIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpsb2tpLm1vZGU6TG9raVN0YWNrIl19LHsiZGlzcGxheU5hbWUiOiJNb25vbGl0aGljIiwicGF0aCI6Imxva2kubW9ub2xpdGhpYyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6bG9raS5tb2RlOk1vbm9saXRoaWMiXX0seyJkaXNwbGF5TmFtZSI6Ik1pY3Jvc2VydmljZXMiLCJwYXRoIjoibG9raS5taWNyb3NlcnZpY2VzIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpsb2tpLm1vZGU6TWljcm9zZXJ2aWNlcyJdfSx7ImRpc3BsYXlOYW1lIjoiTWFudWFsIiwicGF0aCI6Imxva2kubWFudWFsIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpsb2tpLm1vZGU6TWFudWFsIl19LHsiZGlzcGxheU5hbWUiOiJXcml0ZSBiYXRjaCB3YWl0IiwicGF0aCI6Imxva2kud3JpdGVCYXRjaFdhaXQiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5Omxva2kuZW5hYmxlOnRydWUiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGlzcGxheU5hbWUiOiJXcml0ZSBiYXRjaCBzaXplIiwicGF0aCI6Imxva2kud3JpdGVCYXRjaFNpemUiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5Omxva2kuZW5hYmxlOnRydWUiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGlzcGxheU5hbWUiOiJXcml0ZSB0aW1lb3V0IiwicGF0aCI6Imxva2kud3JpdGVUaW1lb3V0IiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpsb2tpLmVuYWJsZTp0cnVlIiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7InBhdGgiOiJsb2tpLmFkdmFuY2VkIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmhpZGRlbiJdfSx7ImRlc2NyaXB0aW9uIjoicmVsYXRlZCB0byB0aGUgT3BlblNoaWZ0IENvbnNvbGUgaW50ZWdyYXRpb24uIiwiZGlzcGxheU5hbWUiOiJDb25zb2xlIHBsdWdpbiBjb25maWd1cmF0aW9uIiwicGF0aCI6ImNvbnNvbGVQbHVnaW4iLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5Omxva2kuZW5hYmxlOnRydWUiXX0seyJkaXNwbGF5TmFtZSI6IkVuYWJsZSIsInBhdGgiOiJjb25zb2xlUGx1Z2luLmVuYWJsZSIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpib29sZWFuU3dpdGNoIl19LHsiZGlzcGxheU5hbWUiOiJQb3J0IG5hbWluZyIsInBhdGgiOiJjb25zb2xlUGx1Z2luLnBvcnROYW1pbmciLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OmNvbnNvbGVQbHVnaW4uZW5hYmxlOnRydWUiXX0seyJkaXNwbGF5TmFtZSI6IlF1aWNrIGZpbHRlcnMiLCJwYXRoIjoiY29uc29sZVBsdWdpbi5xdWlja0ZpbHRlcnMiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OmNvbnNvbGVQbHVnaW4uZW5hYmxlOnRydWUiXX0seyJkaXNwbGF5TmFtZSI6IlJlcGxpY2FzIiwicGF0aCI6ImNvbnNvbGVQbHVnaW4ucmVwbGljYXMiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6ZmllbGREZXBlbmRlbmN5OmNvbnNvbGVQbHVnaW4uZW5hYmxlOnRydWUiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmFkdmFuY2VkIl19LHsiZGlzcGxheU5hbWUiOiJIb3Jpem9udGFsIHBvZCBhdXRvc2NhbGVyIiwicGF0aCI6ImNvbnNvbGVQbHVnaW4uYXV0b3NjYWxlciIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6Y29uc29sZVBsdWdpbi5lbmFibGU6dHJ1ZSIsInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6YWR2YW5jZWQiXX0seyJkaXNwbGF5TmFtZSI6IkxvZyBsZXZlbCIsInBhdGgiOiJjb25zb2xlUGx1Z2luLmxvZ0xldmVsIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpjb25zb2xlUGx1Z2luLmVuYWJsZTp0cnVlIiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRpc3BsYXlOYW1lIjoiSW1hZ2UgcHVsbCBwb2xpY3kiLCJwYXRoIjoiY29uc29sZVBsdWdpbi5pbWFnZVB1bGxQb2xpY3kiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjpjb20udGVjdG9uaWMudWk6aW1hZ2VQdWxsUG9saWN5XCIiLCJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpjb25zb2xlUGx1Z2luLmVuYWJsZTp0cnVlIiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRpc3BsYXlOYW1lIjoiUmVzb3VyY2UgUmVxdWlyZW1lbnRzIiwicGF0aCI6ImNvbnNvbGVQbHVnaW4ucmVzb3VyY2VzIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOnJlc291cmNlUmVxdWlyZW1lbnRzIiwidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6Y29uc29sZVBsdWdpbi5lbmFibGU6dHJ1ZSJdfSx7InBhdGgiOiJjb25zb2xlUGx1Z2luLmFkdmFuY2VkIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmhpZGRlbiJdfSx7ImRlc2NyaXB0aW9uIjoiYWRkaXRpb25hbCBvcHRpb25hbCBleHBvcnRlcnMgZm9yIGN1c3RvbSBjb25zdW1wdGlvbiBvciBzdG9yYWdlLiIsImRpc3BsYXlOYW1lIjoiRXhwb3J0ZXJzIiwicGF0aCI6ImV4cG9ydGVycyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTphZHZhbmNlZCJdfSx7ImRpc3BsYXlOYW1lIjoiVHlwZSIsInBhdGgiOiJleHBvcnRlcnNbMF0udHlwZSJ9LHsiZGlzcGxheU5hbWUiOiJJUEZJWCBjb25maWd1cmF0aW9uIiwicGF0aCI6ImV4cG9ydGVyc1swXS5pcGZpeCIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmNvbS50ZWN0b25pYy51aTpmaWVsZERlcGVuZGVuY3k6ZXhwb3J0ZXJzLnR5cGU6SVBGSVgiXX0seyJkaXNwbGF5TmFtZSI6IkthZmthIGNvbmZpZ3VyYXRpb24iLCJwYXRoIjoiZXhwb3J0ZXJzWzBdLmthZmthIiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpleHBvcnRlcnMudHlwZTpLYWZrYSJdfSx7ImRpc3BsYXlOYW1lIjoiT3BlblRlbGVtZXRyeSBjb25maWd1cmF0aW9uIiwicGF0aCI6ImV4cG9ydGVyc1swXS5vcGVuVGVsZW1ldHJ5IiwieC1kZXNjcmlwdG9ycyI6WyJ1cm46YWxtOmRlc2NyaXB0b3I6Y29tLnRlY3RvbmljLnVpOmZpZWxkRGVwZW5kZW5jeTpleHBvcnRlcnMudHlwZTpPcGVuVGVsZW1ldHJ5Il19LHsiZGlzcGxheU5hbWUiOiJFeGNsdWRlIGludGVyZmFjZXMiLCJwYXRoIjoiYWdlbnQuZWJwZi5leGNsdWRlSW50ZXJmYWNlcyJ9LHsiZGlzcGxheU5hbWUiOiJGZWF0dXJlcyIsInBhdGgiOiJhZ2VudC5lYnBmLmZlYXR1cmVzIn0seyJkaXNwbGF5TmFtZSI6IkludGVyZmFjZXMiLCJwYXRoIjoiYWdlbnQuZWJwZi5pbnRlcmZhY2VzIn0seyJkaXNwbGF5TmFtZSI6Ik1ldHJpY3MiLCJwYXRoIjoiYWdlbnQuZWJwZi5tZXRyaWNzIn0seyJkaXNwbGF5TmFtZSI6IkRpc2FibGUgYWxlcnRzIiwicGF0aCI6ImFnZW50LmVicGYubWV0cmljcy5kaXNhYmxlQWxlcnRzIn0seyJkaXNwbGF5TmFtZSI6IlNlcnZlciIsInBhdGgiOiJhZ2VudC5lYnBmLm1ldHJpY3Muc2VydmVyIn0seyJkaXNwbGF5TmFtZSI6IlBvcnQiLCJwYXRoIjoiYWdlbnQuZWJwZi5tZXRyaWNzLnNlcnZlci5wb3J0In0seyJkaXNwbGF5TmFtZSI6IlNhbXBsaW5nIiwicGF0aCI6ImFnZW50LmVicGYuc2FtcGxpbmcifSx7ImRpc3BsYXlOYW1lIjoiRW5hYmxlIiwicGF0aCI6ImNvbnNvbGVQbHVnaW4ucG9ydE5hbWluZy5lbmFibGUifSx7ImRpc3BsYXlOYW1lIjoiUG9ydCBuYW1lcyIsInBhdGgiOiJjb25zb2xlUGx1Z2luLnBvcnROYW1pbmcucG9ydE5hbWVzIn0seyJkaXNwbGF5TmFtZSI6IkFkZHJlc3MiLCJwYXRoIjoia2Fma2EuYWRkcmVzcyJ9LHsiZGlzcGxheU5hbWUiOiJUb3BpYyIsInBhdGgiOiJrYWZrYS50b3BpYyJ9LHsiZGlzcGxheU5hbWUiOiJOYW1lIiwicGF0aCI6Imxva2kubG9raVN0YWNrLm5hbWUifSx7ImRpc3BsYXlOYW1lIjoiTmFtZXNwYWNlIiwicGF0aCI6Imxva2kubG9raVN0YWNrLm5hbWVzcGFjZSJ9LHsiZGlzcGxheU5hbWUiOiJBdXRoIHRva2VuIiwicGF0aCI6Imxva2kubWFudWFsLmF1dGhUb2tlbiJ9LHsiZGlzcGxheU5hbWUiOiJJbmdlc3RlciB1cmwiLCJwYXRoIjoibG9raS5tYW51YWwuaW5nZXN0ZXJVcmwifSx7ImRpc3BsYXlOYW1lIjoiUXVlcmllciB1cmwiLCJwYXRoIjoibG9raS5tYW51YWwucXVlcmllclVybCJ9LHsiZGlzcGxheU5hbWUiOiJTdGF0dXMgdXJsIiwicGF0aCI6Imxva2kubWFudWFsLnN0YXR1c1VybCJ9LHsiZGlzcGxheU5hbWUiOiJUZW5hbnQgaWQiLCJwYXRoIjoibG9raS5tYW51YWwudGVuYW50SUQifSx7ImRpc3BsYXlOYW1lIjoiSW5nZXN0ZXIgdXJsIiwicGF0aCI6Imxva2kubWljcm9zZXJ2aWNlcy5pbmdlc3RlclVybCJ9LHsiZGlzcGxheU5hbWUiOiJRdWVyaWVyIHVybCIsInBhdGgiOiJsb2tpLm1pY3Jvc2VydmljZXMucXVlcmllclVybCJ9LHsiZGlzcGxheU5hbWUiOiJUZW5hbnQgaWQiLCJwYXRoIjoibG9raS5taWNyb3NlcnZpY2VzLnRlbmFudElEIn0seyJkaXNwbGF5TmFtZSI6IlRlbmFudCBpZCIsInBhdGgiOiJsb2tpLm1vbm9saXRoaWMudGVuYW50SUQifSx7ImRpc3BsYXlOYW1lIjoiVXJsIiwicGF0aCI6Imxva2kubW9ub2xpdGhpYy51cmwifSx7ImRpc3BsYXlOYW1lIjoiUmVhZCB0aW1lb3V0IiwicGF0aCI6Imxva2kucmVhZFRpbWVvdXQifSx7ImRpc3BsYXlOYW1lIjoiTmFtZXNwYWNlIiwicGF0aCI6Im5hbWVzcGFjZSJ9LHsiZGlzcGxheU5hbWUiOiJOZXR3b3JrIHBvbGljeSIsInBhdGgiOiJuZXR3b3JrUG9saWN5In0seyJkaXNwbGF5TmFtZSI6IkFkZGl0aW9uYWwgbmFtZXNwYWNlcyIsInBhdGgiOiJuZXR3b3JrUG9saWN5LmFkZGl0aW9uYWxOYW1lc3BhY2VzIn0seyJkaXNwbGF5TmFtZSI6IkVuYWJsZSIsInBhdGgiOiJuZXR3b3JrUG9saWN5LmVuYWJsZSJ9LHsiZGlzcGxheU5hbWUiOiJEZWR1cGVyIiwicGF0aCI6InByb2Nlc3Nvci5kZWR1cGVyIn0seyJkaXNwbGF5TmFtZSI6Ik1vZGUiLCJwYXRoIjoicHJvY2Vzc29yLmRlZHVwZXIubW9kZSJ9LHsiZGlzcGxheU5hbWUiOiJTYW1wbGluZyIsInBhdGgiOiJwcm9jZXNzb3IuZGVkdXBlci5zYW1wbGluZyJ9LHsiZGlzcGxheU5hbWUiOiJGaWx0ZXJzIiwicGF0aCI6InByb2Nlc3Nvci5maWx0ZXJzIn0seyJkaXNwbGF5TmFtZSI6IkxvZyB0eXBlcyIsInBhdGgiOiJwcm9jZXNzb3IubG9nVHlwZXMifSx7ImRpc3BsYXlOYW1lIjoiRGlzYWJsZSBhbGVydHMiLCJwYXRoIjoicHJvY2Vzc29yLm1ldHJpY3MuZGlzYWJsZUFsZXJ0cyJ9LHsiZGlzcGxheU5hbWUiOiJJbmNsdWRlIGxpc3QiLCJwYXRoIjoicHJvY2Vzc29yLm1ldHJpY3MuaW5jbHVkZUxpc3QifSx7ImRpc3BsYXlOYW1lIjoiUG9ydCIsInBhdGgiOiJwcm9jZXNzb3IubWV0cmljcy5zZXJ2ZXIucG9ydCJ9LHsiZGlzcGxheU5hbWUiOiJTdWJuZXQgbGFiZWxzIiwicGF0aCI6InByb2Nlc3Nvci5zdWJuZXRMYWJlbHMifSx7ImRpc3BsYXlOYW1lIjoiQ3VzdG9tIGxhYmVscyIsInBhdGgiOiJwcm9jZXNzb3Iuc3VibmV0TGFiZWxzLmN1c3RvbUxhYmVscyJ9LHsiZGlzcGxheU5hbWUiOiJQcm9tZXRoZXVzIiwicGF0aCI6InByb21ldGhldXMifSx7ImRpc3BsYXlOYW1lIjoiUXVlcmllciIsInBhdGgiOiJwcm9tZXRoZXVzLnF1ZXJpZXIifSx7ImRpc3BsYXlOYW1lIjoiRW5hYmxlIiwicGF0aCI6InByb21ldGhldXMucXVlcmllci5lbmFibGUifSx7ImRpc3BsYXlOYW1lIjoiTWFudWFsIiwicGF0aCI6InByb21ldGhldXMucXVlcmllci5tYW51YWwifSx7ImRpc3BsYXlOYW1lIjoiRm9yd2FyZCB1c2VyIHRva2VuIiwicGF0aCI6InByb21ldGhldXMucXVlcmllci5tYW51YWwuZm9yd2FyZFVzZXJUb2tlbiJ9LHsiZGlzcGxheU5hbWUiOiJVcmwiLCJwYXRoIjoicHJvbWV0aGV1cy5xdWVyaWVyLm1hbnVhbC51cmwifSx7ImRpc3BsYXlOYW1lIjoiTW9kZSIsInBhdGgiOiJwcm9tZXRoZXVzLnF1ZXJpZXIubW9kZSJ9LHsiZGlzcGxheU5hbWUiOiJUaW1lb3V0IiwicGF0aCI6InByb21ldGhldXMucXVlcmllci50aW1lb3V0In1dLCJzdGF0dXNEZXNjcmlwdG9ycyI6W3siZGVzY3JpcHRpb24iOiJOYW1lc3BhY2Ugd2hlcmUgY29uc29sZSBwbHVnaW4gYW5kIGZsb3dsb2dzLXBpcGVsaW5lIGhhdmUgYmVlbiBkZXBsb3llZC4iLCJkaXNwbGF5TmFtZSI6Ik5hbWVzcGFjZSIsInBhdGgiOiJuYW1lc3BhY2UiLCJ4LWRlc2NyaXB0b3JzIjpbInVybjphbG06ZGVzY3JpcHRvcjp0ZXh0Il19LHsiZGVzY3JpcHRpb24iOiJDb25kaXRpb25zIG9mIHRoZSBGbG93Q29sbGVjdG9yIGluc3RhbmNlIGhlYWx0aC4iLCJkaXNwbGF5TmFtZSI6IkNvbmRpdGlvbnMiLCJwYXRoIjoiY29uZGl0aW9ucyIsIngtZGVzY3JpcHRvcnMiOlsidXJuOmFsbTpkZXNjcmlwdG9yOmlvLmt1YmVybmV0ZXMuY29uZGl0aW9ucyJdfV0sInZlcnNpb24iOiJ2MWJldGEyIn0seyJkZXNjcmlwdGlvbiI6ImBGbG93TWV0cmljYCBpcyB0aGUgc2NoZW1hIGZvciB0aGUgY3VzdG9tIG1ldHJpY3MgQVBJLCB3aGljaCBhbGxvd3MgdG8gZ2VuZXJhdGUgbW9yZSBtZXRyaWNzIG91dCBvZiBmbG93IGxvZ3MuIFlvdSBjYW4gZmluZCBleGFtcGxlcyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L25ldHdvcmstb2JzZXJ2YWJpbGl0eS1vcGVyYXRvci90cmVlL21haW4vY29uZmlnL3NhbXBsZXMvZmxvd21ldHJpY3MiLCJkaXNwbGF5TmFtZSI6IkZsb3cgTWV0cmljIiwia2luZCI6IkZsb3dNZXRyaWMiLCJuYW1lIjoiZmxvd21ldHJpY3MuZmxvd3MubmV0b2JzZXJ2LmlvIiwidmVyc2lvbiI6InYxYWxwaGExIn1dfSwiZGVzY3JpcHRpb24iOiJOZXRPYnNlcnYgT3BlcmF0b3IgaXMgYW4gT3BlblNoaWZ0IC8gS3ViZXJuZXRlcyBvcGVyYXRvciBmb3IgbmV0d29yayBvYnNlcnZhYmlsaXR5LiBJdCBkZXBsb3lzIGEgbW9uaXRvcmluZyBwaXBlbGluZSB0aGF0IGNvbnNpc3RzIGluOlxuLSBhbiBlQlBGIGFnZW50LCB0aGF0IGdlbmVyYXRlcyBuZXR3b3JrIGZsb3dzIGZyb20gY2FwdHVyZWQgcGFja2V0c1xuLSBmbG93bG9ncy1waXBlbGluZSwgYSBjb21wb25lbnQgdGhhdCBjb2xsZWN0cywgZW5yaWNoZXMgYW5kIGV4cG9ydHMgdGhlc2UgZmxvd3Ncbi0gd2hlbiB1c2VkIGluIE9wZW5TaGlmdCwgYSBDb25zb2xlIHBsdWdpbiBmb3IgZmxvd3MgdmlzdWFsaXphdGlvbiB3aXRoIHBvd2VyZnVsIGZpbHRlcmluZyBvcHRpb25zLCBhIHRvcG9sb2d5IHJlcHJlc2VudGF0aW9uIGFuZCBtb3JlXG5cbkZsb3cgZGF0YSBpcyB0aGVuIGF2YWlsYWJsZSBpbiBtdWx0aXBsZSB3YXlzLCBlYWNoIG9wdGlvbmFsOlxuXG4tIEFzIFByb21ldGhldXMgbWV0cmljc1xuLSBBcyByYXcgZmxvdyBsb2dzIHN0b3JlZCBpbiBHcmFmYW5hIExva2lcbi0gQXMgcmF3IGZsb3cgbG9ncyBleHBvcnRlZCB0byBhIGNvbGxlY3RvclxuXG4jIyBEZXBlbmRlbmNpZXNcblxuIyMjIExva2lcblxuW0xva2ldKGh0dHBzOi8vZ3JhZmFuYS5jb20vb3NzL2xva2kvKSwgZnJvbSBHcmFmYW5hTGFicywgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCBhcyB0aGUgYmFja2VuZCB0byBzdG9yZSBhbGwgY29sbGVjdGVkIGZsb3dzLiBUaGUgTmV0T2JzZXJ2IE9wZXJhdG9yIGRvZXMgbm90IGluc3RhbGwgTG9raSBkaXJlY3RseSwgaG93ZXZlciB3ZSBwcm92aWRlIHNvbWUgZ3VpZGFuY2UgdG8gaGVscCB5b3UgdGhlcmUuXG5cbkZvciBub3JtYWwgdXNhZ2UsIHdlIHJlY29tbWVuZCB0d28gb3B0aW9uczpcblxuLSBJbnN0YWxsaW5nIHRoZSBbTG9raSBPcGVyYXRvcl0oaHR0cHM6Ly9sb2tpLW9wZXJhdG9yLmRldi9kb2NzL3Byb2xvZ3VlL3F1aWNrc3RhcnQubWQvKS4gV2UgaGF2ZSB3cml0dGVuIFthIGd1aWRlXShodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L2RvY3VtZW50cy9ibG9iL21haW4vbG9raV9vcGVyYXRvci5tZCkgdG8gaGVscCB5b3UgdGhyb3VnaCB0aG9zZSBzdGVwcy4gUGxlYXNlIG5vdGUgdGhhdCBpdCByZXF1aXJlcyBjb25maWd1cmluZyBhbiBvYmplY3Qgc3RvcmFnZS4gTm90ZSBhbHNvIHRoYXQgdGhlIExva2kgT3BlcmF0b3IgY2FuIGFsc28gYmUgdXNlZCBmb3IgW09wZW5TaGlmdCBjbHVzdGVyIGxvZ2dpbmddKGh0dHBzOi8vZG9jcy5vcGVuc2hpZnQuY29tL2NvbnRhaW5lci1wbGF0Zm9ybS9sYXRlc3QvbG9nZ2luZy9jbHVzdGVyLWxvZ2dpbmcuaHRtbCkuIElmIHlvdSBkbyBzbywgeW91IHNob3VsZCBub3Qgc2hhcmUgdGhlIHNhbWUgYExva2lTdGFja2AgZm9yIExvZ2dpbmcgYW5kIE5ldE9ic2Vydi5cblxuLSBJbnN0YWxsaW5nIHVzaW5nIFtHcmFmYW5hJ3Mgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9ncmFmYW5hLmNvbS9kb2NzL2xva2kvbGF0ZXN0LykuIEhlcmUgYWxzbyB3ZSB3cm90ZSBhIFtcImRpc3RyaWJ1dGVkIExva2lcIiBzdGVwIGJ5IHN0ZXAgZ3VpZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZXRvYnNlcnYvZG9jdW1lbnRzL2Jsb2IvbWFpbi9sb2tpX2Rpc3RyaWJ1dGVkLm1kKS5cblxuRm9yIGEgcXVpY2sgdHJ5IHRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciBwcm9kdWN0aW9uIGFuZCBub3Qgc2NhbGFibGUgKGl0IGRlcGxveXMgYSBzaW5nbGUgcG9kLCBjb25maWd1cmVzIGEgMTBHQiBzdG9yYWdlIFBWQywgd2l0aCAyNCBob3VycyBvZiByZXRlbnRpb24pLCB5b3UgY2FuIHNpbXBseSBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kczpcblxuYGBgXG5rdWJlY3RsIGNyZWF0ZSBuYW1lc3BhY2UgbmV0b2JzZXJ2XG5rdWJlY3RsIGFwcGx5IC1mIFx1MDAzYyhjdXJsIC1MIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9uZXRvYnNlcnYvZG9jdW1lbnRzLzU0MTBlNjViOGUwNWFhYWJkMTI0NGE5NTI0Y2ZlZGQ4YWM4YzU2YjUvZXhhbXBsZXMvemVyby1jbGljay1sb2tpLzEtc3RvcmFnZS55YW1sKSAtbiBuZXRvYnNlcnZcbmt1YmVjdGwgYXBwbHkgLWYgXHUwMDNjKGN1cmwgLUwgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25ldG9ic2Vydi9kb2N1bWVudHMvNTQxMGU2NWI4ZTA1YWFhYmQxMjQ0YTk1MjRjZmVkZDhhYzhjNTZiNS9leGFtcGxlcy96ZXJvLWNsaWNrLWxva2kvMi1sb2tpLnlhbWwpIC1uIG5ldG9ic2VydlxuYGBgXG5cbklmIHlvdSBwcmVmZXIgdG8gbm90IHVzZSBMb2tpLCB5b3UgbXVzdCBzZXQgYHNwZWMubG9raS5lbmFibGVgIHRvIGBmYWxzZWAgaW4gYEZsb3dDb2xsZWN0b3JgLlxuSW4gdGhhdCBjYXNlLCB5b3UgY2FuIHN0aWxsIGdldCB0aGUgUHJvbWV0aGV1cyBtZXRyaWNzIG9yIGV4cG9ydCByYXcgZmxvd3MgdG8gYSBjdXN0b20gY29sbGVjdG9yLiBCdXQgYmUgYXdhcmUgdGhhdCBzb21lIG9mIHRoZSBDb25zb2xlIHBsdWdpbiBmZWF0dXJlcyB3aWxsIGJlIGRpc2FibGVkLiBGb3IgaW5zdGFuY2UsIHlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHZpZXcgcmF3IGZsb3dzIHRoZXJlLCBhbmQgdGhlIG1ldHJpY3MgLyB0b3BvbG9neSB3aWxsIGhhdmUgYSBtb3JlIGxpbWl0ZWQgbGV2ZWwgb2YgZGV0YWlscywgbWlzc2luZyBpbmZvcm1hdGlvbiBzdWNoIGFzIHBvZHMgb3IgSVBzLlxuXG4jIyMgS2Fma2FcblxuW0FwYWNoZSBLYWZrYV0oaHR0cHM6Ly9rYWZrYS5hcGFjaGUub3JnLykgY2FuIG9wdGlvbmFsbHkgYmUgdXNlZCBmb3IgYSBtb3JlIHJlc2lsaWVudCBhbmQgc2NhbGFibGUgYXJjaGl0ZWN0dXJlLiBZb3UgY2FuIHVzZSBmb3IgZXhhbXBsZSBbU3RyaW16aV0oaHR0cHM6Ly9zdHJpbXppLmlvLyksIGFuIG9wZXJhdG9yLWJhc2VkIGRpc3RyaWJ1dGlvbiBvZiBLYWZrYSBmb3IgS3ViZXJuZXRlcyBhbmQgT3BlblNoaWZ0LlxuXG4jIyMgR3JhZmFuYVxuXG5bR3JhZmFuYV0oaHR0cHM6Ly9ncmFmYW5hLmNvbS9vc3MvZ3JhZmFuYS8pIGNhbiBvcHRpb25hbGx5IGJlIGluc3RhbGxlZCBmb3IgY3VzdG9tIGRhc2hib2FyZHMgYW5kIHF1ZXJ5IGNhcGFiaWxpdGllcy5cblxuIyMgQ29uZmlndXJhdGlvblxuXG5UaGUgYEZsb3dDb2xsZWN0b3JgIHJlc291cmNlIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBvcGVyYXRvciBhbmQgaXRzIG1hbmFnZWQgY29tcG9uZW50cy4gQSBjb21wcmVoZW5zaXZlIGRvY3VtZW50YXRpb24gaXMgW2F2YWlsYWJsZSBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L25ldHdvcmstb2JzZXJ2YWJpbGl0eS1vcGVyYXRvci9ibG9iLzEuOS4yLWNvbW11bml0eS9kb2NzL0Zsb3dDb2xsZWN0b3IubWQpLCBhbmQgYSBmdWxsIHNhbXBsZSBmaWxlIFt0aGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3IvYmxvYi8xLjkuMi1jb21tdW5pdHkvY29uZmlnL3NhbXBsZXMvZmxvd3NfdjFiZXRhMl9mbG93Y29sbGVjdG9yLnlhbWwpLlxuXG5UbyBlZGl0IGNvbmZpZ3VyYXRpb24gaW4gY2x1c3RlciwgcnVuOlxuXG5gYGBiYXNoXG5rdWJlY3RsIGVkaXQgZmxvd2NvbGxlY3RvciBjbHVzdGVyXG5gYGBcblxuQXMgaXQgb3BlcmF0ZXMgY2x1c3Rlci13aWRlIG9uIGV2ZXJ5IG5vZGUsIG9ubHkgYSBzaW5nbGUgYEZsb3dDb2xsZWN0b3JgIGlzIGFsbG93ZWQsIGFuZCBpdCBoYXMgdG8gYmUgbmFtZWQgYGNsdXN0ZXJgLlxuXG5BIGNvdXBsZSBvZiBzZXR0aW5ncyBkZXNlcnZlIHNwZWNpYWwgYXR0ZW50aW9uOlxuXG4tIFNhbXBsaW5nIChgc3BlYy5hZ2VudC5lYnBmLnNhbXBsaW5nYCk6IGEgdmFsdWUgb2YgYDEwMGAgbWVhbnM6IG9uZSBmbG93IGV2ZXJ5IDEwMCBpcyBzYW1wbGVkLiBgMWAgbWVhbnMgYWxsIGZsb3dzIGFyZSBzYW1wbGVkLiBUaGUgbG93ZXIgaXQgaXMsIHRoZSBtb3JlIGZsb3dzIHlvdSBnZXQsIGFuZCB0aGUgbW9yZSBhY2N1cmF0ZSBhcmUgZGVyaXZlZCBtZXRyaWNzLCBidXQgdGhlIGhpZ2hlciBhbW91bnQgb2YgcmVzb3VyY2VzIGFyZSBjb25zdW1lZC4gQnkgZGVmYXVsdCwgc2FtcGxpbmcgaXMgc2V0IHRvIDUwIChpZS4gMTo1MCkuIE5vdGUgdGhhdCBtb3JlIHNhbXBsZWQgZmxvd3MgYWxzbyBtZWFucyBtb3JlIHN0b3JhZ2UgbmVlZGVkLiBXZSByZWNvbW1lbmQgdG8gc3RhcnQgd2l0aCBkZWZhdWx0IHZhbHVlcyBhbmQgcmVmaW5lIGVtcGlyaWNhbGx5LCB0byBmaWd1cmUgb3V0IHdoaWNoIHNldHRpbmcgeW91ciBjbHVzdGVyIGNhbiBtYW5hZ2UuXG5cbi0gTG9raSAoYHNwZWMubG9raWApOiBjb25maWd1cmUgaGVyZSBob3cgdG8gcmVhY2ggTG9raS4gVGhlIGRlZmF1bHQgdmFsdWVzIG1hdGNoIHRoZSBMb2tpIHF1aWNrIGluc3RhbGwgcGF0aHMgbWVudGlvbmVkIGFib3ZlLCBidXQgeW91IG1pZ2h0IGhhdmUgdG8gY29uZmlndXJlIGRpZmZlcmVudGx5IGlmIHlvdSB1c2VkIGFub3RoZXIgaW5zdGFsbGF0aW9uIG1ldGhvZC4gTWFrZSBzdXJlIHRvIGRpc2FibGUgaXQgKGBzcGVjLmxva2kuZW5hYmxlYCkgaWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIExva2kuXG5cbi0gUXVpY2sgZmlsdGVycyAoYHNwZWMuY29uc29sZVBsdWdpbi5xdWlja0ZpbHRlcnNgKTogY29uZmlndXJlIHByZXNldCBmaWx0ZXJzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgQ29uc29sZSBwbHVnaW4uIFRoZXkgb2ZmZXIgYSB3YXkgdG8gcXVpY2tseSBzd2l0Y2ggZnJvbSBmaWx0ZXJzIHRvIG90aGVycywgc3VjaCBhcyBzaG93aW5nIC8gaGlkaW5nIHBvZHMgbmV0d29yaywgb3IgaW5mcmFzdHJ1Y3R1cmUgbmV0d29yaywgb3IgYXBwbGljYXRpb24gbmV0d29yaywgZXRjLiBUaGV5IGNhbiBiZSB0dW5lZCB0byByZWZsZWN0IHRoZSBkaWZmZXJlbnQgd29ya2xvYWRzIHJ1bm5pbmcgb24geW91ciBjbHVzdGVyLiBGb3IgYSBsaXN0IG9mIGF2YWlsYWJsZSBmaWx0ZXJzLCBbY2hlY2sgdGhpcyBwYWdlXShodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L25ldHdvcmstb2JzZXJ2YWJpbGl0eS1vcGVyYXRvci9ibG9iLzEuOS4yLWNvbW11bml0eS9kb2NzL1F1aWNrRmlsdGVycy5tZCkuXG5cbi0gS2Fma2EgKGBzcGVjLmRlcGxveW1lbnRNb2RlbDogS0FGS0FgIGFuZCBgc3BlYy5rYWZrYWApOiB3aGVuIGVuYWJsZWQsIGludGVncmF0ZXMgdGhlIGZsb3cgY29sbGVjdGlvbiBwaXBlbGluZSB3aXRoIEthZmthLCBieSBzcGxpdHRpbmcgaW5nZXN0aW9uIGZyb20gdHJhbnNmb3JtYXRpb24gKGt1YmUgZW5yaWNobWVudCwgZGVyaXZlZCBtZXRyaWNzLCAuLi4pLiBLYWZrYSBjYW4gcHJvdmlkZSBiZXR0ZXIgc2NhbGFiaWxpdHksIHJlc2lsaWVuY3kgYW5kIGhpZ2ggYXZhaWxhYmlsaXR5IChbdmlldyBtb3JlIGRldGFpbHNdKGh0dHBzOi8vd3d3LnJlZGhhdC5jb20vZW4vdG9waWNzL2ludGVncmF0aW9uL3doYXQtaXMtYXBhY2hlLWthZmthKSkuIEFzc3VtZXMgS2Fma2EgaXMgYWxyZWFkeSBkZXBsb3llZCBhbmQgYSB0b3BpYyBpcyBjcmVhdGVkLlxuXG4tIEV4cG9ydGVycyAoYHNwZWMuZXhwb3J0ZXJzYCkgYW4gb3B0aW9uYWwgbGlzdCBvZiBleHBvcnRlcnMgdG8gd2hpY2ggdG8gc2VuZCBlbnJpY2hlZCBmbG93cy4gS0FGS0EgYW5kIElQRklYIGV4cG9ydGVycyBhcmUgc3VwcG9ydGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gZGVmaW5lIGFueSBjdXN0b20gc3RvcmFnZSBvciBwcm9jZXNzaW5nIHRoYXQgY2FuIHJlYWQgZnJvbSBLYWZrYSBvciB1c2UgdGhlIElQRklYIHN0YW5kYXJkLlxuXG4tIFRvIGVuYWJsZSBhdmFpbGFiaWxpdHkgem9uZXMgYXdhcmVuZXNzLCBzZXQgYHNwZWMucHJvY2Vzc29yLmFkZFpvbmVgIHRvIGB0cnVlYC5cblxuIyMgUmVzb3VyY2UgY29uc2lkZXJhdGlvbnNcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBvdXRsaW5lcyBleGFtcGxlcyBvZiByZXNvdXJjZSBjb25zaWRlcmF0aW9ucyBmb3IgY2x1c3RlcnMgd2l0aCBjZXJ0YWluIHdvcmtsb2FkIHNpemVzLlxuVGhlIGV4YW1wbGVzIG91dGxpbmVkIGluIHRoZSB0YWJsZSBkZW1vbnN0cmF0ZSBzY2VuYXJpb3MgdGhhdCBhcmUgdGFpbG9yZWQgdG8gc3BlY2lmaWMgd29ya2xvYWRzLiBDb25zaWRlciBlYWNoIGV4YW1wbGUgb25seSBhcyBhIGJhc2VsaW5lIGZyb20gd2hpY2ggYWRqdXN0bWVudHMgY2FuIGJlIG1hZGUgdG8gYWNjb21tb2RhdGUgeW91ciB3b3JrbG9hZCBuZWVkcy5cblxuXG58IFJlc291cmNlIHJlY29tbWVuZGF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgIHwgRXh0cmEgc21hbGwgKDEwIG5vZGVzKSB8IFNtYWxsICgyNSBub2RlcykgICAgICAgfCBNZWRpdW0gKDY1IG5vZGVzKSAqKiAgICB8IExhcmdlICgxMjAgbm9kZXMpICoqICAgICAgICAgIHxcbnwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gfFxufCAqV29ya2VyIE5vZGUgdkNQVSBhbmQgbWVtb3J5KiAgICAgICAgICAgICAgICAgICB8IDQgdkNQVXNcXHwgMTZHaUIgbWVtICogIHwgMTYgdkNQVXNcXHwgNjRHaUIgbWVtICogfCAxNiB2Q1BVc1xcfCA2NEdpQiBtZW0gICogfDE2IHZDUFVzXFx8IDY0R2lCIE1lbSAqICAgICAgICAgfFxufCAqTG9raVN0YWNrIHNpemUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGAxeC5leHRyYS1zbWFsbGAgICAgICAgfCBgMXguc21hbGxgICAgICAgICAgICAgIHwgYDF4LnNtYWxsYCAgICAgICAgICAgICAgfCBgMXgubWVkaXVtYCAgICAgICAgICAgICAgICAgICB8XG58ICpOZXR3b3JrIE9ic2VydmFiaWxpdHkgY29udHJvbGxlciBtZW1vcnkgbGltaXQqIHwgNDAwTWkgKGRlZmF1bHQpICAgICAgICB8IDQwME1pIChkZWZhdWx0KSAgICAgICAgfCA0MDBNaSAoZGVmYXVsdCkgICAgICAgICB8IDgwME1pICAgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgKmVCUEYgc2FtcGxpbmcgcmF0ZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1MCAoZGVmYXVsdCkgICAgICAgICAgIHwgNTAgKGRlZmF1bHQpICAgICAgICAgICB8IDUwIChkZWZhdWx0KSAgICAgICAgICAgIHwgNTAgKGRlZmF1bHQpICAgICAgICAgICAgICAgICAgfFxufCAqZUJQRiBtZW1vcnkgbGltaXQqICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgwME1pIChkZWZhdWx0KSAgICAgICAgfCA4MDBNaSAoZGVmYXVsdCkgICAgICAgIHwgMjAwME1pICAgICAgICAgICAgICAgICAgfCA4MDBNaSAoZGVmYXVsdCkgICAgICAgICAgICAgICB8XG58ICpGTFAgbWVtb3J5IGxpbWl0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgODAwTWkgKGRlZmF1bHQpICAgICAgICB8IDgwME1pIChkZWZhdWx0KSAgICAgICAgfCA4MDBNaSAoZGVmYXVsdCkgICAgICAgICB8IDgwME1pIChkZWZhdWx0KSAgICAgICAgICAgICAgIHxcbnwgKkZMUCBLYWZrYSBwYXJ0aXRpb25zKiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOL0EgICAgICAgICAgICAgICAgICAgIHwgNDggICAgICAgICAgICAgICAgICAgICB8IDQ4ICAgICAgICAgICAgICAgICAgICAgIHwgNDggICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxufCAqS2Fma2EgY29uc3VtZXIgcmVwbGljYXMqICAgICAgICAgICAgICAgICAgICAgICB8IE4vQSAgICAgICAgICAgICAgICAgICAgfCAyNCAgICAgICAgICAgICAgICAgICAgIHwgMjQgICAgICAgICAgICAgICAgICAgICAgfCAyNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG58ICpLYWZrYSBicm9rZXJzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTi9BICAgICAgICAgICAgICAgICAgICB8IDMgKGRlZmF1bHQpICAgICAgICAgICAgfCAzIChkZWZhdWx0KSAgICAgICAgICAgICB8IDMgKGRlZmF1bHQpICAgICAgICAgICAgICAgICAgIHxcblxuKi4gVGVzdGVkIHdpdGggQVdTIE02aSBpbnN0YW5jZXMuXG4qKi4gSW4gYWRkaXRpb24gdG8gdGhpcyB3b3JrZXIgYW5kIGl0cyBjb250cm9sbGVyLCAzIGluZnJhIG5vZGVzIChzaXplIGBNNmkuMTJ4bGFyZ2VgKSBhbmQgMSB3b3JrbG9hZCBub2RlIChzaXplIGBNNmkuOHhsYXJnZWApIHdlcmUgdGVzdGVkLlxuXG4jIyBGdXJ0aGVyIHJlYWRpbmdcblxuUGxlYXNlIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9uIEdpdEh1YiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuVGhpcyBkb2N1bWVudGF0aW9uIGluY2x1ZGVzOlxuXG4tIEFuIFtvdmVydmlld10oaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3Ijb3BlbnNoaWZ0LWNvbnNvbGUpIG9mIHRoZSBmZWF0dXJlcywgd2l0aCBzY3JlZW5zaG90c1xuLSBNb3JlIGluZm9ybWF0aW9uIG9uIFtjb25maWd1cmluZyBtZXRyaWNzXShodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L25ldHdvcmstb2JzZXJ2YWJpbGl0eS1vcGVyYXRvci9ibG9iLzEuOS4yLWNvbW11bml0eS9kb2NzL01ldHJpY3MubWQpLlxuLSBBIFtwZXJmb3JtYW5jZV0oaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3IjcGVyZm9ybWFuY2UtZmluZS10dW5pbmcpIHNlY3Rpb24sIGZvciBmaW5lLXR1bmluZ1xuLSBBIFtzZWN1cml0eV0oaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3Ijc2VjdXJpbmctZGF0YS1hbmQtY29tbXVuaWNhdGlvbnMpIHNlY3Rpb25cbi0gQW4gW0YuQS5RLl0oaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3IjZmFxLS10cm91Ymxlc2hvb3RpbmcpIHNlY3Rpb24iLCJkaXNwbGF5TmFtZSI6Ik5ldE9ic2VydiBPcGVyYXRvciIsImljb24iOlt7ImJhc2U2NGRhdGEiOiJQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejRLUENFdExTQkhaVzVsY21GMGIzSTZJRUZrYjJKbElFbHNiSFZ6ZEhKaGRHOXlJREkyTGpBdU1pd2dVMVpISUVWNGNHOXlkQ0JRYkhWbkxVbHVJQzRnVTFaSElGWmxjbk5wYjI0NklEWXVNREFnUW5WcGJHUWdNQ2tnSUMwdFBnbzhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVXVnlYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElnb0pJSFpwWlhkQ2IzZzlJakFnTUNBeE1EQWdNVEF3SWlCemRIbHNaVDBpWlc1aFlteGxMV0poWTJ0bmNtOTFibVE2Ym1WM0lEQWdNQ0F4TURBZ01UQXdPeUlnZUcxc09uTndZV05sUFNKd2NtVnpaWEoyWlNJK0NqeHpkSGxzWlNCMGVYQmxQU0owWlhoMEwyTnpjeUkrQ2drdWMzUXdlMlpwYkd3NmRYSnNLQ05UVmtkSlJGOHhYeWs3ZlFvSkxuTjBNWHRtYVd4c09pTkdSa1pHUmtZN2ZRb0pMbk4wTW50dmNHRmphWFI1T2pBdU5qdDlDZ2t1YzNRemUyOXdZV05wZEhrNk1DNDFPMzBLQ1M1emREUjdiM0JoWTJsMGVUb3dMalE3ZlFvOEwzTjBlV3hsUGdvOFp6NEtDVHhuUGdvSkNUeG5QZ29KQ1FrOGNtRmthV0ZzUjNKaFpHbGxiblFnYVdROUlsTldSMGxFWHpGZklpQmplRDBpTVRRdU56YzFPQ0lnWTNrOUlpMHlMamszTnpFaUlISTlJamt4TGpZeU55SWdaM0poWkdsbGJuUlZibWwwY3owaWRYTmxjbE53WVdObFQyNVZjMlVpUGdvSkNRa0pQSE4wYjNBZ0lHOW1abk5sZEQwaU1DSWdjM1I1YkdVOUluTjBiM0F0WTI5c2IzSTZJek5ETTBaQk5pSXZQZ29KQ1FrSlBITjBiM0FnSUc5bVpuTmxkRDBpTVNJZ2MzUjViR1U5SW5OMGIzQXRZMjlzYjNJNkl6TkNNRE0wTUNJdlBnb0pDUWs4TDNKaFpHbGhiRWR5WVdScFpXNTBQZ29KQ1FrOGNHRjBhQ0JqYkdGemN6MGljM1F3SWlCa1BTSk5OVEFzT1RsakxURXpMak1zTUMweU5TNDBMVFV1TXkwek5DNHlMVEV6TGpsRE5pNDNMRGMyTGpJc01TdzJNeTQzTERFc05UQkRNU3d5TWk0NUxESXlMamtzTVN3MU1Dd3hZekV6TGpjc01Dd3lOaTR5TERVdU55d3pOUzR4TERFMExqZ0tDUWtKQ1VNNU15NDNMREkwTGpZc09Ua3NNell1Tnl3NU9TdzFNRU01T1N3M055NHhMRGMzTGpFc09Ua3NOVEFzT1RsNklpOCtDZ2tKUEM5blBnb0pDVHhuUGdvSkNRazhZMmx5WTJ4bElHTnNZWE56UFNKemRERWlJR040UFNJek55NDFJaUJqZVQwaU9ERXVPU0lnY2owaU5TSXZQZ29KQ1R3dlp6NEtDUWs4Y0dGMGFDQmpiR0Z6Y3owaWMzUXhJaUJrUFNKTk5EZ3VOaXc1TVM0NWJERTRMamd0TkRNdU0yTXRNaTQxTFRBdU1TMDFMVEF1TnkwM0xqSXRNa3d6TXk0eUxEWTRMakpzTVM0MExURXVPR3d5TUMweU5TNHhZeTB4TGpVdE1pNDBMVEl1TXkwMUxqRXRNaTR6TFRjdU9VdzVMRFV5TGpJS0NRa0piRFEzTGpZdE1qa3VPV3d3TERCak1DNHhMVEF1TVN3d0xqSXRNQzR5TERBdU1pMHdMakpqTmk0eExUWXVNU3d4TlM0NUxUWXVNU3d5TWl3d2JEQXVNU3d3TGpGak5pdzJMakVzTml3eE5TNDVMVEF1TVN3eU1TNDVZeTB3TGpFc01DNHhMVEF1TWl3d0xqSXRNQzR5TERBdU1td3dMREFLQ1FrSlREUTRMallzT1RFdU9Yb2lMejRLQ1FrOFp5QmpiR0Z6Y3owaWMzUXlJajRLQ1FrSlBHTnBjbU5zWlNCamJHRnpjejBpYzNReElpQmplRDBpTlRBdU15SWdZM2s5SWpFMExqY2lJSEk5SWpNdU1TSXZQZ29KQ1R3dlp6NEtDUWs4WnlCamJHRnpjejBpYzNReklqNEtDUWtKUEdOcGNtTnNaU0JqYkdGemN6MGljM1F4SWlCamVEMGlNamN1TnlJZ1kzazlJalU0SWlCeVBTSXhMamNpTHo0S0NRazhMMmMrQ2drSlBHYytDZ2tKQ1R4amFYSmpiR1VnWTJ4aGMzTTlJbk4wTVNJZ1kzZzlJamMzTGpRaUlHTjVQU0kyT1M0eklpQnlQU0l4TGpjaUx6NEtDUWs4TDJjK0Nna0pQR2MrQ2drSkNUeGphWEpqYkdVZ1kyeGhjM005SW5OME1TSWdZM2c5SWpFMkxqTWlJR041UFNJek5pNDJJaUJ5UFNJeExqY2lMejRLQ1FrOEwyYytDZ2tKUEdjZ1kyeGhjM005SW5OME5DSStDZ2tKQ1R4amFYSmpiR1VnWTJ4aGMzTTlJbk4wTVNJZ1kzZzlJall6TGpjaUlHTjVQU0k0TlM0NUlpQnlQU0l5TGpJaUx6NEtDUWs4TDJjK0Nna0pQR2MrQ2drSkNUeGphWEpqYkdVZ1kyeGhjM005SW5OME1TSWdZM2c5SWpJNUxqUWlJR041UFNJeE9TNDJJaUJ5UFNJMExqZ2lMejRLQ1FrOEwyYytDZ2tKUEdjZ1kyeGhjM005SW5OME15SStDZ2tKQ1R4amFYSmpiR1VnWTJ4aGMzTTlJbk4wTVNJZ1kzZzlJamc0SWlCamVUMGlOVEFpSUhJOUlqUXVPQ0l2UGdvSkNUd3ZaejRLQ1R3dlp6NEtQQzluUGdvOEwzTjJaejRLIiwibWVkaWF0eXBlIjoiaW1hZ2Uvc3ZnK3htbCJ9XSwiaW5zdGFsbCI6eyJzcGVjIjp7ImNsdXN0ZXJQZXJtaXNzaW9ucyI6W3sicnVsZXMiOlt7ImFwaUdyb3VwcyI6WyIiXSwicmVzb3VyY2VzIjpbImNvbmZpZ21hcHMiLCJuYW1lc3BhY2VzIiwic2VjcmV0cyIsInNlcnZpY2VhY2NvdW50cyIsInNlcnZpY2VzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiZW5kcG9pbnRzIiwibm9kZXMiLCJwb2RzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcGlleHRlbnNpb25zLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0Iiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiYXBpZXh0ZW5zaW9ucy5rOHMuaW8iXSwicmVzb3VyY2VzIjpbImN1c3RvbXJlc291cmNlZGVmaW5pdGlvbnMvc3RhdHVzIl0sInZlcmJzIjpbInBhdGNoIiwidXBkYXRlIl19LHsiYXBpR3JvdXBzIjpbImFwaXJlZ2lzdHJhdGlvbi5rOHMuaW8iXSwicmVzb3VyY2VzIjpbImFwaXNlcnZpY2VzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJhcHBzIl0sInJlc291cmNlcyI6WyJkYWVtb25zZXRzIiwiZGVwbG95bWVudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiYXBwcyJdLCJyZXNvdXJjZXMiOlsicmVwbGljYXNldHMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImF1dG9zY2FsaW5nIl0sInJlc291cmNlcyI6WyJob3Jpem9udGFscG9kYXV0b3NjYWxlcnMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiYnBmbWFuLmlvIl0sInJlc291cmNlcyI6WyJjbHVzdGVyYnBmYXBwbGljYXRpb25zIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImJwZm1hbi5pbyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcmJwZmFwcGxpY2F0aW9ucy9zdGF0dXMiXSwidmVyYnMiOlsiZ2V0IiwicGF0Y2giLCJ1cGRhdGUiXX0seyJhcGlHcm91cHMiOlsiY29uZmlnLm9wZW5zaGlmdC5pbyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnZlcnNpb25zIiwibmV0d29ya3MiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImNvbnNvbGUub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjb25zb2xlcGx1Z2lucyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwicGF0Y2giLCJ1cGRhdGUiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJmbG93cy5uZXRvYnNlcnYuaW8iXSwicmVzb3VyY2VzIjpbImZsb3djb2xsZWN0b3JzIiwiZmxvd21ldHJpY3MiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsiZmxvd3MubmV0b2JzZXJ2LmlvIl0sInJlc291cmNlcyI6WyJmbG93Y29sbGVjdG9ycy9maW5hbGl6ZXJzIl0sInZlcmJzIjpbInVwZGF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJmbG93cy5uZXRvYnNlcnYuaW8iXSwicmVzb3VyY2VzIjpbImZsb3djb2xsZWN0b3JzL3N0YXR1cyIsImZsb3dtZXRyaWNzL3N0YXR1cyJdLCJ2ZXJicyI6WyJnZXQiLCJwYXRjaCIsInVwZGF0ZSJdfSx7ImFwaUdyb3VwcyI6WyJrOHMub3ZuLm9yZyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnVzZXJkZWZpbmVkbmV0d29ya3MiLCJ1c2VyZGVmaW5lZG5ldHdvcmtzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJsb2tpLmdyYWZhbmEuY29tIl0sInJlc291cmNlcyI6WyJsb2tpc3RhY2tzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJsb2tpLmdyYWZhbmEuY29tIl0sInJlc291cmNlTmFtZXMiOlsibG9ncyJdLCJyZXNvdXJjZXMiOlsibmV0d29yayJdLCJ2ZXJicyI6WyJjcmVhdGUiXX0seyJhcGlHcm91cHMiOlsibWV0cmljcy5rOHMuaW8iXSwicmVzb3VyY2VzIjpbInBvZHMiXSwidmVyYnMiOlsiY3JlYXRlIl19LHsiYXBpR3JvdXBzIjpbIm1vbml0b3JpbmcuY29yZW9zLmNvbSJdLCJyZXNvdXJjZXMiOlsicHJvbWV0aGV1c3J1bGVzIiwic2VydmljZW1vbml0b3JzIl0sInZlcmJzIjpbImNyZWF0ZSIsImRlbGV0ZSIsImdldCIsImxpc3QiLCJwYXRjaCIsInVwZGF0ZSIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbIm5ldHdvcmtpbmcuazhzLmlvIl0sInJlc291cmNlcyI6WyJuZXR3b3JrcG9saWNpZXMiXSwidmVyYnMiOlsiY3JlYXRlIiwiZGVsZXRlIiwiZ2V0IiwibGlzdCIsInBhdGNoIiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsib3BlcmF0b3Iub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJjb25zb2xlcyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0IiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsicmJhYy5hdXRob3JpemF0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnJvbGViaW5kaW5ncyIsInJvbGViaW5kaW5ncyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJkZWxldGUiLCJnZXQiLCJsaXN0IiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsic2VjdXJpdHkub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlcyI6WyJzZWN1cml0eWNvbnRleHRjb25zdHJhaW50cyJdLCJ2ZXJicyI6WyJjcmVhdGUiLCJsaXN0IiwidXBkYXRlIiwid2F0Y2giXX0seyJhcGlHcm91cHMiOlsic2VjdXJpdHkub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlTmFtZXMiOlsiaG9zdG5ldHdvcmsiXSwicmVzb3VyY2VzIjpbInNlY3VyaXR5Y29udGV4dGNvbnN0cmFpbnRzIl0sInZlcmJzIjpbInVzZSJdfSx7ImFwaUdyb3VwcyI6WyJhdXRoZW50aWNhdGlvbi5rOHMuaW8iXSwicmVzb3VyY2VzIjpbInRva2VucmV2aWV3cyJdLCJ2ZXJicyI6WyJjcmVhdGUiXX0seyJhcGlHcm91cHMiOlsiYXV0aG9yaXphdGlvbi5rOHMuaW8iXSwicmVzb3VyY2VzIjpbInN1YmplY3RhY2Nlc3NyZXZpZXdzIl0sInZlcmJzIjpbImNyZWF0ZSJdfV0sInNlcnZpY2VBY2NvdW50TmFtZSI6Im5ldG9ic2Vydi1jb250cm9sbGVyLW1hbmFnZXIifV0sImRlcGxveW1lbnRzIjpbeyJsYWJlbCI6eyJhcHAiOiJuZXRvYnNlcnYtb3BlcmF0b3IiLCJjb250cm9sLXBsYW5lIjoiY29udHJvbGxlci1tYW5hZ2VyIn0sIm5hbWUiOiJuZXRvYnNlcnYtY29udHJvbGxlci1tYW5hZ2VyIiwic3BlYyI6eyJyZXBsaWNhcyI6MSwic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwIjoibmV0b2JzZXJ2LW9wZXJhdG9yIiwiY29udHJvbC1wbGFuZSI6ImNvbnRyb2xsZXItbWFuYWdlciJ9fSwic3RyYXRlZ3kiOnt9LCJ0ZW1wbGF0ZSI6eyJtZXRhZGF0YSI6eyJsYWJlbHMiOnsiYXBwIjoibmV0b2JzZXJ2LW9wZXJhdG9yIiwiY29udHJvbC1wbGFuZSI6ImNvbnRyb2xsZXItbWFuYWdlciJ9fSwic3BlYyI6eyJjb250YWluZXJzIjpbeyJhcmdzIjpbIi0taGVhbHRoLXByb2JlLWJpbmQtYWRkcmVzcz06ODA4MSIsIi0tbWV0cmljcy1iaW5kLWFkZHJlc3M9Ojg0NDMiLCItLWxlYWRlci1lbGVjdCIsIi0tZWJwZi1hZ2VudC1pbWFnZT0kKFJFTEFURURfSU1BR0VfRUJQRl9BR0VOVCkiLCItLWZsb3dsb2dzLXBpcGVsaW5lLWltYWdlPSQoUkVMQVRFRF9JTUFHRV9GTE9XTE9HU19QSVBFTElORSkiLCItLWNvbnNvbGUtcGx1Z2luLWltYWdlPSQoUkVMQVRFRF9JTUFHRV9DT05TT0xFX1BMVUdJTikiLCItLWNvbnNvbGUtcGx1Z2luLWNvbXBhdC1pbWFnZT0kKFJFTEFURURfSU1BR0VfQ09OU09MRV9QTFVHSU5fQ09NUEFUKSIsIi0tbmFtZXNwYWNlPSQoTkFNRVNQQUNFKSIsIi0tZG93bnN0cmVhbS1kZXBsb3ltZW50PSQoRE9XTlNUUkVBTV9ERVBMT1lNRU5UKSIsIi0tcHJvZmlsaW5nLWJpbmQtYWRkcmVzcz0kKFBST0ZJTElOR19CSU5EX0FERFJFU1MpIiwiLS1tZXRyaWNzLWNlcnQtZmlsZT0vZXRjL3Rscy9wcml2YXRlL3Rscy5jcnQiLCItLW1ldHJpY3MtY2VydC1rZXktZmlsZT0vZXRjL3Rscy9wcml2YXRlL3Rscy5rZXkiXSwiY29tbWFuZCI6WyIvbWFuYWdlciJdLCJlbnYiOlt7Im5hbWUiOiJSRUxBVEVEX0lNQUdFX0VCUEZfQUdFTlQiLCJ2YWx1ZSI6InF1YXkuaW8vbmV0b2JzZXJ2L25ldG9ic2Vydi1lYnBmLWFnZW50OnYxLjkuMi1jb21tdW5pdHkifSx7Im5hbWUiOiJSRUxBVEVEX0lNQUdFX0ZMT1dMT0dTX1BJUEVMSU5FIiwidmFsdWUiOiJxdWF5LmlvL25ldG9ic2Vydi9mbG93bG9ncy1waXBlbGluZTp2MS45LjItY29tbXVuaXR5In0seyJuYW1lIjoiUkVMQVRFRF9JTUFHRV9DT05TT0xFX1BMVUdJTiIsInZhbHVlIjoicXVheS5pby9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LWNvbnNvbGUtcGx1Z2luOnYxLjkuMi1jb21tdW5pdHkifSx7Im5hbWUiOiJSRUxBVEVEX0lNQUdFX0NPTlNPTEVfUExVR0lOX0NPTVBBVCIsInZhbHVlIjoicXVheS5pby9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LWNvbnNvbGUtcGx1Z2luLXBmNDp2MS44LjItY29tbXVuaXR5In0seyJuYW1lIjoiRE9XTlNUUkVBTV9ERVBMT1lNRU5UIiwidmFsdWUiOiJmYWxzZSJ9LHsibmFtZSI6IlBST0ZJTElOR19CSU5EX0FERFJFU1MifSx7Im5hbWUiOiJOQU1FU1BBQ0UiLCJ2YWx1ZUZyb20iOnsiZmllbGRSZWYiOnsiZmllbGRQYXRoIjoibWV0YWRhdGEubmFtZXNwYWNlIn19fV0sImltYWdlIjoicXVheS5pby9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LW9wZXJhdG9yOjEuOS4yLWNvbW11bml0eSIsImltYWdlUHVsbFBvbGljeSI6IkFsd2F5cyIsImxpdmVuZXNzUHJvYmUiOnsiaHR0cEdldCI6eyJwYXRoIjoiL2hlYWx0aHoiLCJwb3J0Ijo4MDgxfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6MTUsInBlcmlvZFNlY29uZHMiOjIwfSwibmFtZSI6Im1hbmFnZXIiLCJwb3J0cyI6W3siY29udGFpbmVyUG9ydCI6OTQ0MywibmFtZSI6IndlYmhvb2stc2VydmVyIiwicHJvdG9jb2wiOiJUQ1AifV0sInJlYWRpbmVzc1Byb2JlIjp7Imh0dHBHZXQiOnsicGF0aCI6Ii9yZWFkeXoiLCJwb3J0Ijo4MDgxfSwiaW5pdGlhbERlbGF5U2Vjb25kcyI6NSwicGVyaW9kU2Vjb25kcyI6MTB9LCJyZXNvdXJjZXMiOnsibGltaXRzIjp7Im1lbW9yeSI6IjQwME1pIn0sInJlcXVlc3RzIjp7ImNwdSI6IjEwMG0iLCJtZW1vcnkiOiIxMDBNaSJ9fSwic2VjdXJpdHlDb250ZXh0Ijp7ImFsbG93UHJpdmlsZWdlRXNjYWxhdGlvbiI6ZmFsc2UsImNhcGFiaWxpdGllcyI6eyJkcm9wIjpbIkFMTCJdfSwicmVhZE9ubHlSb290RmlsZXN5c3RlbSI6dHJ1ZX0sInZvbHVtZU1vdW50cyI6W3sibW91bnRQYXRoIjoiL3RtcC9rOHMtd2ViaG9vay1zZXJ2ZXIvc2VydmluZy1jZXJ0cyIsIm5hbWUiOiJjZXJ0IiwicmVhZE9ubHkiOnRydWV9LHsibW91bnRQYXRoIjoiL2V0Yy90bHMvcHJpdmF0ZSIsIm5hbWUiOiJtYW5hZ2VyLW1ldHJpYy10bHMiLCJyZWFkT25seSI6dHJ1ZX1dfV0sInNlY3VyaXR5Q29udGV4dCI6eyJydW5Bc05vblJvb3QiOnRydWV9LCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJuZXRvYnNlcnYtY29udHJvbGxlci1tYW5hZ2VyIiwidGVybWluYXRpb25HcmFjZVBlcmlvZFNlY29uZHMiOjEwLCJ2b2x1bWVzIjpbeyJuYW1lIjoiY2VydCIsInNlY3JldCI6eyJkZWZhdWx0TW9kZSI6NDIwLCJzZWNyZXROYW1lIjoid2ViaG9vay1zZXJ2ZXItY2VydCJ9fSx7Im5hbWUiOiJtYW5hZ2VyLW1ldHJpYy10bHMiLCJzZWNyZXQiOnsiZGVmYXVsdE1vZGUiOjQyMCwic2VjcmV0TmFtZSI6Im1hbmFnZXItbWV0cmljcy10bHMifX1dfX19fV0sInBlcm1pc3Npb25zIjpbeyJydWxlcyI6W3siYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsiY29uZmlnbWFwcyJdLCJ2ZXJicyI6WyJnZXQiLCJsaXN0Iiwid2F0Y2giLCJjcmVhdGUiLCJ1cGRhdGUiLCJwYXRjaCIsImRlbGV0ZSJdfSx7ImFwaUdyb3VwcyI6WyJjb29yZGluYXRpb24uazhzLmlvIl0sInJlc291cmNlcyI6WyJsZWFzZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIiwiY3JlYXRlIiwidXBkYXRlIiwicGF0Y2giLCJkZWxldGUiXX0seyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJldmVudHMiXSwidmVyYnMiOlsiY3JlYXRlIiwicGF0Y2giXX1dLCJzZXJ2aWNlQWNjb3VudE5hbWUiOiJuZXRvYnNlcnYtY29udHJvbGxlci1tYW5hZ2VyIn1dfSwic3RyYXRlZ3kiOiJkZXBsb3ltZW50In0sImluc3RhbGxNb2RlcyI6W3sic3VwcG9ydGVkIjpmYWxzZSwidHlwZSI6Ik93bk5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjpmYWxzZSwidHlwZSI6IlNpbmdsZU5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjpmYWxzZSwidHlwZSI6Ik11bHRpTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJBbGxOYW1lc3BhY2VzIn1dLCJrZXl3b3JkcyI6WyJuZXR3b3JrIG9ic2VydmFiaWxpdHkiLCJlYnBmIiwiaXBmaXgiLCJmbG93IHRyYWNpbmciLCJmbG93cyIsInRvcG9sb2d5IiwibmV0d29yayIsIm9ic2VydmFiaWxpdHkiXSwibGlua3MiOlt7Im5hbWUiOiJQcm9qZWN0IHBhZ2UiLCJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L25ldHdvcmstb2JzZXJ2YWJpbGl0eS1vcGVyYXRvciJ9LHsibmFtZSI6Iklzc3VlIHRyYWNrZXIiLCJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vbmV0b2JzZXJ2L25ldHdvcmstb2JzZXJ2YWJpbGl0eS1vcGVyYXRvci9pc3N1ZXMifSx7Im5hbWUiOiJEaXNjdXNzaW9uIGJvYXJkIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL25ldG9ic2Vydi9uZXR3b3JrLW9ic2VydmFiaWxpdHktb3BlcmF0b3IvZGlzY3Vzc2lvbnMifV0sIm1haW50YWluZXJzIjpbeyJlbWFpbCI6ImpwaW5zb25uQHJlZGhhdC5jb20iLCJuYW1lIjoiSnVsaWVuIFBpbnNvbm5lYXUifSx7ImVtYWlsIjoianRha3ZvcmlAcmVkaGF0LmNvbSIsIm5hbWUiOiJKb2VsIFRha3ZvcmlhbiJ9LHsiZW1haWwiOiJrbWV0aEByZWRoYXQuY29tIiwibmFtZSI6IkthbG1hbiBNZXRoIn0seyJlbWFpbCI6Im1tYWhtb3VkQHJlZGhhdC5jb20iLCJuYW1lIjoiTW9oYW1lZCBTLiBNYWhtb3VkIn0seyJlbWFpbCI6Im9jYXphZGVAcmVkaGF0LmNvbSIsIm5hbWUiOiJPbGl2aWVyIENhemFkZSJ9LHsiZW1haWwiOiJyc2NoYWZmZUByZWRoYXQuY29tIiwibmFtZSI6IlJvbmVuIFNjaGFmZmVyIn0seyJlbWFpbCI6InN0bGVlQHJlZGhhdC5jb20iLCJuYW1lIjoiU3RldmVuIExlZSJ9XSwibWF0dXJpdHkiOiJhbHBoYSIsIm1pbkt1YmVWZXJzaW9uIjoiMS4yMy4wIiwicHJvdmlkZXIiOnsibmFtZSI6IlJlZCBIYXQiLCJ1cmwiOiJodHRwczovL3d3dy5yZWRoYXQuY29tIn0sInJlbGF0ZWRJbWFnZXMiOlt7ImltYWdlIjoicXVheS5pby9uZXRvYnNlcnYvbmV0b2JzZXJ2LWVicGYtYWdlbnQ6djEuOS4yLWNvbW11bml0eSIsIm5hbWUiOiJlYnBmLWFnZW50In0seyJpbWFnZSI6InF1YXkuaW8vbmV0b2JzZXJ2L2Zsb3dsb2dzLXBpcGVsaW5lOnYxLjkuMi1jb21tdW5pdHkiLCJuYW1lIjoiZmxvd2xvZ3MtcGlwZWxpbmUifSx7ImltYWdlIjoicXVheS5pby9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LWNvbnNvbGUtcGx1Z2luOnYxLjkuMi1jb21tdW5pdHkiLCJuYW1lIjoiY29uc29sZS1wbHVnaW4ifSx7ImltYWdlIjoicXVheS5pby9uZXRvYnNlcnYvbmV0d29yay1vYnNlcnZhYmlsaXR5LWNvbnNvbGUtcGx1Z2luLXBmNDp2MS44LjItY29tbXVuaXR5IiwibmFtZSI6ImNvbnNvbGUtcGx1Z2luLWNvbXBhdCJ9XSwidmVyc2lvbiI6IjEuOS4yLWNvbW11bml0eSIsIndlYmhvb2tkZWZpbml0aW9ucyI6W3siYWRtaXNzaW9uUmV2aWV3VmVyc2lvbnMiOlsidjEiXSwiY29udGFpbmVyUG9ydCI6NDQzLCJkZXBsb3ltZW50TmFtZSI6Im5ldG9ic2Vydi1jb250cm9sbGVyLW1hbmFnZXIiLCJmYWlsdXJlUG9saWN5IjoiRmFpbCIsImdlbmVyYXRlTmFtZSI6ImZsb3djb2xsZWN0b3Jjb252ZXJzaW9ud2ViaG9vay5uZXRvYnNlcnYuaW8iLCJydWxlcyI6W3siYXBpR3JvdXBzIjpbImZsb3dzLm5ldG9ic2Vydi5pbyJdLCJhcGlWZXJzaW9ucyI6WyJ2MWJldGEyIl0sIm9wZXJhdGlvbnMiOlsiQ1JFQVRFIiwiVVBEQVRFIl0sInJlc291cmNlcyI6WyJmbG93Y29sbGVjdG9ycyJdfV0sInNpZGVFZmZlY3RzIjoiTm9uZSIsInRhcmdldFBvcnQiOjk0NDMsInR5cGUiOiJWYWxpZGF0aW5nQWRtaXNzaW9uV2ViaG9vayIsIndlYmhvb2tQYXRoIjoiL3ZhbGlkYXRlLWZsb3dzLW5ldG9ic2Vydi1pby12MWJldGEyLWZsb3djb2xsZWN0b3IifSx7ImFkbWlzc2lvblJldmlld1ZlcnNpb25zIjpbInYxIl0sImNvbnRhaW5lclBvcnQiOjQ0MywiZGVwbG95bWVudE5hbWUiOiJuZXRvYnNlcnYtY29udHJvbGxlci1tYW5hZ2VyIiwiZmFpbHVyZVBvbGljeSI6IkZhaWwiLCJnZW5lcmF0ZU5hbWUiOiJmbG93bWV0cmljdmFsaWRhdGlvbndlYmhvb2submV0b2JzZXJ2LmlvIiwicnVsZXMiOlt7ImFwaUdyb3VwcyI6WyJmbG93cy5uZXRvYnNlcnYuaW8iXSwiYXBpVmVyc2lvbnMiOlsidjFhbHBoYTEiXSwib3BlcmF0aW9ucyI6WyJDUkVBVEUiLCJVUERBVEUiXSwicmVzb3VyY2VzIjpbImZsb3dtZXRyaWNzIl19XSwic2lkZUVmZmVjdHMiOiJOb25lIiwidGFyZ2V0UG9ydCI6OTQ0MywidHlwZSI6IlZhbGlkYXRpbmdBZG1pc3Npb25XZWJob29rIiwid2ViaG9va1BhdGgiOiIvdmFsaWRhdGUtZmxvd3MtbmV0b2JzZXJ2LWlvLXYxYWxwaGExLWZsb3dtZXRyaWMifV19fQ== +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoibW9uaXRvcmluZy5jb3Jlb3MuY29tL3YxIiwia2luZCI6IlNlcnZpY2VNb25pdG9yIiwibWV0YWRhdGEiOnsibGFiZWxzIjp7ImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifSwibmFtZSI6Im5ldG9ic2Vydi1tZXRyaWNzLW1vbml0b3IifSwic3BlYyI6eyJlbmRwb2ludHMiOlt7ImJlYXJlclRva2VuRmlsZSI6Ii92YXIvcnVuL3NlY3JldHMva3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC90b2tlbiIsImludGVydmFsIjoiMzBzIiwicGF0aCI6Ii9tZXRyaWNzIiwicG9ydCI6Imh0dHBzIiwic2NoZW1lIjoiaHR0cHMiLCJ0bHNDb25maWciOnsiY2FGaWxlIjoiL2V0Yy9wcm9tZXRoZXVzL2NvbmZpZ21hcHMvc2VydmluZy1jZXJ0cy1jYS1idW5kbGUvc2VydmljZS1jYS5jcnQiLCJzZXJ2ZXJOYW1lIjoibmV0b2JzZXJ2LW1ldHJpY3Mtc2VydmljZS5vcGVuc2hpZnQtbmV0b2JzZXJ2LW9wZXJhdG9yLnN2YyJ9fV0sInNlbGVjdG9yIjp7Im1hdGNoTGFiZWxzIjp7ImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifX19fQ== +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LW1ldHJpY3MtcmVhZGVyIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsibWV0cmljcy5rOHMuaW8iXSwicmVzb3VyY2VzIjpbInBvZHMiXSwidmVyYnMiOlsiY3JlYXRlIl19XX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LWNvbmZpZy13YXRjaGVyIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJjb25maWdtYXBzIl0sInZlcmJzIjpbImdldCIsIndhdGNoIl19XX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LWV4cG9zZS1tZXRyaWNzIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJzZXJ2aWNlcyIsImVuZHBvaW50cyIsInBvZHMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19XX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LWhvc3RuZXR3b3JrIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsic2VjdXJpdHkub3BlbnNoaWZ0LmlvIl0sInJlc291cmNlTmFtZXMiOlsiaG9zdG5ldHdvcmsiXSwicmVzb3VyY2VzIjpbInNlY3VyaXR5Y29udGV4dGNvbnN0cmFpbnRzIl0sInZlcmJzIjpbInVzZSJdfV19 +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LWluZm9ybWVycyJ9LCJydWxlcyI6W3siYXBpR3JvdXBzIjpbIiJdLCJyZXNvdXJjZXMiOlsicG9kcyIsIm5vZGVzIiwic2VydmljZXMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19LHsiYXBpR3JvdXBzIjpbImFwcHMiXSwicmVzb3VyY2VzIjpbInJlcGxpY2FzZXRzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfSx7ImFwaUdyb3VwcyI6WyJrOHMub3ZuLm9yZyJdLCJyZXNvdXJjZXMiOlsiY2x1c3RlcnVzZXJkZWZpbmVkbmV0d29ya3MiLCJ1c2VyZGVmaW5lZG5ldHdvcmtzIl0sInZlcmJzIjpbImdldCIsImxpc3QiLCJ3YXRjaCJdfV19 +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LWxva2ktcmVhZGVyIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsibG9raS5ncmFmYW5hLmNvbSJdLCJyZXNvdXJjZU5hbWVzIjpbImxvZ3MiXSwicmVzb3VyY2VzIjpbIm5ldHdvcmsiXSwidmVyYnMiOlsiZ2V0Il19XX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LWxva2ktd3JpdGVyIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsibG9raS5ncmFmYW5hLmNvbSJdLCJyZXNvdXJjZU5hbWVzIjpbImxvZ3MiXSwicmVzb3VyY2VzIjpbIm5ldHdvcmsiXSwidmVyYnMiOlsiY3JlYXRlIl19XX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJDbHVzdGVyUm9sZSIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LXRva2VuLXJldmlldyJ9LCJydWxlcyI6W3siYXBpR3JvdXBzIjpbImF1dGhlbnRpY2F0aW9uLms4cy5pbyJdLCJyZXNvdXJjZXMiOlsidG9rZW5yZXZpZXdzIl0sInZlcmJzIjpbImNyZWF0ZSJdfV19 +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlIiwibWV0YWRhdGEiOnsiY3JlYXRpb25UaW1lc3RhbXAiOm51bGwsIm5hbWUiOiJuZXRvYnNlcnYtb3BlbnNoaWZ0LW5ldG9ic2Vydi1vcGVyYXRvci1wcm9tZXRoZXVzIn0sInJ1bGVzIjpbeyJhcGlHcm91cHMiOlsiIl0sInJlc291cmNlcyI6WyJzZXJ2aWNlcyIsImVuZHBvaW50cyIsInBvZHMiXSwidmVyYnMiOlsiZ2V0IiwibGlzdCIsIndhdGNoIl19XX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pby92MSIsImtpbmQiOiJSb2xlQmluZGluZyIsIm1ldGFkYXRhIjp7ImNyZWF0aW9uVGltZXN0YW1wIjpudWxsLCJuYW1lIjoibmV0b2JzZXJ2LW9wZW5zaGlmdC1uZXRvYnNlcnYtb3BlcmF0b3ItcHJvbWV0aGV1cyJ9LCJyb2xlUmVmIjp7ImFwaUdyb3VwIjoicmJhYy5hdXRob3JpemF0aW9uLms4cy5pbyIsImtpbmQiOiJSb2xlIiwibmFtZSI6Im5ldG9ic2Vydi1vcGVuc2hpZnQtbmV0b2JzZXJ2LW9wZXJhdG9yLXByb21ldGhldXMifSwic3ViamVjdHMiOlt7ImtpbmQiOiJTZXJ2aWNlQWNjb3VudCIsIm5hbWUiOiJwcm9tZXRoZXVzLWs4cyIsIm5hbWVzcGFjZSI6Im9wZW5zaGlmdC1tb25pdG9yaW5nIn1dfQ== +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoidjEiLCJkYXRhIjp7ImNvbnRyb2xsZXJfbWFuYWdlcl9jb25maWcueWFtbCI6ImFwaVZlcnNpb246IGNvbnRyb2xsZXItcnVudGltZS5zaWdzLms4cy5pby92MWFscGhhMVxua2luZDogQ29udHJvbGxlck1hbmFnZXJDb25maWdcbmhlYWx0aDpcbiAgaGVhbHRoUHJvYmVCaW5kQWRkcmVzczogOjgwODFcbm1ldHJpY3M6XG4gIGJpbmRBZGRyZXNzOiA6ODQ0M1xud2ViaG9vazpcbiAgcG9ydDogOTQ0M1xubGVhZGVyRWxlY3Rpb246XG4gIGxlYWRlckVsZWN0OiB0cnVlXG4gIHJlc291cmNlTmFtZTogN2E3ZWNkY2QubmV0b2JzZXJ2LmlvXG4ifSwia2luZCI6IkNvbmZpZ01hcCIsIm1ldGFkYXRhIjp7ImxhYmVscyI6eyJhcHAiOiJuZXRvYnNlcnYtb3BlcmF0b3IifSwibmFtZSI6Im5ldG9ic2Vydi1tYW5hZ2VyLWNvbmZpZyJ9fQ== +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoidjEiLCJraW5kIjoiU2VydmljZSIsIm1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InNlcnZpY2UuYmV0YS5vcGVuc2hpZnQuaW8vc2VydmluZy1jZXJ0LXNlY3JldC1uYW1lIjoibWFuYWdlci1tZXRyaWNzLXRscyJ9LCJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibGFiZWxzIjp7ImFwcCI6Im5ldG9ic2Vydi1vcGVyYXRvciIsImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifSwibmFtZSI6Im5ldG9ic2Vydi1tZXRyaWNzLXNlcnZpY2UifSwic3BlYyI6eyJwb3J0cyI6W3sibmFtZSI6Imh0dHBzIiwicG9ydCI6ODQ0MywicHJvdG9jb2wiOiJUQ1AiLCJ0YXJnZXRQb3J0Ijo4NDQzfV0sInNlbGVjdG9yIjp7ImFwcCI6Im5ldG9ic2Vydi1vcGVyYXRvciIsImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifX0sInN0YXR1cyI6eyJsb2FkQmFsYW5jZXIiOnt9fX0= +- type: olm.bundle.object + value: + data: eyJhcGlWZXJzaW9uIjoidjEiLCJraW5kIjoiU2VydmljZSIsIm1ldGFkYXRhIjp7ImFubm90YXRpb25zIjp7InNlcnZpY2UuYmV0YS5vcGVuc2hpZnQuaW8vc2VydmluZy1jZXJ0LXNlY3JldC1uYW1lIjoid2ViaG9vay1zZXJ2ZXItY2VydCJ9LCJjcmVhdGlvblRpbWVzdGFtcCI6bnVsbCwibGFiZWxzIjp7ImFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudCI6IndlYmhvb2siLCJhcHAua3ViZXJuZXRlcy5pby9jcmVhdGVkLWJ5IjoibmV0b2JzZXJ2LW9wZXJhdG9yIiwiYXBwLmt1YmVybmV0ZXMuaW8vaW5zdGFuY2UiOiJ3ZWJob29rLXNlcnZpY2UiLCJhcHAua3ViZXJuZXRlcy5pby9tYW5hZ2VkLWJ5Ijoia3VzdG9taXplIiwiYXBwLmt1YmVybmV0ZXMuaW8vbmFtZSI6InNlcnZpY2UiLCJhcHAua3ViZXJuZXRlcy5pby9wYXJ0LW9mIjoibmV0b2JzZXJ2LW9wZXJhdG9yIn0sIm5hbWUiOiJuZXRvYnNlcnYtd2ViaG9vay1zZXJ2aWNlIn0sInNwZWMiOnsicG9ydHMiOlt7InBvcnQiOjQ0MywicHJvdG9jb2wiOiJUQ1AiLCJ0YXJnZXRQb3J0Ijo5NDQzfV0sInNlbGVjdG9yIjp7ImNvbnRyb2wtcGxhbmUiOiJjb250cm9sbGVyLW1hbmFnZXIifX0sInN0YXR1cyI6eyJsb2FkQmFsYW5jZXIiOnt9fX0= +relatedImages: +- image: quay.io/netobserv/flowlogs-pipeline:v1.9.2-community + name: flowlogs-pipeline +- image: quay.io/netobserv/netobserv-ebpf-agent:v1.9.2-community + name: ebpf-agent +- image: quay.io/netobserv/network-observability-console-plugin-pf4:v1.8.2-community + name: console-plugin-compat +- image: quay.io/netobserv/network-observability-console-plugin:v1.9.2-community + name: console-plugin +- image: quay.io/netobserv/network-observability-operator-bundle:v1.9.2-community + name: "" +- image: quay.io/netobserv/network-observability-operator:1.9.2-community + name: "" +schema: olm.bundle diff --git a/catalog/unreleased-legacy/v1.9.2-community/index.yaml b/catalog/unreleased-legacy/v1.9.2-community/index.yaml new file mode 100644 index 000000000..8be74e910 --- /dev/null +++ b/catalog/unreleased-legacy/v1.9.2-community/index.yaml @@ -0,0 +1,6 @@ +--- +entries: + - name: netobserv-operator.v1.9.2-community +name: latest +package: netobserv-operator +schema: olm.channel diff --git a/catalog/unreleased-legacy/v1.9.2-community/other.yaml b/catalog/unreleased-legacy/v1.9.2-community/other.yaml new file mode 100644 index 000000000..b4b1b0cf9 --- /dev/null +++ b/catalog/unreleased-legacy/v1.9.2-community/other.yaml @@ -0,0 +1,7 @@ +--- +defaultChannel: latest +icon: + base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntvcGFjaXR5OjAuNjt9Cgkuc3Qze29wYWNpdHk6MC41O30KCS5zdDR7b3BhY2l0eTowLjQ7fQo8L3N0eWxlPgo8Zz4KCTxnPgoJCTxnPgoJCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBjeD0iMTQuNzc1OCIgY3k9Ii0yLjk3NzEiIHI9IjkxLjYyNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzNDM0ZBNiIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzNCMDM0MCIvPgoJCQk8L3JhZGlhbEdyYWRpZW50PgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTAsOTljLTEzLjMsMC0yNS40LTUuMy0zNC4yLTEzLjlDNi43LDc2LjIsMSw2My43LDEsNTBDMSwyMi45LDIyLjksMSw1MCwxYzEzLjcsMCwyNi4yLDUuNywzNS4xLDE0LjgKCQkJCUM5My43LDI0LjYsOTksMzYuNyw5OSw1MEM5OSw3Ny4xLDc3LjEsOTksNTAsOTl6Ii8+CgkJPC9nPgoJCTxnPgoJCQk8Y2lyY2xlIGNsYXNzPSJzdDEiIGN4PSIzNy41IiBjeT0iODEuOSIgcj0iNSIvPgoJCTwvZz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDguNiw5MS45bDE4LjgtNDMuM2MtMi41LTAuMS01LTAuNy03LjItMkwzMy4yLDY4LjJsMS40LTEuOGwyMC0yNS4xYy0xLjUtMi40LTIuMy01LjEtMi4zLTcuOUw5LDUyLjIKCQkJbDQ3LjYtMjkuOWwwLDBjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjJjNi4xLTYuMSwxNS45LTYuMSwyMiwwbDAuMSwwLjFjNiw2LjEsNiwxNS45LTAuMSwyMS45Yy0wLjEsMC4xLTAuMiwwLjItMC4yLDAuMmwwLDAKCQkJTDQ4LjYsOTEuOXoiLz4KCQk8ZyBjbGFzcz0ic3QyIj4KCQkJPGNpcmNsZSBjbGFzcz0ic3QxIiBjeD0iNTAuMyIgY3k9IjE0LjciIHI9IjMuMSIvPgoJCTwvZz4KCQk8ZyBjbGFzcz0ic3QzIj4KCQkJPGNpcmNsZSBjbGFzcz0ic3QxIiBjeD0iMjcuNyIgY3k9IjU4IiByPSIxLjciLz4KCQk8L2c+CgkJPGc+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9Ijc3LjQiIGN5PSI2OS4zIiByPSIxLjciLz4KCQk8L2c+CgkJPGc+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjE2LjMiIGN5PSIzNi42IiByPSIxLjciLz4KCQk8L2c+CgkJPGcgY2xhc3M9InN0NCI+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjYzLjciIGN5PSI4NS45IiByPSIyLjIiLz4KCQk8L2c+CgkJPGc+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjI5LjQiIGN5PSIxOS42IiByPSI0LjgiLz4KCQk8L2c+CgkJPGcgY2xhc3M9InN0MyI+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9Ijg4IiBjeT0iNTAiIHI9IjQuOCIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8L3N2Zz4K + mediatype: image/svg+xml +name: netobserv-operator +schema: olm.package diff --git a/catalog/unreleased/v1.9.2-community/bundle.yaml b/catalog/unreleased/v1.9.2-community/bundle.yaml new file mode 100644 index 000000000..bdadc6eb0 --- /dev/null +++ b/catalog/unreleased/v1.9.2-community/bundle.yaml @@ -0,0 +1,840 @@ +--- +image: quay.io/netobserv/network-observability-operator-bundle:v1.9.2-community +name: netobserv-operator.v1.9.2-community +package: netobserv-operator +properties: +- type: olm.gvk + value: + group: flows.netobserv.io + kind: FlowCollector + version: v1beta2 +- type: olm.gvk + value: + group: flows.netobserv.io + kind: FlowMetric + version: v1alpha1 +- type: olm.package + value: + packageName: netobserv-operator + version: 1.9.2-community +- type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "flows.netobserv.io/v1alpha1", + "kind": "FlowMetric", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "netobserv-operator", + "app.kubernetes.io/instance": "flowmetric-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "flowmetric", + "app.kubernetes.io/part-of": "netobserv-operator" + }, + "name": "flowmetric-sample" + }, + "spec": { + "charts": [ + { + "dashboardName": "Main", + "queries": [ + { + "legend": "", + "promQL": "sum(rate($METRIC[2m]))" + } + ], + "title": "External ingress traffic", + "type": "SingleStat", + "unit": "Bps" + }, + { + "dashboardName": "Main", + "queries": [ + { + "legend": "{{DstK8S_Namespace}} / {{DstK8S_OwnerName}}", + "promQL": "sum(rate($METRIC{DstK8S_Namespace!=\"\"}[2m])) by (DstK8S_Namespace, DstK8S_OwnerName)" + } + ], + "sectionName": "External", + "title": "Top external ingress traffic per workload", + "type": "StackArea", + "unit": "Bps" + } + ], + "direction": "Ingress", + "filters": [ + { + "field": "SrcSubnetLabel", + "matchType": "Absence" + } + ], + "labels": [ + "DstK8S_HostName", + "DstK8S_Namespace", + "DstK8S_OwnerName", + "DstK8S_OwnerType" + ], + "metricName": "cluster_external_ingress_bytes_total", + "type": "Counter", + "valueField": "Bytes" + } + }, + { + "apiVersion": "flows.netobserv.io/v1beta2", + "kind": "FlowCollector", + "metadata": { + "name": "cluster" + }, + "spec": { + "agent": { + "ebpf": { + "cacheActiveTimeout": "5s", + "cacheMaxFlows": 100000, + "excludeInterfaces": [ + "lo" + ], + "imagePullPolicy": "IfNotPresent", + "interfaces": [], + "kafkaBatchSize": 1048576, + "logLevel": "info", + "metrics": { + "server": { + "port": 9400 + } + }, + "privileged": false, + "resources": { + "limits": { + "memory": "800Mi" + }, + "requests": { + "cpu": "100m", + "memory": "50Mi" + } + }, + "sampling": 50 + }, + "type": "eBPF" + }, + "consolePlugin": { + "autoscaler": { + "maxReplicas": 3, + "metrics": [ + { + "resource": { + "name": "cpu", + "target": { + "averageUtilization": 50, + "type": "Utilization" + } + }, + "type": "Resource" + } + ], + "minReplicas": 1, + "status": "Disabled" + }, + "enable": true, + "imagePullPolicy": "IfNotPresent", + "logLevel": "info", + "portNaming": { + "enable": true, + "portNames": { + "3100": "loki" + } + }, + "quickFilters": [ + { + "default": true, + "filter": { + "flow_layer": "\"app\"" + }, + "name": "Applications" + }, + { + "filter": { + "flow_layer": "\"infra\"" + }, + "name": "Infrastructure" + }, + { + "default": true, + "filter": { + "dst_kind": "\"Pod\"", + "src_kind": "\"Pod\"" + }, + "name": "Pods network" + }, + { + "filter": { + "dst_kind": "\"Service\"" + }, + "name": "Services network" + } + ], + "replicas": 1, + "resources": { + "limits": { + "memory": "100Mi" + }, + "requests": { + "cpu": "100m", + "memory": "50Mi" + } + } + }, + "deploymentModel": "Direct", + "exporters": [], + "kafka": { + "address": "kafka-cluster-kafka-bootstrap.netobserv", + "tls": { + "caCert": { + "certFile": "ca.crt", + "name": "kafka-cluster-cluster-ca-cert", + "type": "secret" + }, + "enable": false, + "userCert": { + "certFile": "user.crt", + "certKey": "user.key", + "name": "flp-kafka", + "type": "secret" + } + }, + "topic": "network-flows" + }, + "loki": { + "enable": true, + "lokiStack": { + "name": "loki" + }, + "mode": "Monolithic", + "monolithic": { + "tenantID": "netobserv", + "tls": { + "caCert": { + "certFile": "service-ca.crt", + "name": "loki-gateway-ca-bundle", + "type": "configmap" + }, + "enable": false + }, + "url": "http://loki.netobserv.svc:3100/" + }, + "readTimeout": "30s", + "writeBatchSize": 10485760, + "writeBatchWait": "1s", + "writeTimeout": "10s" + }, + "namespace": "netobserv", + "networkPolicy": { + "additionalNamespaces": [], + "enable": false + }, + "processor": { + "imagePullPolicy": "IfNotPresent", + "kafkaConsumerAutoscaler": null, + "kafkaConsumerBatchSize": 10485760, + "kafkaConsumerQueueCapacity": 1000, + "kafkaConsumerReplicas": 3, + "logLevel": "info", + "logTypes": "Flows", + "metrics": { + "disableAlerts": [], + "server": { + "port": 9401 + } + }, + "resources": { + "limits": { + "memory": "800Mi" + }, + "requests": { + "cpu": "100m", + "memory": "100Mi" + } + } + }, + "prometheus": { + "querier": { + "enable": true, + "mode": "Auto", + "timeout": "30s" + } + } + } + } + ] + capabilities: Seamless Upgrades + categories: Monitoring, Networking, Observability + console.openshift.io/plugins: '["netobserv-plugin"]' + containerImage: quay.io/netobserv/network-observability-operator:1.9.2-community + createdAt: "2025-09-08T08:23:26Z" + description: Network flows collector and monitoring solution + operatorframework.io/initialization-resource: '{"apiVersion":"flows.netobserv.io/v1beta2", + "kind":"FlowCollector","metadata":{"name":"cluster"},"spec": {}}' + operatorframework.io/suggested-namespace: openshift-netobserv-operator + operators.operatorframework.io/builder: operator-sdk-v1.40.0 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 + repository: https://github.com/netobserv/network-observability-operator + support: NetObserv team + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: '`FlowCollector` is the schema for the network flows collection + API, which pilots and configures the underlying deployments.' + displayName: Flow Collector + kind: FlowCollector + name: flowcollectors.flows.netobserv.io + specDescriptors: + - description: defines the desired type of deployment for flow processing. + displayName: Deployment model + path: deploymentModel + - description: for flows extraction. + displayName: Agent configuration + path: agent + - path: agent.type + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - path: agent.ipfix + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - description: Settings related to the eBPF-based flow reporter. + displayName: eBPF Agent configuration + path: agent.ebpf + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:agent.type:eBPF + - displayName: Privileged mode + path: agent.ebpf.privileged + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: Cache active timeout + path: agent.ebpf.cacheActiveTimeout + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Cache max flows + path: agent.ebpf.cacheMaxFlows + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Kafka batch size + path: agent.ebpf.kafkaBatchSize + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:deploymentModel:Kafka + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Log level + path: agent.ebpf.logLevel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Image pull policy + path: agent.ebpf.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Resource Requirements + path: agent.ebpf.resources + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:resourceRequirements + - path: agent.ebpf.advanced + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - path: agent.ebpf.flowFilter + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - path: agent.ebpf.metrics.enable + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - description: to use Kafka as a broker as part of the flow collection pipeline. + displayName: Kafka configuration + path: kafka + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:deploymentModel:Kafka + - displayName: TLS configuration + path: kafka.tls + - path: kafka.tls.enable + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: Insecure + path: kafka.tls.insecureSkipVerify + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:kafka.tls.enable:true + - displayName: User certificate when using mTLS + path: kafka.tls.userCert + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:kafka.tls.enable:true + - displayName: CA certificate + path: kafka.tls.caCert + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:kafka.tls.enable:true + - path: kafka.sasl + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - description: of the component that receives the flows from the agent, enriches + them, generates metrics, and forwards them to the Loki persistence layer + and/or any available exporter. + displayName: Processor configuration + path: processor + - displayName: Multi-cluster deployment + path: processor.multiClusterDeployment + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: Cluster name + path: processor.clusterName + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:processor.multiClusterDeployment:true + - displayName: Availability zones + path: processor.addZone + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - path: processor.advanced + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - displayName: Metrics configuration + path: processor.metrics + - displayName: Server configuration + path: processor.metrics.server + - displayName: TLS configuration + path: processor.metrics.server.tls + - displayName: Insecure + path: processor.metrics.server.tls.insecureSkipVerify + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:processor.metrics.server.tls.type:Provided + - displayName: Cert + path: processor.metrics.server.tls.provided + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:processor.metrics.server.tls.type:Provided + - displayName: CA + path: processor.metrics.server.tls.providedCaFile + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:processor.metrics.server.tls.type:Provided + - displayName: Kafka consumer replicas + path: processor.kafkaConsumerReplicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:deploymentModel:Kafka + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: kafka consumer autoscaler + path: processor.kafkaConsumerAutoscaler + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:deploymentModel:Kafka + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Kafka consumer queue capacity + path: processor.kafkaConsumerQueueCapacity + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:deploymentModel:Kafka + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Kafka consumer batch size + path: processor.kafkaConsumerBatchSize + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:deploymentModel:Kafka + - urn:alm:descriptor:com.tectonic.ui:advanced + - path: processor.subnetLabels.openShiftAutoDetect + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - displayName: Log level + path: processor.logLevel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Image pull policy + path: processor.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Resource Requirements + path: processor.resources + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:resourceRequirements + - description: for the flow store. + displayName: Loki client settings + path: loki + - displayName: Enable + path: loki.enable + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: Mode + path: loki.mode + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true + - displayName: Loki stack + path: loki.lokiStack + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.mode:LokiStack + - displayName: Monolithic + path: loki.monolithic + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.mode:Monolithic + - displayName: Microservices + path: loki.microservices + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.mode:Microservices + - displayName: Manual + path: loki.manual + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.mode:Manual + - displayName: Write batch wait + path: loki.writeBatchWait + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Write batch size + path: loki.writeBatchSize + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Write timeout + path: loki.writeTimeout + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - path: loki.advanced + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - description: related to the OpenShift Console integration. + displayName: Console plugin configuration + path: consolePlugin + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true + - displayName: Enable + path: consolePlugin.enable + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:booleanSwitch + - displayName: Port naming + path: consolePlugin.portNaming + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - displayName: Quick filters + path: consolePlugin.quickFilters + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - displayName: Replicas + path: consolePlugin.replicas + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Horizontal pod autoscaler + path: consolePlugin.autoscaler + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Log level + path: consolePlugin.logLevel + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Image pull policy + path: consolePlugin.imagePullPolicy + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:imagePullPolicy" + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Resource Requirements + path: consolePlugin.resources + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:resourceRequirements + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:consolePlugin.enable:true + - path: consolePlugin.advanced + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:hidden + - description: additional optional exporters for custom consumption or storage. + displayName: Exporters + path: exporters + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Type + path: exporters[0].type + - displayName: IPFIX configuration + path: exporters[0].ipfix + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:exporters.type:IPFIX + - displayName: Kafka configuration + path: exporters[0].kafka + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:exporters.type:Kafka + - displayName: OpenTelemetry configuration + path: exporters[0].openTelemetry + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:fieldDependency:exporters.type:OpenTelemetry + - displayName: Exclude interfaces + path: agent.ebpf.excludeInterfaces + - displayName: Features + path: agent.ebpf.features + - displayName: Interfaces + path: agent.ebpf.interfaces + - displayName: Metrics + path: agent.ebpf.metrics + - displayName: Disable alerts + path: agent.ebpf.metrics.disableAlerts + - displayName: Server + path: agent.ebpf.metrics.server + - displayName: Port + path: agent.ebpf.metrics.server.port + - displayName: Sampling + path: agent.ebpf.sampling + - displayName: Enable + path: consolePlugin.portNaming.enable + - displayName: Port names + path: consolePlugin.portNaming.portNames + - displayName: Address + path: kafka.address + - displayName: Topic + path: kafka.topic + - displayName: Name + path: loki.lokiStack.name + - displayName: Namespace + path: loki.lokiStack.namespace + - displayName: Auth token + path: loki.manual.authToken + - displayName: Ingester url + path: loki.manual.ingesterUrl + - displayName: Querier url + path: loki.manual.querierUrl + - displayName: Status url + path: loki.manual.statusUrl + - displayName: Tenant id + path: loki.manual.tenantID + - displayName: Ingester url + path: loki.microservices.ingesterUrl + - displayName: Querier url + path: loki.microservices.querierUrl + - displayName: Tenant id + path: loki.microservices.tenantID + - displayName: Tenant id + path: loki.monolithic.tenantID + - displayName: Url + path: loki.monolithic.url + - displayName: Read timeout + path: loki.readTimeout + - displayName: Namespace + path: namespace + - displayName: Network policy + path: networkPolicy + - displayName: Additional namespaces + path: networkPolicy.additionalNamespaces + - displayName: Enable + path: networkPolicy.enable + - displayName: Deduper + path: processor.deduper + - displayName: Mode + path: processor.deduper.mode + - displayName: Sampling + path: processor.deduper.sampling + - displayName: Filters + path: processor.filters + - displayName: Log types + path: processor.logTypes + - displayName: Disable alerts + path: processor.metrics.disableAlerts + - displayName: Include list + path: processor.metrics.includeList + - displayName: Port + path: processor.metrics.server.port + - displayName: Subnet labels + path: processor.subnetLabels + - displayName: Custom labels + path: processor.subnetLabels.customLabels + - displayName: Prometheus + path: prometheus + - displayName: Querier + path: prometheus.querier + - displayName: Enable + path: prometheus.querier.enable + - displayName: Manual + path: prometheus.querier.manual + - displayName: Forward user token + path: prometheus.querier.manual.forwardUserToken + - displayName: Url + path: prometheus.querier.manual.url + - displayName: Mode + path: prometheus.querier.mode + - displayName: Timeout + path: prometheus.querier.timeout + statusDescriptors: + - description: Namespace where console plugin and flowlogs-pipeline have been + deployed. + displayName: Namespace + path: namespace + x-descriptors: + - urn:alm:descriptor:text + - description: Conditions of the FlowCollector instance health. + displayName: Conditions + path: conditions + x-descriptors: + - urn:alm:descriptor:io.kubernetes.conditions + version: v1beta2 + - description: '`FlowMetric` is the schema for the custom metrics API, which + allows to generate more metrics out of flow logs. You can find examples + here: https://github.com/netobserv/network-observability-operator/tree/main/config/samples/flowmetrics' + displayName: Flow Metric + kind: FlowMetric + name: flowmetrics.flows.netobserv.io + version: v1alpha1 + description: |- + NetObserv Operator is an OpenShift / Kubernetes operator for network observability. It deploys a monitoring pipeline that consists in: + - an eBPF agent, that generates network flows from captured packets + - flowlogs-pipeline, a component that collects, enriches and exports these flows + - when used in OpenShift, a Console plugin for flows visualization with powerful filtering options, a topology representation and more + + Flow data is then available in multiple ways, each optional: + + - As Prometheus metrics + - As raw flow logs stored in Grafana Loki + - As raw flow logs exported to a collector + + ## Dependencies + + ### Loki + + [Loki](https://grafana.com/oss/loki/), from GrafanaLabs, can optionally be used as the backend to store all collected flows. The NetObserv Operator does not install Loki directly, however we provide some guidance to help you there. + + For normal usage, we recommend two options: + + - Installing the [Loki Operator](https://loki-operator.dev/docs/prologue/quickstart.md/). We have written [a guide](https://github.com/netobserv/documents/blob/main/loki_operator.md) to help you through those steps. Please note that it requires configuring an object storage. Note also that the Loki Operator can also be used for [OpenShift cluster logging](https://docs.openshift.com/container-platform/latest/logging/cluster-logging.html). If you do so, you should not share the same `LokiStack` for Logging and NetObserv. + + - Installing using [Grafana's official documentation](https://grafana.com/docs/loki/latest/). Here also we wrote a ["distributed Loki" step by step guide](https://github.com/netobserv/documents/blob/main/loki_distributed.md). + + For a quick try that is not suitable for production and not scalable (it deploys a single pod, configures a 10GB storage PVC, with 24 hours of retention), you can simply run the following commands: + + ``` + kubectl create namespace netobserv + kubectl apply -f <(curl -L https://raw.githubusercontent.com/netobserv/documents/5410e65b8e05aaabd1244a9524cfedd8ac8c56b5/examples/zero-click-loki/1-storage.yaml) -n netobserv + kubectl apply -f <(curl -L https://raw.githubusercontent.com/netobserv/documents/5410e65b8e05aaabd1244a9524cfedd8ac8c56b5/examples/zero-click-loki/2-loki.yaml) -n netobserv + ``` + + If you prefer to not use Loki, you must set `spec.loki.enable` to `false` in `FlowCollector`. + In that case, you can still get the Prometheus metrics or export raw flows to a custom collector. But be aware that some of the Console plugin features will be disabled. For instance, you will not be able to view raw flows there, and the metrics / topology will have a more limited level of details, missing information such as pods or IPs. + + ### Kafka + + [Apache Kafka](https://kafka.apache.org/) can optionally be used for a more resilient and scalable architecture. You can use for example [Strimzi](https://strimzi.io/), an operator-based distribution of Kafka for Kubernetes and OpenShift. + + ### Grafana + + [Grafana](https://grafana.com/oss/grafana/) can optionally be installed for custom dashboards and query capabilities. + + ## Configuration + + The `FlowCollector` resource is used to configure the operator and its managed components. A comprehensive documentation is [available here](https://github.com/netobserv/network-observability-operator/blob/1.9.2-community/docs/FlowCollector.md), and a full sample file [there](https://github.com/netobserv/network-observability-operator/blob/1.9.2-community/config/samples/flows_v1beta2_flowcollector.yaml). + + To edit configuration in cluster, run: + + ```bash + kubectl edit flowcollector cluster + ``` + + As it operates cluster-wide on every node, only a single `FlowCollector` is allowed, and it has to be named `cluster`. + + A couple of settings deserve special attention: + + - Sampling (`spec.agent.ebpf.sampling`): a value of `100` means: one flow every 100 is sampled. `1` means all flows are sampled. The lower it is, the more flows you get, and the more accurate are derived metrics, but the higher amount of resources are consumed. By default, sampling is set to 50 (ie. 1:50). Note that more sampled flows also means more storage needed. We recommend to start with default values and refine empirically, to figure out which setting your cluster can manage. + + - Loki (`spec.loki`): configure here how to reach Loki. The default values match the Loki quick install paths mentioned above, but you might have to configure differently if you used another installation method. Make sure to disable it (`spec.loki.enable`) if you don't want to use Loki. + + - Quick filters (`spec.consolePlugin.quickFilters`): configure preset filters to be displayed in the Console plugin. They offer a way to quickly switch from filters to others, such as showing / hiding pods network, or infrastructure network, or application network, etc. They can be tuned to reflect the different workloads running on your cluster. For a list of available filters, [check this page](https://github.com/netobserv/network-observability-operator/blob/1.9.2-community/docs/QuickFilters.md). + + - Kafka (`spec.deploymentModel: KAFKA` and `spec.kafka`): when enabled, integrates the flow collection pipeline with Kafka, by splitting ingestion from transformation (kube enrichment, derived metrics, ...). Kafka can provide better scalability, resiliency and high availability ([view more details](https://www.redhat.com/en/topics/integration/what-is-apache-kafka)). Assumes Kafka is already deployed and a topic is created. + + - Exporters (`spec.exporters`) an optional list of exporters to which to send enriched flows. KAFKA and IPFIX exporters are supported. This allows you to define any custom storage or processing that can read from Kafka or use the IPFIX standard. + + - To enable availability zones awareness, set `spec.processor.addZone` to `true`. + + ## Resource considerations + + The following table outlines examples of resource considerations for clusters with certain workload sizes. + The examples outlined in the table demonstrate scenarios that are tailored to specific workloads. Consider each example only as a baseline from which adjustments can be made to accommodate your workload needs. + + + | Resource recommendations | Extra small (10 nodes) | Small (25 nodes) | Medium (65 nodes) ** | Large (120 nodes) ** | + | ----------------------------------------------- | ---------------------- | ---------------------- | ----------------------- | ----------------------------- | + | *Worker Node vCPU and memory* | 4 vCPUs\| 16GiB mem * | 16 vCPUs\| 64GiB mem * | 16 vCPUs\| 64GiB mem * |16 vCPUs\| 64GiB Mem * | + | *LokiStack size* | `1x.extra-small` | `1x.small` | `1x.small` | `1x.medium` | + | *Network Observability controller memory limit* | 400Mi (default) | 400Mi (default) | 400Mi (default) | 800Mi | + | *eBPF sampling rate* | 50 (default) | 50 (default) | 50 (default) | 50 (default) | + | *eBPF memory limit* | 800Mi (default) | 800Mi (default) | 2000Mi | 800Mi (default) | + | *FLP memory limit* | 800Mi (default) | 800Mi (default) | 800Mi (default) | 800Mi (default) | + | *FLP Kafka partitions* | N/A | 48 | 48 | 48 | + | *Kafka consumer replicas* | N/A | 24 | 24 | 24 | + | *Kafka brokers* | N/A | 3 (default) | 3 (default) | 3 (default) | + + *. Tested with AWS M6i instances. + **. In addition to this worker and its controller, 3 infra nodes (size `M6i.12xlarge`) and 1 workload node (size `M6i.8xlarge`) were tested. + + ## Further reading + + Please refer to the documentation on GitHub for more information. + + This documentation includes: + + - An [overview](https://github.com/netobserv/network-observability-operator#openshift-console) of the features, with screenshots + - More information on [configuring metrics](https://github.com/netobserv/network-observability-operator/blob/1.9.2-community/docs/Metrics.md). + - A [performance](https://github.com/netobserv/network-observability-operator#performance-fine-tuning) section, for fine-tuning + - A [security](https://github.com/netobserv/network-observability-operator#securing-data-and-communications) section + - An [F.A.Q.](https://github.com/netobserv/network-observability-operator#faq--troubleshooting) section + displayName: NetObserv Operator + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - network observability + - ebpf + - ipfix + - flow tracing + - flows + - topology + - network + - observability + labels: + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/arch.ppc64le: supported + operatorframework.io/arch.s390x: supported + operatorframework.io/os.linux: supported + links: + - name: Project page + url: https://github.com/netobserv/network-observability-operator + - name: Issue tracker + url: https://github.com/netobserv/network-observability-operator/issues + - name: Discussion board + url: https://github.com/netobserv/network-observability-operator/discussions + maintainers: + - email: jpinsonn@redhat.com + name: Julien Pinsonneau + - email: jtakvori@redhat.com + name: Joel Takvorian + - email: kmeth@redhat.com + name: Kalman Meth + - email: mmahmoud@redhat.com + name: Mohamed S. Mahmoud + - email: ocazade@redhat.com + name: Olivier Cazade + - email: rschaffe@redhat.com + name: Ronen Schaffer + - email: stlee@redhat.com + name: Steven Lee + maturity: alpha + minKubeVersion: 1.23.0 + provider: + name: Red Hat + url: https://www.redhat.com +relatedImages: +- image: quay.io/netobserv/flowlogs-pipeline:v1.9.2-community + name: flowlogs-pipeline +- image: quay.io/netobserv/netobserv-ebpf-agent:v1.9.2-community + name: ebpf-agent +- image: quay.io/netobserv/network-observability-console-plugin-pf4:v1.8.2-community + name: console-plugin-compat +- image: quay.io/netobserv/network-observability-console-plugin:v1.9.2-community + name: console-plugin +- image: quay.io/netobserv/network-observability-operator-bundle:v1.9.2-community + name: "" +- image: quay.io/netobserv/network-observability-operator:1.9.2-community + name: "" +schema: olm.bundle diff --git a/catalog/unreleased/v1.9.2-community/index.yaml b/catalog/unreleased/v1.9.2-community/index.yaml new file mode 100644 index 000000000..8be74e910 --- /dev/null +++ b/catalog/unreleased/v1.9.2-community/index.yaml @@ -0,0 +1,6 @@ +--- +entries: + - name: netobserv-operator.v1.9.2-community +name: latest +package: netobserv-operator +schema: olm.channel diff --git a/catalog/unreleased/v1.9.2-community/other.yaml b/catalog/unreleased/v1.9.2-community/other.yaml new file mode 100644 index 000000000..b4b1b0cf9 --- /dev/null +++ b/catalog/unreleased/v1.9.2-community/other.yaml @@ -0,0 +1,7 @@ +--- +defaultChannel: latest +icon: + base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntvcGFjaXR5OjAuNjt9Cgkuc3Qze29wYWNpdHk6MC41O30KCS5zdDR7b3BhY2l0eTowLjQ7fQo8L3N0eWxlPgo8Zz4KCTxnPgoJCTxnPgoJCQk8cmFkaWFsR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBjeD0iMTQuNzc1OCIgY3k9Ii0yLjk3NzEiIHI9IjkxLjYyNyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgoJCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzNDM0ZBNiIvPgoJCQkJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzNCMDM0MCIvPgoJCQk8L3JhZGlhbEdyYWRpZW50PgoJCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNNTAsOTljLTEzLjMsMC0yNS40LTUuMy0zNC4yLTEzLjlDNi43LDc2LjIsMSw2My43LDEsNTBDMSwyMi45LDIyLjksMSw1MCwxYzEzLjcsMCwyNi4yLDUuNywzNS4xLDE0LjgKCQkJCUM5My43LDI0LjYsOTksMzYuNyw5OSw1MEM5OSw3Ny4xLDc3LjEsOTksNTAsOTl6Ii8+CgkJPC9nPgoJCTxnPgoJCQk8Y2lyY2xlIGNsYXNzPSJzdDEiIGN4PSIzNy41IiBjeT0iODEuOSIgcj0iNSIvPgoJCTwvZz4KCQk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDguNiw5MS45bDE4LjgtNDMuM2MtMi41LTAuMS01LTAuNy03LjItMkwzMy4yLDY4LjJsMS40LTEuOGwyMC0yNS4xYy0xLjUtMi40LTIuMy01LjEtMi4zLTcuOUw5LDUyLjIKCQkJbDQ3LjYtMjkuOWwwLDBjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjJjNi4xLTYuMSwxNS45LTYuMSwyMiwwbDAuMSwwLjFjNiw2LjEsNiwxNS45LTAuMSwyMS45Yy0wLjEsMC4xLTAuMiwwLjItMC4yLDAuMmwwLDAKCQkJTDQ4LjYsOTEuOXoiLz4KCQk8ZyBjbGFzcz0ic3QyIj4KCQkJPGNpcmNsZSBjbGFzcz0ic3QxIiBjeD0iNTAuMyIgY3k9IjE0LjciIHI9IjMuMSIvPgoJCTwvZz4KCQk8ZyBjbGFzcz0ic3QzIj4KCQkJPGNpcmNsZSBjbGFzcz0ic3QxIiBjeD0iMjcuNyIgY3k9IjU4IiByPSIxLjciLz4KCQk8L2c+CgkJPGc+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9Ijc3LjQiIGN5PSI2OS4zIiByPSIxLjciLz4KCQk8L2c+CgkJPGc+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjE2LjMiIGN5PSIzNi42IiByPSIxLjciLz4KCQk8L2c+CgkJPGcgY2xhc3M9InN0NCI+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjYzLjciIGN5PSI4NS45IiByPSIyLjIiLz4KCQk8L2c+CgkJPGc+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjI5LjQiIGN5PSIxOS42IiByPSI0LjgiLz4KCQk8L2c+CgkJPGcgY2xhc3M9InN0MyI+CgkJCTxjaXJjbGUgY2xhc3M9InN0MSIgY3g9Ijg4IiBjeT0iNTAiIHI9IjQuOCIvPgoJCTwvZz4KCTwvZz4KPC9nPgo8L3N2Zz4K + mediatype: image/svg+xml +name: netobserv-operator +schema: olm.package diff --git a/config/csv/bases/netobserv-operator.clusterserviceversion.yaml b/config/csv/bases/netobserv-operator.clusterserviceversion.yaml index 080a2400a..1348dd02e 100644 --- a/config/csv/bases/netobserv-operator.clusterserviceversion.yaml +++ b/config/csv/bases/netobserv-operator.clusterserviceversion.yaml @@ -216,6 +216,8 @@ spec: x-descriptors: - urn:alm:descriptor:com.tectonic.ui:fieldDependency:loki.enable:true - urn:alm:descriptor:com.tectonic.ui:advanced + - displayName: Read timeout + path: loki.readTimeout - path: loki.advanced x-descriptors: - urn:alm:descriptor:com.tectonic.ui:hidden @@ -292,7 +294,7 @@ spec: - urn:alm:descriptor:io.kubernetes.conditions - description: '`FlowMetric` is the schema for the custom metrics API, which allows to generate more metrics out of flow logs. - You can find examples here: https://github.com/netobserv/network-observability-operator/tree/main/config/samples/flowmetrics' + You can find examples here: https://github.com/netobserv/network-observability-operator/tree/v1.9.2-community/config/samples/flowmetrics' displayName: Flow Metric kind: FlowMetric name: flowmetrics.flows.netobserv.io diff --git a/go.mod b/go.mod index 6780e2bd3..76db49222 100644 --- a/go.mod +++ b/go.mod @@ -119,3 +119,5 @@ require ( sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect ) + +replace github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc diff --git a/go.sum b/go.sum index a81982a3f..ff29b641d 100644 --- a/go.sum +++ b/go.sum @@ -101,6 +101,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc h1:0O0vz3oHT1pj2i3dDTeIlW1LrqrmbGKw711WAjpjBoM= +github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc/go.mod h1:JKatcqNUQeNfSGMpQ73a6tsbmw/ztOZunqOYfNJ7Opg= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= @@ -151,23 +153,23 @@ github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUO github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= -github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= +github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k= +github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= -github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= -github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= -github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= -github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= +github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= -github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/internal/controller/consoleplugin/consoleplugin_objects.go b/internal/controller/consoleplugin/consoleplugin_objects.go index c11884af4..9fb8868cb 100644 --- a/internal/controller/consoleplugin/consoleplugin_objects.go +++ b/internal/controller/consoleplugin/consoleplugin_objects.go @@ -348,11 +348,27 @@ func (b *builder) getLokiConfig() (cfg.LokiConfig, error) { if b.desired.Loki.ReadTimeout != nil { lconf.Timeout = api.Duration{Duration: b.desired.Loki.ReadTimeout.Duration} } - if lk.TLS.Enable { - if lk.TLS.InsecureSkipVerify { + // Console plugin should always use HTTP/gateway TLS config for LokiStack mode + // regardless of clientType, since console plugin never uses gRPC + tlsConfig := &lk.TLS + if b.desired.Loki.Mode == flowslatest.LokiModeLokiStack && b.desired.Processor.HasExperimentalLokiGRPCClientProtocol() { + // Create HTTP/gateway TLS config for console plugin + tlsConfig = &flowslatest.ClientTLS{ + Enable: true, + CACert: flowslatest.CertificateReference{ + Type: flowslatest.RefTypeConfigMap, + Name: fmt.Sprintf("%s-gateway-ca-bundle", b.desired.Loki.LokiStack.Name), + Namespace: b.desired.Loki.LokiStack.Namespace, + CertFile: "service-ca.crt", + }, + } + } + + if tlsConfig.Enable { + if tlsConfig.InsecureSkipVerify { lconf.SkipTLS = true } else { - caPath := b.volumes.AddCACertificate(&lk.TLS, "loki-certs") + caPath := b.volumes.AddCACertificate(tlsConfig, "loki-certs") if caPath != "" { lconf.CAPath = caPath } diff --git a/internal/controller/consoleplugin/consoleplugin_test.go b/internal/controller/consoleplugin/consoleplugin_test.go index 026e0be99..4c4043cd8 100644 --- a/internal/controller/consoleplugin/consoleplugin_test.go +++ b/internal/controller/consoleplugin/consoleplugin_test.go @@ -283,7 +283,7 @@ func TestConfigMapUpdateWithLokistackMode(t *testing.T) { Mode: flowslatest.LokiModeLokiStack, LokiStack: flowslatest.LokiStackRef{Name: "lokistack", Namespace: "ls-namespace"}, } - loki := helper.NewLokiConfig(&lokiSpec, "any") + loki := helper.NewLokiConfig(&lokiSpec, "any", false) spec := flowslatest.FlowCollectorSpec{ConsolePlugin: plugin, Loki: lokiSpec} builder := getBuilder(&spec, &loki) old, _, _ := builder.configMap(context.Background()) @@ -292,7 +292,7 @@ func TestConfigMapUpdateWithLokistackMode(t *testing.T) { // update lokistack name lokiSpec.LokiStack.Name = "lokistack-updated" - loki = helper.NewLokiConfig(&lokiSpec, "any") + loki = helper.NewLokiConfig(&lokiSpec, "any", false) spec = flowslatest.FlowCollectorSpec{ConsolePlugin: plugin, Loki: lokiSpec} builder = getBuilder(&spec, &loki) @@ -302,7 +302,7 @@ func TestConfigMapUpdateWithLokistackMode(t *testing.T) { // update lokistack namespace lokiSpec.LokiStack.Namespace = "ls-namespace-updated" - loki = helper.NewLokiConfig(&lokiSpec, "any") + loki = helper.NewLokiConfig(&lokiSpec, "any", false) spec = flowslatest.FlowCollectorSpec{ConsolePlugin: plugin, Loki: lokiSpec} builder = getBuilder(&spec, &loki) @@ -323,7 +323,7 @@ func TestConfigMapContent(t *testing.T) { Mode: flowslatest.LokiModeLokiStack, LokiStack: flowslatest.LokiStackRef{Name: "lokistack", Namespace: "ls-namespace"}, } - loki := helper.NewLokiConfig(&lokiSpec, "any") + loki := helper.NewLokiConfig(&lokiSpec, "any", false) spec := flowslatest.FlowCollectorSpec{ Agent: agentSpec, ConsolePlugin: getPluginConfig(), diff --git a/internal/controller/flowcollector_controller.go b/internal/controller/flowcollector_controller.go index 24d1371bf..44660b764 100644 --- a/internal/controller/flowcollector_controller.go +++ b/internal/controller/flowcollector_controller.go @@ -120,7 +120,7 @@ func (r *FlowCollectorReconciler) Reconcile(ctx context.Context, _ ctrl.Request) func (r *FlowCollectorReconciler) reconcile(ctx context.Context, clh *helper.Client, desired *flowslatest.FlowCollector) error { ns := desired.Spec.GetNamespace() previousNamespace := r.status.GetDeployedNamespace(desired) - loki := helper.NewLokiConfig(&desired.Spec.Loki, ns) + loki := helper.NewLokiConfig(&desired.Spec.Loki, ns, desired.Spec.Processor.HasExperimentalLokiGRPCClientProtocol()) reconcilersInfo := r.newCommonInfo(clh, ns, &loki) if err := r.checkFinalizer(ctx, desired); err != nil { diff --git a/internal/controller/flp/flp_controller.go b/internal/controller/flp/flp_controller.go index 1f2e82538..b45dc01ab 100644 --- a/internal/controller/flp/flp_controller.go +++ b/internal/controller/flp/flp_controller.go @@ -117,7 +117,7 @@ func (r *Reconciler) reconcile(ctx context.Context, clh *helper.Client, fc *flow ns := fc.Spec.GetNamespace() r.currentNamespace = ns previousNamespace := r.status.GetDeployedNamespace(fc) - loki := helper.NewLokiConfig(&fc.Spec.Loki, ns) + loki := helper.NewLokiConfig(&fc.Spec.Loki, ns, fc.Spec.Processor.HasExperimentalLokiGRPCClientProtocol()) cmn := r.newCommonInfo(clh, ns, &loki) r.watcher.Reset(ns) diff --git a/internal/controller/flp/flp_pipeline_builder.go b/internal/controller/flp/flp_pipeline_builder.go index 064af47ac..808496c5c 100644 --- a/internal/controller/flp/flp_pipeline_builder.go +++ b/internal/controller/flp/flp_pipeline_builder.go @@ -25,6 +25,9 @@ import ( const ( ovnkSecondary = "ovn-kubernetes" + + http = "http" + grpc = "grpc" ) type PipelineBuilder struct { @@ -262,7 +265,7 @@ func (b *PipelineBuilder) AddProcessorStages() error { if len(filters) > 0 { lokiStage = lokiStage.TransformFilter("filters-loki", newTransformFilter(filters)) } - + lokiClientProtocol := getLokiClientProtocol(&b.desired.Processor) lokiWrite := api.WriteLoki{ Labels: lokiLabels, BatchSize: int(b.desired.Loki.WriteBatchSize), @@ -276,14 +279,21 @@ func (b *PipelineBuilder) AddProcessorStages() error { TimestampLabel: "TimeFlowEndMs", TimestampScale: "1ms", TenantID: b.loki.TenantID, + ClientProtocol: lokiClientProtocol, + } + + // Configure gRPC-specific settings if using gRPC + if lokiWrite.ClientProtocol == grpc { + lokiWrite.GRPCConfig = b.buildGRPCConfig() } for k, v := range advancedConfig.StaticLabels { lokiWrite.StaticLabels[model.LabelName(k)] = model.LabelValue(v) } + // Configure client settings (TLS is shared between HTTP and gRPC) var authorization *promConfig.Authorization - if b.loki.UseHostToken() || b.loki.UseForwardToken() { + if lokiWrite.ClientProtocol == http && (b.loki.UseHostToken() || b.loki.UseForwardToken()) { b.volumes.AddToken(constants.FLPName) authorization = &promConfig.Authorization{ Type: "Bearer", @@ -291,27 +301,13 @@ func (b *PipelineBuilder) AddProcessorStages() error { } } - if b.loki.TLS.Enable { - if b.loki.TLS.InsecureSkipVerify { - lokiWrite.ClientConfig = &promConfig.HTTPClientConfig{ - Authorization: authorization, - TLSConfig: promConfig.TLSConfig{ - InsecureSkipVerify: true, - }, - } - } else { - caPath := b.volumes.AddCACertificate(&b.loki.TLS, "loki-certs") - lokiWrite.ClientConfig = &promConfig.HTTPClientConfig{ - Authorization: authorization, - TLSConfig: promConfig.TLSConfig{ - CAFile: caPath, - }, - } - } - } else { - lokiWrite.ClientConfig = &promConfig.HTTPClientConfig{ - Authorization: authorization, - } + // Build TLS config (different cert paths for HTTP vs gRPC) + useGRPCCerts := lokiWrite.ClientProtocol == grpc + tlsConfig := b.buildTLSConfig(&b.loki.TLS, b.loki.IngesterURL, useGRPCCerts) + + lokiWrite.ClientConfig = &promConfig.HTTPClientConfig{ + Authorization: authorization, + TLSConfig: tlsConfig, } lokiStage.WriteLoki("loki", lokiWrite) } @@ -768,3 +764,62 @@ func subnetLabelsToFLP(labels []flowslatest.SubnetLabel) []api.NetworkTransformS } return cats } + +// getLokiClientProtocol returns the client type, defaulting to http if experimental support is not configured +func getLokiClientProtocol(processorSpec *flowslatest.FlowCollectorFLP) string { + if processorSpec.HasExperimentalLokiGRPCClientProtocol() { + return grpc + } + return http +} + +// buildGRPCConfig builds the gRPC configuration for Loki writer +func (b *PipelineBuilder) buildGRPCConfig() *api.GRPCLokiConfig { + // TO-DO: Fill values from env vars + config := &api.GRPCLokiConfig{} + + if config.KeepAlive == "" { + config.KeepAlive = "30s" + } + if config.KeepAliveTimeout == "" { + config.KeepAliveTimeout = "5s" + } + + return config +} + +// buildTLSConfig builds TLS configuration for Loki client +// useGRPCCerts: true for gRPC (mutual TLS with client certs), false for HTTP (CA only) +func (b *PipelineBuilder) buildTLSConfig(tlsConfig *flowslatest.ClientTLS, serverAddress string, useGRPCCerts bool) promConfig.TLSConfig { + if !tlsConfig.Enable { + return promConfig.TLSConfig{} + } + + config := promConfig.TLSConfig{ + InsecureSkipVerify: tlsConfig.InsecureSkipVerify, + } + + if !tlsConfig.InsecureSkipVerify { + if useGRPCCerts { + // gRPC uses mutual TLS with client certificates + caPath, certPath, keyPath := b.volumes.AddMutualTLSCertificates(tlsConfig, "loki-grpc-certs") + config.CAFile = caPath + config.CertFile = certPath + config.KeyFile = keyPath + + // Set ServerName for certificate verification + // Extract hostname from server address (remove port) + serverName := serverAddress + if idx := strings.LastIndex(serverName, ":"); idx != -1 { + serverName = serverName[:idx] + } + config.ServerName = serverName + } else { + // HTTP uses only CA certificate + caPath := b.volumes.AddCACertificate(tlsConfig, "loki-certs") + config.CAFile = caPath + } + } + + return config +} diff --git a/internal/controller/flp/flp_test.go b/internal/controller/flp/flp_test.go index ff9e2acc4..46f86a735 100644 --- a/internal/controller/flp/flp_test.go +++ b/internal/controller/flp/flp_test.go @@ -174,14 +174,14 @@ func monoBuilder(ns string, cfg *flowslatest.FlowCollectorSpec) monolithBuilder } func monoBuilderWithMetrics(ns string, cfg *flowslatest.FlowCollectorSpec, metrics *metricslatest.FlowMetricList) monolithBuilder { - loki := helper.NewLokiConfig(&cfg.Loki, "any") + loki := helper.NewLokiConfig(&cfg.Loki, "any", false) info := reconcilers.Common{Namespace: ns, Loki: &loki, ClusterInfo: &cluster.Info{}} b, _ := newMonolithBuilder(info.NewInstance(image, status.Instance{}), cfg, metrics, nil) return b } func transfBuilder(ns string, cfg *flowslatest.FlowCollectorSpec) transfoBuilder { - loki := helper.NewLokiConfig(&cfg.Loki, "any") + loki := helper.NewLokiConfig(&cfg.Loki, "any", false) info := reconcilers.Common{Namespace: ns, Loki: &loki, ClusterInfo: &cluster.Info{}} b, _ := newTransfoBuilder(info.NewInstance(image, status.Instance{}), cfg, &metricslatest.FlowMetricList{}, nil) return b diff --git a/internal/controller/flp/metrics_api_test.go b/internal/controller/flp/metrics_api_test.go index 5777c9d4b..e49b4ecde 100644 --- a/internal/controller/flp/metrics_api_test.go +++ b/internal/controller/flp/metrics_api_test.go @@ -34,7 +34,7 @@ func getConfiguredMetrics(cm *corev1.ConfigMap) (api.MetricsItems, error) { func defaultBuilderWithMetrics(metrics *metricslatest.FlowMetricList) (monolithBuilder, error) { cfg := getConfig() - loki := helper.NewLokiConfig(&cfg.Loki, "any") + loki := helper.NewLokiConfig(&cfg.Loki, "any", false) info := reconcilers.Common{Namespace: "namespace", Loki: &loki, ClusterInfo: &cluster.Info{}} return newMonolithBuilder(info.NewInstance(image, status.Instance{}), &cfg, metrics, nil) } diff --git a/internal/pkg/helper/loki_config.go b/internal/pkg/helper/loki_config.go index 916bfc6e3..6150fb9e6 100644 --- a/internal/pkg/helper/loki_config.go +++ b/internal/pkg/helper/loki_config.go @@ -10,7 +10,7 @@ type LokiConfig struct { flowslatest.LokiManualParams } -func NewLokiConfig(spec *flowslatest.FlowCollectorLoki, namespace string) LokiConfig { +func NewLokiConfig(spec *flowslatest.FlowCollectorLoki, namespace string, useGRPC bool) LokiConfig { loki := LokiConfig{} switch spec.Mode { case flowslatest.LokiModeLokiStack: @@ -19,21 +19,48 @@ func NewLokiConfig(spec *flowslatest.FlowCollectorLoki, namespace string) LokiCo ns = spec.LokiStack.Namespace } gatewayURL := fmt.Sprintf("https://%s-gateway-http.%s.svc:8080/api/logs/v1/network/", spec.LokiStack.Name, ns) + ingesterURL := gatewayURL + if useGRPC { + ingesterURL = fmt.Sprintf("%s-distributor-grpc.%s.svc:9095", spec.LokiStack.Name, ns) + } + // Configure TLS based on client type + tlsConfig := flowslatest.ClientTLS{ + Enable: true, + } + + // Set TLS certificates based on the connection type + if useGRPC { + // For gRPC ingester connections: use the Loki signing CA + tlsConfig.CACert = flowslatest.CertificateReference{ + Type: flowslatest.RefTypeConfigMap, + Name: fmt.Sprintf("%s-ca-bundle", spec.LokiStack.Name), + Namespace: spec.LokiStack.Namespace, + CertFile: "service-ca.crt", + } + tlsConfig.UserCert = flowslatest.CertificateReference{ + Type: flowslatest.RefTypeSecret, + Name: fmt.Sprintf("%s-distributor-grpc", spec.LokiStack.Name), + Namespace: spec.LokiStack.Namespace, + CertFile: "tls.crt", + CertKey: "tls.key", + } + } else { + // For HTTP gateway connections: use the OpenShift service serving CA + tlsConfig.CACert = flowslatest.CertificateReference{ + Type: flowslatest.RefTypeConfigMap, + Name: fmt.Sprintf("%s-gateway-ca-bundle", spec.LokiStack.Name), + Namespace: spec.LokiStack.Namespace, + CertFile: "service-ca.crt", + } + } + loki.LokiManualParams = flowslatest.LokiManualParams{ QuerierURL: gatewayURL, - IngesterURL: gatewayURL, + IngesterURL: ingesterURL, StatusURL: fmt.Sprintf("https://%s-query-frontend-http.%s.svc:3100/", spec.LokiStack.Name, ns), TenantID: "network", AuthToken: flowslatest.LokiAuthForwardUserToken, - TLS: flowslatest.ClientTLS{ - Enable: true, - CACert: flowslatest.CertificateReference{ - Type: flowslatest.RefTypeConfigMap, - Name: fmt.Sprintf("%s-gateway-ca-bundle", spec.LokiStack.Name), - Namespace: spec.LokiStack.Namespace, - CertFile: "service-ca.crt", - }, - }, + TLS: tlsConfig, StatusTLS: flowslatest.ClientTLS{ Enable: true, CACert: flowslatest.CertificateReference{ diff --git a/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go b/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go index e3016ed73..4c04b6361 100644 --- a/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go +++ b/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go @@ -49,7 +49,6 @@ type PromConnectionInfo struct { type MetricsItem struct { Name string `yaml:"name" json:"name" doc:"the metric name"` Type MetricEncodeOperationEnum `yaml:"type" json:"type" doc:"(enum) one of the following:"` - Help string `yaml:"help,omitempty" json:"help,omitempty" doc:"the metric help text"` Filters []MetricsFilter `yaml:"filters" json:"filters" doc:"a list of criteria to filter entries by"` ValueKey string `yaml:"valueKey" json:"valueKey" doc:"entry key from which to resolve metric value"` Labels []string `yaml:"labels" json:"labels" doc:"labels to be associated with the metric"` diff --git a/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/write_loki.go b/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/write_loki.go index cdc9a36bc..8225ad276 100644 --- a/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/write_loki.go +++ b/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/write_loki.go @@ -20,6 +20,7 @@ package api import ( "errors" "fmt" + "time" promConfig "github.com/prometheus/common/config" "github.com/prometheus/common/model" @@ -46,6 +47,15 @@ type WriteLoki struct { TimestampScale string `yaml:"timestampScale,omitempty" json:"timestampScale,omitempty" doc:"timestamp units scale (e.g. for UNIX = 1s)"` Format string `yaml:"format,omitempty" json:"format,omitempty" doc:"the format of each line: printf (writes using golang's default map printing), fields (writes one key and value field per line) or json (default)"` Reorder bool `yaml:"reorder,omitempty" json:"reorder,omitempty" doc:"reorder json map keys"` + + // Client protocol selection + ClientProtocol string `yaml:"clientProtocol,omitempty" json:"clientProtocol,omitempty" doc:"type of client protocol to use: 'http' or 'grpc' (default: 'http')"` + GRPCConfig *GRPCLokiConfig `yaml:"grpcConfig,omitempty" json:"grpcConfig,omitempty" doc:"gRPC client configuration (used only for gRPC client type)"` +} + +type GRPCLokiConfig struct { + KeepAlive string `yaml:"keepAlive,omitempty" json:"keepAlive,omitempty" doc:"keep alive interval"` + KeepAliveTimeout string `yaml:"keepAliveTimeout,omitempty" json:"keepAliveTimeout,omitempty" doc:"keep alive timeout"` } func (w *WriteLoki) SetDefaults() { @@ -76,6 +86,23 @@ func (w *WriteLoki) SetDefaults() { if w.Format == "" { w.Format = "json" } + if w.ClientProtocol == "" { + w.ClientProtocol = "http" + } + + // Set defaults for gRPC config if gRPC client protocol is selected + if w.ClientProtocol == "grpc" && w.GRPCConfig != nil { + w.GRPCConfig.SetDefaults() + } +} + +func (g *GRPCLokiConfig) SetDefaults() { + if g.KeepAlive == "" { + g.KeepAlive = "30s" + } + if g.KeepAliveTimeout == "" { + g.KeepAliveTimeout = "5s" + } } func (w *WriteLoki) Validate() error { @@ -85,11 +112,51 @@ func (w *WriteLoki) Validate() error { if w.TimestampScale == "" { return errors.New("timestampUnit must be a valid Duration > 0 (e.g. 1m, 1s or 1ms)") } - if w.URL == "" { - return errors.New("url can't be empty") - } if w.BatchSize <= 0 { return fmt.Errorf("invalid batchSize: %v. Required > 0", w.BatchSize) } + + // Validate client protocol + if w.ClientProtocol != "" && w.ClientProtocol != "http" && w.ClientProtocol != "grpc" { + return fmt.Errorf("invalid clientProtocol: %s. Must be 'http' or 'grpc'", w.ClientProtocol) + } + + // Validate based on client protocol + switch w.ClientProtocol { + case "http", "": + if w.URL == "" { + return errors.New("url can't be empty for HTTP client") + } + case "grpc": + if w.URL == "" { + return errors.New("url can't be empty for gRPC client") + } + if w.GRPCConfig == nil { + return errors.New("grpcConfig is required when using gRPC client protocol") + } + if err := w.GRPCConfig.Validate(); err != nil { + return fmt.Errorf("gRPC config validation failed: %w", err) + } + } + + return nil +} + +func (g *GRPCLokiConfig) Validate() error { + if g == nil { + return errors.New("gRPC config cannot be nil") + } + // Validate duration fields + if g.KeepAlive != "" { + if _, err := time.ParseDuration(g.KeepAlive); err != nil { + return fmt.Errorf("invalid keepAlive duration: %w", err) + } + } + if g.KeepAliveTimeout != "" { + if _, err := time.ParseDuration(g.KeepAliveTimeout); err != nil { + return fmt.Errorf("invalid keepAliveTimeout duration: %w", err) + } + } + return nil } diff --git a/vendor/modules.txt b/vendor/modules.txt index e04c7f638..ba39b8d90 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -161,7 +161,11 @@ github.com/munnerz/goautoneg # github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f ## explicit github.com/mwitkow/go-conntrack +<<<<<<< HEAD # github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99 +======= +# github.com/netobserv/flowlogs-pipeline v1.9.2-community => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc +>>>>>>> 6b4e3db1 (Support for configure grpc client to send logs to Loki) ## explicit; go 1.24.0 github.com/netobserv/flowlogs-pipeline/pkg/api github.com/netobserv/flowlogs-pipeline/pkg/config @@ -1258,3 +1262,4 @@ sigs.k8s.io/structured-merge-diff/v6/value # sigs.k8s.io/yaml v1.6.0 ## explicit; go 1.22 sigs.k8s.io/yaml +# github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc From a828c256879766fa5b78910d3f6b681d085f681f Mon Sep 17 00:00:00 2001 From: Leandro Beretta Date: Thu, 9 Oct 2025 13:38:01 -0300 Subject: [PATCH 2/3] fix vendors --- go.sum | 2 -- vendor/modules.txt | 6 +----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/go.sum b/go.sum index ff29b641d..06efca503 100644 --- a/go.sum +++ b/go.sum @@ -119,8 +119,6 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99 h1:amQHvOeTXw04c5PAEJ4yvvIpFrcuBV7qeJsgfRxq4NA= -github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99/go.mod h1:RCD0EdA1NFZ1xXhSePB8TRQahfNqYTWlHD2lKDfNBW0= github.com/netobserv/netobserv-ebpf-agent v1.9.2-community h1:ghW16OO4QRWj0Uh1gMYX+NjAlgx2sZmCsO3Tkwoj4Do= github.com/netobserv/netobserv-ebpf-agent v1.9.2-community/go.mod h1:17OaUNAwx0LxoeV/SaHlJIJP6bpN7zSvUP3GtZelESQ= github.com/netsampler/goflow2 v1.3.7 h1:XZaTy8kkMnGXpJ9hS3KbO1McyrFTpVNhVFEx9rNhMmc= diff --git a/vendor/modules.txt b/vendor/modules.txt index ba39b8d90..f1d9cc77d 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -161,11 +161,7 @@ github.com/munnerz/goautoneg # github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f ## explicit github.com/mwitkow/go-conntrack -<<<<<<< HEAD -# github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99 -======= -# github.com/netobserv/flowlogs-pipeline v1.9.2-community => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc ->>>>>>> 6b4e3db1 (Support for configure grpc client to send logs to Loki) +# github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99 => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc ## explicit; go 1.24.0 github.com/netobserv/flowlogs-pipeline/pkg/api github.com/netobserv/flowlogs-pipeline/pkg/config From 83348996b548448253125f6c69caf234c0d96328 Mon Sep 17 00:00:00 2001 From: Leandro Beretta Date: Thu, 9 Oct 2025 13:46:00 -0300 Subject: [PATCH 3/3] fix flp dep --- go.mod | 2 +- go.sum | 24 +++++++++---------- .../flowlogs-pipeline/pkg/api/encode_prom.go | 1 + vendor/modules.txt | 4 ++-- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 76db49222..1fd42d054 100644 --- a/go.mod +++ b/go.mod @@ -120,4 +120,4 @@ require ( sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect ) -replace github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc +replace github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009164306-d01e3863647a diff --git a/go.sum b/go.sum index 06efca503..24cb7f469 100644 --- a/go.sum +++ b/go.sum @@ -101,8 +101,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc h1:0O0vz3oHT1pj2i3dDTeIlW1LrqrmbGKw711WAjpjBoM= -github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc/go.mod h1:JKatcqNUQeNfSGMpQ73a6tsbmw/ztOZunqOYfNJ7Opg= +github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009164306-d01e3863647a h1:pS4iRF2fco9qLbTvl/s+tLBIHMErMbin6tYXZWcK6S4= +github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009164306-d01e3863647a/go.mod h1:nHLh9A9s0lsWGQqbWpooUlB/Y/H2ik1knLjncY1L7BY= github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo= @@ -151,23 +151,23 @@ github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUO github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k= -github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= +github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= +github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= -github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= -github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= -github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= -github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= -github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= +github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= +github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= +github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= +github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= +github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= -github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= +github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= diff --git a/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go b/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go index 4c04b6361..e3016ed73 100644 --- a/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go +++ b/vendor/github.com/netobserv/flowlogs-pipeline/pkg/api/encode_prom.go @@ -49,6 +49,7 @@ type PromConnectionInfo struct { type MetricsItem struct { Name string `yaml:"name" json:"name" doc:"the metric name"` Type MetricEncodeOperationEnum `yaml:"type" json:"type" doc:"(enum) one of the following:"` + Help string `yaml:"help,omitempty" json:"help,omitempty" doc:"the metric help text"` Filters []MetricsFilter `yaml:"filters" json:"filters" doc:"a list of criteria to filter entries by"` ValueKey string `yaml:"valueKey" json:"valueKey" doc:"entry key from which to resolve metric value"` Labels []string `yaml:"labels" json:"labels" doc:"labels to be associated with the metric"` diff --git a/vendor/modules.txt b/vendor/modules.txt index f1d9cc77d..0236c8782 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -161,7 +161,7 @@ github.com/munnerz/goautoneg # github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f ## explicit github.com/mwitkow/go-conntrack -# github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99 => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc +# github.com/netobserv/flowlogs-pipeline v1.9.2-community.0.20251006073644-7e3fe86c1e99 => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009164306-d01e3863647a ## explicit; go 1.24.0 github.com/netobserv/flowlogs-pipeline/pkg/api github.com/netobserv/flowlogs-pipeline/pkg/config @@ -1258,4 +1258,4 @@ sigs.k8s.io/structured-merge-diff/v6/value # sigs.k8s.io/yaml v1.6.0 ## explicit; go 1.22 sigs.k8s.io/yaml -# github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009135050-3d8583a3cfbc +# github.com/netobserv/flowlogs-pipeline => github.com/leandroberetta/flowlogs-pipeline v0.0.0-20251009164306-d01e3863647a