Coder Social home page Coder Social logo

smart_proxy_salt's Introduction

Smart Proxy - Salt

This plug-in adds support for Salt to Foreman's Smart Proxy.

smart_proxy_salt's People

Contributors

adamruzicka avatar archanaserver avatar arthurzenika avatar bastian-src avatar bochi avatar do3meli avatar dosas avatar ekohl avatar erkki avatar gvengel avatar lzap avatar mmoll avatar nadjaheitmann avatar philpep avatar q1x avatar sbernhard avatar sherifnagy avatar stbenjam avatar tamcore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

smart_proxy_salt's Issues

Suggestions for the salt report upload runner

Hi,
I have some suggestions for packaging the salt report upload runner. When manually copying it to salt://_runners it could be that when there are updates or fixes they are missed because its not included in the package.
So I'd rather have it installed via package to some location and documented that one has to add whatever directory it is installed to to runner_dirs in the salt master config, ie:

runner_dirs:
  - /wherever/the/package/puts/the/runner

This also eliminates the need to sync the runners.

Same goes for the reactor, it should be installed to the same directory and referenced directly (with full path) in the reactor's config. Reactors or runners do not have to reside in file_roots.

Package ruby-smart-proxy-salt requires python 2.7 on ubuntu 20.04

Package ruby-smart-proxy-salt installs python2.7 due to the python dependency:

# apt show ruby-smart-proxy-salt
Package: ruby-smart-proxy-salt
Version: 5.0.0-1
Priority: optional
Section: ruby
Maintainer: Michael Moll <[email protected]>
Installed-Size: 72.7 kB
Depends: ruby | ruby-interpreter, foreman-proxy (>= 2.5), ruby-smart-proxy-dynflow (>= 0.5.0), salt-master, python
Homepage: https://github.com/theforeman/smart_proxy_salt
Ruby-Versions: all
Download-Size: 12.1 kB
APT-Sources: http://deb.theforeman.org plugins/3.4 amd64 Packages
Description: SaltStack Plug-In for Foreman's Smart Proxy
 SaltStack Plug-In for Foreman's Smart Proxy

And the python package has a dependency on python2.7:

# apt show python -a
Package: python
Version: 2.7.15~rc1-1
Status: deinstall ok config-files
Priority: optional
Section: python
Source: python-defaults
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Matthias Klose <[email protected]>
Config-Version: 2.7.15~rc1-1
Installed-Size: 639 kB
Provides: python-ctypes, python-email, python-importlib, python-profiler, python-wsgiref
Pre-Depends: python-minimal (= 2.7.15~rc1-1)
Depends: python2.7 (>= 2.7.15~rc1-1~), libpython-stdlib (= 2.7.15~rc1-1)
Suggests: python-doc (= 2.7.15~rc1-1), python-tk (>= 2.7.15~rc1-1~)
Conflicts: python-central (<< 0.5.5)
Breaks: update-manager-core (<< 0.200.5-2)
Replaces: python-dev (<< 2.6.5-2)
Homepage: http://www.python.org/
Cnf-Extra-Commands: python
Cnf-Priority-Bonus: 3
Download-Size: unknown
APT-Sources: /var/lib/dpkg/status
Description: interactive high-level object-oriented language (default version)
 Python, the high-level, interactive object oriented language,
 includes an extensive class library with lots of goodies for
 network programming, system administration, sounds and graphics.
 .
 This package is a dependency package, which depends on Debian's default
 Python version (currently v2.7).

As python2.7 is EOL since January 2020 the dependency should be switched to python3?

Suggestion: Use Salt's Reactor to Upload Reports

Currently, reports need to be manually uploaded after a highstate (or via a script). Instead, we can use Salt's event system and reactor to upload reports after every high state. Not only does this make for better usability, but also reduces load on the system as we don't have to run upload-reports in a cron job all the time.

Here's how I've done it on Salt 2016.11.3, although it does need more testing:

In /etc/salt/master.d/reactor.conf:

reactor:
  - 'salt/job/*/ret/*':
    - /srv/reactor/upload-salt-reports.sls

In /srv/reactor/upload-salt-reports.sls:

upload-salt-reports:
  runner.foreman.upload_reports:
    - data: {{ data|yaml_dquote }}

In /var/cache/salt/master/extmods/runners/foreman.py:

#!/usr/bin/env python
import ast
import logging
import httplib
import ssl
import yaml
import base64
import json

LOGGER = logging.getLogger(__name__)

FOREMAN_CONFIG = '/etc/salt/foreman.yaml'

def upload_reports(data):
    '''
    Upload Salt reports to Foreman. Note that only data that
    contains a highstate is uploaded.

    :data: A data object returned by a Salt event.
    '''
    data = ast.literal_eval(data)

    if data['fun'] != 'state.highstate':
        return True

    LOGGER.info("Uploading report for " + data['id'] + "...")

    job = {
        'job': {
            'function': data['fun'],
            'result': {
                data['id']: data['return']
            }
        }
    }

    config = None
    with open(FOREMAN_CONFIG, 'r') as f:
        config = yaml.load(f.read())

    headers = {'Accept': 'application/json',
               'Content-Type': 'application/json'}

    if config[':proto'] == 'https':
        ctx = ssl.create_default_context()
        ctx.load_cert_chain(
            certfile=config[':ssl_cert'], keyfile=config[':ssl_key'])

        if config[':ssl_ca']:
            ctx.load_verify_locations(cafile=config[':ssl_ca'])

        connection = httplib.HTTPSConnection(config[':host'],
                                             port=config[':port'], context=ctx)
    else:
        connection = httplib.HTTPConnection(config[':host'],
                                            port=config[':port'])

        if ':username' in config and ':password' in config:
            token = base64.b64encode('{}:{}'.format(config[':username'],
                                                    config[':password']))
            headers['Authorization'] = 'Basic {}'.format(token)

    connection.request('POST', '/salt/api/v2/jobs/upload',
                       json.dumps(job), headers)
    response = connection.getresponse()

    if response.status == 200:
        return True
    else:
        raise Exception(response.read())

    return True

Note that my runners come from git; I'm not sure of the best way to integrate this with the smart_proxy_salt packaging.

I feel like there are some obvious problems with this so I'd love to start a discussion.

Edit: Updated to not rely on upload-salt-reports at all as that was causing all kinds of weirdness.

Salt report upload broken with PyYaml versions shipped with salt onedir packages

Recent salt versions are available as onedir packages only (see https://docs.saltproject.io/salt/install-guide/en/latest/topics/upgrade-to-onedir.html#upgrade-to-onedir), here by default the current version of PyYAML 6.0.1 is shipped. While PyYaml versions 5.x already deprecated the yaml.load(input) function call (see https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation), 6.x removed it.

smart_proxy_salt uses the function call in 3 places:

  • /salt/minion_auth/srv/salt/_runners/foreman_https.py
  • /salt/report_upload/srv/salt/_runners/foreman_report_upload.py
  • /sbin/upload-salt-reports

A straightforward fix would be, to replace the yaml.load(f.read()) calls with yaml.load(f.read(), Loader=yaml.FullLoader) ones, this was the default behavior for PyYaml 5.x. For security reasons it might be also desirable to check if a switch to the yaml.SafeLoader is feasable.

upload-salt-reports hanging or killed

We're trying to get salt reports uploaded to foreman and hitting an hang/kill issue in the script. I added some print commands to each of the functions. Looks like it gets to the run block where it appears to want to read /etc/salt/master config:

def run(*args, **kwargs):
    print("run")
    __opts__ = salt.config.master_config(
            os.environ.get('SALT_MASTER_CONFIG', '/etc/salt/master'))
    #print(__opts__)
    runner = salt.runner.Runner(__opts__)
    #print(runner)
    with io.open(os.devnull, 'w') as f:
        print("io open block")
        print(f)
        stdout_bak, sys.stdout = sys.stdout, f
        print("stdout block")
        try:
            ret = runner.cmd(*args, **kwargs)
            #print(ret)
        finally:
            sys.stdout = stdout_bak
    return ret['data'] if 'data' in ret else ret

Here is what that looks like when I run it:

[root@10-222-76-237 salt]# /usr/sbin/upload-salt-reports
get_lock
upload(jobs)
salt_config
jobs_to_upload
run
io open block
f is <_io.TextIOWrapper name='/dev/null' mode='w' encoding='UTF-8'>
Killed

Any idea what is going on here? I know that most of our salt config lives in /etc/salt/master.d/<confs> is this the issue?

Suggestion: Bulk change of Salt-Master

It'd be great to have a bulk change action to change the Salt Master of multiple hosts at once.

The salt-master is not set automatically when salt smart-proxy plugin creates a new host entry or atleast it didn't for me. Therefore you have to manually set the salt-master for each host. With growing host count that is quite a lot of work.

Theres an option to bulk change the monitoring proxy for example. I am not fluent in Ruby but I am familiar with how web applications handle requests and return views. If you guys could point me to the relevant components I need to analyze, I'd try giving it a shot to fork and pull request.

image

Throttle upload-salt-reports

I am using salt in combination with katello 3.2. I am wondering is there a way to throttle upload-salt-reports. I am seeing a problem when I am running this. It is causing my machine to utilize 100% cpu and cause memory to spike from 4gb to 13gb. It appears to be a problem with passenger, but I have done as much as I can to tune passenger. I have the report upload running every 10 minutes, so every 10 minutes it spikes. I need a way to batch the reports if possible, 20 to 30 at a time. Thanks!

Unable to install ruby-smart-proxy-salt on Ubuntu 20.04

Due to wrong package dependencies I'm unable to install the ruby-smart-proxy-salt package:

# apt install ruby-smart-proxy-salt
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 ruby-smart-proxy-salt : Depends: ruby-smart-proxy-salt-core (>= 0.0.2) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Ubuntu Version:

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.3 LTS
Release:	20.04
Codename:	focal

Foreman sources:

deb http://deb.theforeman.org focal 3.1
deb http://deb.theforeman.org plugins 3.1

I already reported it here, but there was no response to it: https://projects.theforeman.org/issues/33994

Thank you in advance and let me know if there are more details needed.

salt runner fails to upload - Exception encountered: a bytes-like object is required, not 'str'

Problem:
Using the foreman salt plugins and proxies, reports from the reactor/runners fail to upload.

Expected outcome:
They upload.

Foreman and Proxy versions:
Latest.

Foreman and Proxy plugin versions:
Latest.

Distribution and version:
Linux Alma 8 / Salt 3005.1

Other relevant data:
Added some additional logging to the foreman_reports_upload.py runner:

2024-07-24 19:26:22,703 [salt.loaded.ext.runners.foreman_report_upload:76  ][DEBUG   ][388458] HTTP connection created
2024-07-24 19:26:22,703 [salt.loaded.ext.runners.foreman_report_upload:158 ][ERROR   ][388458] Exception encountered: a bytes-like object is required, not 'str'
2024-07-24 19:26:22,703 [salt.loaded.ext.runners.foreman_report_upload:139 ][DEBUG   ][388458] Releasing lock
2024-07-24 19:26:22,704 [salt.loaded.ext.runners.foreman_report_upload:142 ][DEBUG   ][388458] Lock released

I do see the salt event log showing the reactor is triggering the runner. However, something about it isnt quite right and I cant figure it out. The long string below is a base64 encoded string.

salt/run/20240724192622670225/ret       {
    "_stamp": "2024-07-24T19:26:22.706437",
    "fun": "runner.foreman_report_upload.now",
    "fun_args": [
        {
            "highstate": "eyJfc3RhbXAiOiAiMjAyNC0wNy0yNFQxOToyNjoyMi4xNjIyNzAiLCAiY21kIjogIl9yZXR1cm4iLCAiZnVuIjogInN0YXRlLmhpZ2hzdGF0ZSIsICJmdW5fYXJncyI6IFtdLCAiaWQiOiAiMTAtMjIyLTI4LTc3LnNzbmMtY29ycC5jbG91ZCIsICJqaWQiOiAiMjAyNDA3MjQxOTI2MDIxMjI2NzYiLCAib3V0IjogImhpZ2hzdGF0ZSIsICJyZXRjb2RlIjogMCwgInJldHVybiI6IHsiY21kX3wtYWRkX2thZmthX3Bhc3N3b3JkX3RvX2tleXN0b3JlX3wtZWNobyBiMksxMUVcXCQwIHwgL3Vzci9iaW4vZmlsZWJlYXQga2V5c3RvcmUgYWRkIEVTX0tBRktBMDFfUFdEIC0tc3RkaW4gLS1mb3JjZV98LXJ1biI6IHsiX19pZF9fIjogImFkZF9rYWZrYV9wYXNzd29yZF90b19rZXlzdG9yZSIsICJfX3J1bl9udW1fXyI6IDEwMiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAidW5sZXNzIGNvbmRpdGlvbiBpcyB0cnVlIiwgImR1cmF0aW9uIjogMTcuMjU1LCAibmFtZSI6ICJlY2hvIGIySzExRVxcJDAgfCAvdXNyL2Jpbi9maWxlYmVhdCBrZXlzdG9yZSBhZGQgRVNfS0FGS0EwMV9QV0QgLS1zdGRpbiAtLWZvcmNlIiwgInJlc3VsdCI6IHRydWUsICJza2lwX3dhdGNoIjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTkuNzI2MTY3In0sICJjbWRffC1hZGRpbmdfc2hhMV9yaGVsOV98LXVwZGF0ZS1jcnlwdG8tcG9saWNpZXMgLS1zZXQgREVGQVVMVDpTSEExX3wtcnVuIjogeyJfX2lkX18iOiAiYWRkaW5nX3NoYTFfcmhlbDkiLCAiX19ydW5fbnVtX18iOiA5MiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgImNoYW5nZXMiOiB7InBpZCI6IDI0OTY5MzMsICJyZXRjb2RlIjogMCwgInN0ZGVyciI6ICIiLCAic3Rkb3V0IjogIlNldHRpbmcgc3lzdGVtIHBvbGljeSB0byBERUZBVUxUOlNIQTFcbk5vdGU6IFN5c3RlbS13aWRlIGNyeXB0byBwb2xpY2llcyBhcmUgYXBwbGllZCBvbiBhcHBsaWNhdGlvbiBzdGFydC11cC5cbkl0IGlzIHJlY29tbWVuZGVkIHRvIHJlc3RhcnQgdGhlIHN5c3RlbSBmb3IgdGhlIGNoYW5nZSBvZiBwb2xpY2llc1xudG8gZnVsbHkgdGFrZSBwbGFjZS4ifSwgImNvbW1lbnQiOiAiQ29tbWFuZCBcInVwZGF0ZS1jcnlwdG8tcG9saWNpZXMgLS1zZXQgREVGQVVMVDpTSEExXCIgcnVuIiwgImR1cmF0aW9uIjogMTY5LjkxMSwgIm5hbWUiOiAidXBkYXRlLWNyeXB0by1wb2xpY2llcyAtLXNldCBERUZBVUxUOlNIQTEiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTk1OTk0In0sICJjbWRffC1mbHVzaF9zc3NkX2NhY2hlX3wtL3Vzci9zYmluL3Nzc19jYWNoZSAtRV98LXJ1biI6IHsiX19ydW5fbnVtX18iOiAxMDksICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zc3NkIiwgIl9fc3RhdGVfcmFuX18iOiBmYWxzZSwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiU3RhdGUgd2FzIG5vdCBydW4gYmVjYXVzZSBub25lIG9mIHRoZSBvbmNoYW5nZXMgcmVxcyBjaGFuZ2VkIiwgImR1cmF0aW9uIjogMC4wMDQsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS44ODgxMzAifSwgImNtZF98LWluc3RhbGxfbGlicmFyaWVzX2lnbm9yZV9mYWlsdXJlX2FsbGJ1dHJoZWxffC15dW0gLS1kaXNhYmxlcmVwbz0qIC0tZW5hYmxlcmVwbz1zc25jKiBpbnN0YWxsIC15IHNlbGludXgtcG9saWN5LWRldmVsX3wtcnVuIjogeyJfX2lkX18iOiAiaW5zdGFsbF9saWJyYXJpZXNfaWdub3JlX2ZhaWx1cmVfYWxsYnV0cmhlbCIsICJfX3J1bl9udW1fXyI6IDExNiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXBhbG8tY29ydGV4LmxpbnV4IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAidW5sZXNzIGNvbmRpdGlvbiBpcyB0cnVlIiwgImR1cmF0aW9uIjogMjkuMDQ3LCAibmFtZSI6ICJ5dW0gLS1kaXNhYmxlcmVwbz0qIC0tZW5hYmxlcmVwbz1zc25jKiBpbnN0YWxsIC15IHNlbGludXgtcG9saWN5LWRldmVsIiwgInJlc3VsdCI6IHRydWUsICJza2lwX3dhdGNoIjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MjEuNzYwNTY1In0sICJjbWRffC1ydW5fc2NyaXB0X2dldC14YWd0YWdlbnRpZC5zaF98LXNhbHQ6Ly9zc25jLWJhc2VsaW5lL3NzbmMtZ3JhaW5zL3NzbmMtZmlyZWV5ZS1pZC9maWxlcy9nZXQteGFndGFnZW50aWQuc2hffC1zY3JpcHQiOiB7Il9faWRfXyI6ICJydW5fc2NyaXB0X2dldC14YWd0YWdlbnRpZC5zaCIsICJfX3J1bl9udW1fXyI6IDExNSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWdyYWlucy5zc25jLWZpcmVleWUtaWQiLCAiY2hhbmdlcyI6IHsicGlkIjogMjQ5Njk5NywgInJldGNvZGUiOiAwLCAic3RkZXJyIjogIiIsICJzdGRvdXQiOiAibG9jYWw6XG4gICAgLS0tLS0tLS0tLVxuICAgIHNzbmNfZmlyZWV5ZV9pZDpcbiAgICAgICAgZmlyZWV5ZV9taXNzaW5nIn0sICJjb21tZW50IjogIkNvbW1hbmQgJ3NhbHQ6Ly9zc25jLWJhc2VsaW5lL3NzbmMtZ3JhaW5zL3NzbmMtZmlyZWV5ZS1pZC9maWxlcy9nZXQteGFndGFnZW50aWQuc2gnIHJ1biIsICJkdXJhdGlvbiI6IDE3MTUuNDEyLCAibmFtZSI6ICJzYWx0Oi8vc3NuYy1iYXNlbGluZS9zc25jLWdyYWlucy9zc25jLWZpcmVleWUtaWQvZmlsZXMvZ2V0LXhhZ3RhZ2VudGlkLnNoIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjIwLjA0NDgzMCJ9LCAiY21kX3wtdXBkYXRlLWNhLXRydXN0X3wtL3Vzci9iaW4vdXBkYXRlLWNhLXRydXN0X3wtcnVuIjogeyJfX3J1bl9udW1fXyI6IDE4LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtdHJ1c3RlZC1jYS5saW51eC10cnVzdGVkLWNhIiwgIl9fc3RhdGVfcmFuX18iOiBmYWxzZSwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiU3RhdGUgd2FzIG5vdCBydW4gYmVjYXVzZSBub25lIG9mIHRoZSBvbmNoYW5nZXMgcmVxcyBjaGFuZ2VkIiwgImR1cmF0aW9uIjogMC4wMDQsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy4wOTg1MDMifSwgImNyb25ffC1jcmVhdGVfY3Jvbl9lbnZffC1QQVRIX3wtZW52X3ByZXNlbnQiOiB7Il9faWRfXyI6ICJjcmVhdGVfY3Jvbl9lbnYiLCAiX19ydW5fbnVtX18iOiAxMiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLW1pbmlvbiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkNyb24gZW52IFBBVEggYWxyZWFkeSBwcmVzZW50IiwgImR1cmF0aW9uIjogMTAuNTQ4LCAibmFtZSI6ICJQQVRIIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE2LjYxMjg4MSJ9LCAiY3Jvbl98LWNyZWF0ZV9taW5pb25faGlnaHN0YXRlX3NjaGVkdWxlX3wtc2xlZXAgMzM5OTk7IG5pY2UgLW4gMTkgc2FsdC1jYWxsIHN0YXRlLmFwcGx5ID4gL3RtcC9zYWx0LWNhbGwuY3Jvbi5vdXQgMj4mMSA7IHN5c3RlbWN0bCByZXN0YXJ0IHNhbHQtbWluaW9uIDsgc2FsdC1jYWxsIHN0YXRlLmFwcGx5ID4gL3RtcC9zYWx0LWNhbGwuY3Jvbi5vdXQgMj4mMV98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJjcmVhdGVfbWluaW9uX2hpZ2hzdGF0ZV9zY2hlZHVsZSIsICJfX3J1bl9udW1fXyI6IDEzLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtbWluaW9uIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiQ3JvbiBzbGVlcCAzMzk5OTsgbmljZSAtbiAxOSBzYWx0LWNhbGwgc3RhdGUuYXBwbHkgPiAvdG1wL3NhbHQtY2FsbC5jcm9uLm91dCAyPiYxIDsgc3lzdGVtY3RsIHJlc3RhcnQgc2FsdC1taW5pb24gOyBzYWx0LWNhbGwgc3RhdGUuYXBwbHkgPiAvdG1wL3NhbHQtY2FsbC5jcm9uLm91dCAyPiYxIGFscmVhZHkgcHJlc2VudCIsICJkdXJhdGlvbiI6IDEwLjAyMiwgIm5hbWUiOiAic2xlZXAgMzM5OTk7IG5pY2UgLW4gMTkgc2FsdC1jYWxsIHN0YXRlLmFwcGx5ID4gL3RtcC9zYWx0LWNhbGwuY3Jvbi5vdXQgMj4mMSA7IHN5c3RlbWN0bCByZXN0YXJ0IHNhbHQtbWluaW9uIDsgc2FsdC1jYWxsIHN0YXRlLmFwcGx5ID4gL3RtcC9zYWx0LWNhbGwuY3Jvbi5vdXQgMj4mMSIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNi42MjM4MzAifSwgImNyb25ffC1yZW1vdmVfZ29kaXNjb3ZlcnlfY3JvbmpvYl98LS9iaW4vc2xlZXAgOyAvdXNyL2xvY2FsL2Jpbi9kaXNjb3ZlcnktbGludXgtYW1kNjQgLS1kZXYgLXQgaW5mLWRpc2NvdmVyeS1qc29uID4+IC90bXAvZGlzY292ZXJ5LiQoL2Jpbi9kYXRlICtcXCVGKSAyPiYxX3wtYWJzZW50IjogeyJfX2lkX18iOiAicmVtb3ZlX2dvZGlzY292ZXJ5X2Nyb25qb2IiLCAiX19ydW5fbnVtX18iOiA4MywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWdvZGlzY292ZXJ5LXJlbW92YWwiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJDcm9uIC9iaW4vc2xlZXAgOyAvdXNyL2xvY2FsL2Jpbi9kaXNjb3ZlcnktbGludXgtYW1kNjQgLS1kZXYgLXQgaW5mLWRpc2NvdmVyeS1qc29uID4+IC90bXAvZGlzY292ZXJ5LiQoL2Jpbi9kYXRlICtcXCVGKSAyPiYxIGFscmVhZHkgYWJzZW50IiwgImR1cmF0aW9uIjogOS44NjksICJuYW1lIjogIi9iaW4vc2xlZXAgOyAvdXNyL2xvY2FsL2Jpbi9kaXNjb3ZlcnktbGludXgtYW1kNjQgLS1kZXYgLXQgaW5mLWRpc2NvdmVyeS1qc29uID4+IC90bXAvZGlzY292ZXJ5LiQoL2Jpbi9kYXRlICtcXCVGKSAyPiYxIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3Ljk0MDIzNCJ9LCAiZXZlbnRffC1maWxlYmVhdC1lcnJvci1ldmVudF98LXNzbmMvZmlsZWJlYXQva2Fma2EvZXJyb3JffC1zZW5kIjogeyJfX3J1bl9udW1fXyI6IDEwNSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgIl9fc3RhdGVfcmFuX18iOiBmYWxzZSwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiU3RhdGUgd2FzIG5vdCBydW4gYmVjYXVzZSBvbmZhaWwgcmVxIGRpZCBub3QgY2hhbmdlIiwgImR1cmF0aW9uIjogMC4wMDIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS43OTQwNDcifSwgImZpbGVffC1hZGRfYW5zaWJsZV8uc3NoX2RpcmVjdG9yeV98LX5hbnNpYmxlLy5zc2hffC1kaXJlY3RvcnkiOiB7Il9faWRfXyI6ICJhZGRfYW5zaWJsZV8uc3NoX2RpcmVjdG9yeSIsICJfX3J1bl9udW1fXyI6IDc5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtYW5zaWJsZSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBkaXJlY3RvcnkgL2hvbWUvYW5zaWJsZS8uc3NoIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMC43OTYsICJuYW1lIjogIi9ob21lL2Fuc2libGUvLnNzaCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45MTg5NTYifSwgImZpbGVffC1hZGRfcHJvZF9hbnNpYmxlX3NzaF9rZXlffC1+YW5zaWJsZS8uc3NoL2F1dGhvcml6ZWRfa2V5c198LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJhZGRfcHJvZF9hbnNpYmxlX3NzaF9rZXkiLCAiX19ydW5fbnVtX18iOiA4MSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWFuc2libGUiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ob21lL2Fuc2libGUvLnNzaC9hdXRob3JpemVkX2tleXMgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxOS4wNzksICJuYW1lIjogIi9ob21lL2Fuc2libGUvLnNzaC9hdXRob3JpemVkX2tleXMiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTIwMzk2In0sICJmaWxlX3wtY2xlYW51cF9vbGRfbG9nc198LS92YXIvbG9nX3wtdGlkaWVkIjogeyJfX2lkX18iOiAiY2xlYW51cF9vbGRfbG9ncyIsICJfX3J1bl9udW1fXyI6IDMxLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3lzbG9nIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiTm90aGluZyB0byByZW1vdmUgZnJvbSBkaXJlY3RvcnkgL3Zhci9sb2ciLCAiZHVyYXRpb24iOiA0LjU3NiwgIm5hbWUiOiAiL3Zhci9sb2ciLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuMzg0OTEwIn0sICJmaWxlX3wtY2xvdWRfbGRhcF9jcnRffC0vZXRjL29wZW5sZGFwL2NhY2VydHMvbGRhcC5jcnRffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiY2xvdWRfbGRhcF9jcnQiLCAiX19ydW5fbnVtX18iOiAxMDgsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zc3NkIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL29wZW5sZGFwL2NhY2VydHMvbGRhcC5jcnQgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAzOS4wOTYsICJuYW1lIjogIi9ldGMvb3BlbmxkYXAvY2FjZXJ0cy9sZGFwLmNydCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS44NDc3NjcifSwgImZpbGVffC1jbG91ZF9zc3NkX2NvbmZffC0vZXRjL3Nzc2Qvc3NzZC5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImNsb3VkX3Nzc2RfY29uZiIsICJfX3J1bl9udW1fXyI6IDEwNywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXNzc2QiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvc3NzZC9zc3NkLmNvbmYgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiA1My4wNzgsICJuYW1lIjogIi9ldGMvc3NzZC9zc3NkLmNvbmYiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTkuNzk0NDEwIn0sICJmaWxlX3wtY29weV9yb290X3NzaF9jb25mX3wtfnJvb3QvLnNzaC9jb25maWdffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiY29weV9yb290X3NzaF9jb25mIiwgIl9fcnVuX251bV9fIjogODcsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1naXQiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9yb290Ly5zc2gvY29uZmlnIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTYuMjYsICJuYW1lIjogIi9yb290Ly5zc2gvY29uZmlnIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3Ljk3MjgxMCJ9LCAiZmlsZV98LWNvcHlfc2FsdF9wcml2YXRlX2tleV98LX5yb290Ly5zc2gvc2FsdF9pZF9yc2FffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiY29weV9zYWx0X3ByaXZhdGVfa2V5IiwgIl9fcnVuX251bV9fIjogODYsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1naXQiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9yb290Ly5zc2gvc2FsdF9pZF9yc2EgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAyLjA2NiwgIm5hbWUiOiAiL3Jvb3QvLnNzaC9zYWx0X2lkX3JzYSIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45NzA2MzAifSwgImZpbGVffC1jb3J0ZXhfY3JlYXRlX3BhbndfZm9sZGVyX3wtL2V0Yy9wYW53L198LWRpcmVjdG9yeSI6IHsiX19pZF9fIjogImNvcnRleF9jcmVhdGVfcGFud19mb2xkZXIiLCAiX19ydW5fbnVtX18iOiAxMTcsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1wYWxvLWNvcnRleC5saW51eCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogInVubGVzcyBjb25kaXRpb24gaXMgdHJ1ZSIsICJkdXJhdGlvbiI6IDI0LjcxNCwgIm5hbWUiOiAiL2V0Yy9wYW53LyIsICJyZXN1bHQiOiB0cnVlLCAic2tpcF93YXRjaCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjIxLjc5MDEyMiJ9LCAiZmlsZV98LWNyZWF0ZV9kZWZhdWx0X3N1ZG9lcl9ydWxlc19hbnNpYmxlX3wtL2V0Yy9zdWRvZXJzLmQvcHJvY2Vzc2VzL2Fuc2libGVffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiY3JlYXRlX2RlZmF1bHRfc3Vkb2VyX3J1bGVzX2Fuc2libGUiLCAiX19ydW5fbnVtX18iOiA1OCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvc3Vkb2Vycy5kL3Byb2Nlc3Nlcy9hbnNpYmxlIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTUuNzE4LCAibmFtZSI6ICIvZXRjL3N1ZG9lcnMuZC9wcm9jZXNzZXMvYW5zaWJsZSIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44MjcyNTQifSwgImZpbGVffC1jcmVhdGVfZGVmYXVsdF9zdWRvZXJfcnVsZXNfZWNjZGlzY29ffC0vZXRjL3N1ZG9lcnMuZC9wcm9jZXNzZXMvZWNjZGlzY29ffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiY3JlYXRlX2RlZmF1bHRfc3Vkb2VyX3J1bGVzX2VjY2Rpc2NvIiwgIl9fcnVuX251bV9fIjogNjAsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zdWRvZXJzIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3N1ZG9lcnMuZC9wcm9jZXNzZXMvZWNjZGlzY28gaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxMy4zNDQsICJuYW1lIjogIi9ldGMvc3Vkb2Vycy5kL3Byb2Nlc3Nlcy9lY2NkaXNjbyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44NDQ5MzkifSwgImZpbGVffC1jcmVhdGVfZGVmYXVsdF9zdWRvZXJfcnVsZXNfc2FsdF98LS9ldGMvc3Vkb2Vycy5kL3Byb2Nlc3Nlcy9zYWx0X3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImNyZWF0ZV9kZWZhdWx0X3N1ZG9lcl9ydWxlc19zYWx0IiwgIl9fcnVuX251bV9fIjogNjQsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zdWRvZXJzIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3N1ZG9lcnMuZC9wcm9jZXNzZXMvc2FsdCBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDEzLjI0OCwgIm5hbWUiOiAiL2V0Yy9zdWRvZXJzLmQvcHJvY2Vzc2VzL3NhbHQiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuODc1MTc2In0sICJmaWxlX3wtY3JlYXRlX2RlZmF1bHRfc3Vkb2VyX3J1bGVzX3RlbGVncmFmX3wtL2V0Yy9zdWRvZXJzLmQvcHJvY2Vzc2VzL3RlbGVncmFmX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImNyZWF0ZV9kZWZhdWx0X3N1ZG9lcl9ydWxlc190ZWxlZ3JhZiIsICJfX3J1bl9udW1fXyI6IDYyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9zdWRvZXJzLmQvcHJvY2Vzc2VzL3RlbGVncmFmIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTIuOTE0LCAibmFtZSI6ICIvZXRjL3N1ZG9lcnMuZC9wcm9jZXNzZXMvdGVsZWdyYWYiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuODYwMTc5In0sICJmaWxlX3wtY3JlYXRlX3Jvb3Rfc3NoX2Rpcl98LX5yb290Ly5zc2hffC1kaXJlY3RvcnkiOiB7Il9faWRfXyI6ICJjcmVhdGVfcm9vdF9zc2hfZGlyIiwgIl9fcnVuX251bV9fIjogODUsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1naXQiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJUaGUgZGlyZWN0b3J5IC9yb290Ly5zc2ggaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAyLjcwMiwgIm5hbWUiOiAiL3Jvb3QvLnNzaCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45Njc3ODUifSwgImZpbGVffC1jcmVhdGVfc3Vkb2Vyc19kaXJlY3RvcnlfcHJvY2Vzc2VzX3wtL2V0Yy9zdWRvZXJzLmQvcHJvY2Vzc2VzX3wtZGlyZWN0b3J5IjogeyJfX2lkX18iOiAiY3JlYXRlX3N1ZG9lcnNfZGlyZWN0b3J5X3Byb2Nlc3NlcyIsICJfX3J1bl9udW1fXyI6IDU1LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBkaXJlY3RvcnkgL2V0Yy9zdWRvZXJzLmQvcHJvY2Vzc2VzIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMS4xNDUsICJuYW1lIjogIi9ldGMvc3Vkb2Vycy5kL3Byb2Nlc3NlcyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44MjM1ODIifSwgImZpbGVffC1jcmVhdGVfc3Vkb2Vyc19kaXJlY3RvcnlfdHBffC0vZXRjL3N1ZG9lcnMuZC90cF98LWRpcmVjdG9yeSI6IHsiX19pZF9fIjogImNyZWF0ZV9zdWRvZXJzX2RpcmVjdG9yeV90cCIsICJfX3J1bl9udW1fXyI6IDU3LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBkaXJlY3RvcnkgL2V0Yy9zdWRvZXJzLmQvdHAgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAwLjg1MSwgIm5hbWUiOiAiL2V0Yy9zdWRvZXJzLmQvdHAiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuODI2MzAxIn0sICJmaWxlX3wtY3JlYXRlX3RwdXNlcl9zdWRvZXJfcnVsZV98LS9ldGMvc3Vkb2Vycy5kL3RwL3RwdXNlcnNffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiY3JlYXRlX3RwdXNlcl9zdWRvZXJfcnVsZSIsICJfX3J1bl9udW1fXyI6IDY2LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9zdWRvZXJzLmQvdHAvdHB1c2VycyBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDEzLjM0NSwgIm5hbWUiOiAiL2V0Yy9zdWRvZXJzLmQvdHAvdHB1c2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44OTA3OTUifSwgImZpbGVffC1kb3dubG9hZF9jb3J0ZXhfY29uZmlnX3wtL2V0Yy9wYW53L2NvcnRleC5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImRvd25sb2FkX2NvcnRleF9jb25maWciLCAiX19ydW5fbnVtX18iOiAxMTgsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1wYWxvLWNvcnRleC5saW51eCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9wYW53L2NvcnRleC5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMjEuNTA1LCAibmFtZSI6ICIvZXRjL3BhbncvY29ydGV4LmNvbmYiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MjEuODE1Mjc0In0sICJmaWxlX3wtZW5zdXJlX2luY2x1ZGVfcHJvY2Vzc2VzX3NldF98LS9ldGMvc3Vkb2Vyc198LWFwcGVuZCI6IHsiX19pZF9fIjogImVuc3VyZV9pbmNsdWRlX3Byb2Nlc3Nlc19zZXQiLCAiX19ydW5fbnVtX18iOiA1NCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvc3Vkb2VycyBpcyBpbiBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMy4xNjMsICJuYW1lIjogIi9ldGMvc3Vkb2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44MjAyNjAifSwgImZpbGVffC1lbnN1cmVfaW5jbHVkZV90cF9zZXRffC0vZXRjL3N1ZG9lcnNffC1hcHBlbmQiOiB7Il9faWRfXyI6ICJlbnN1cmVfaW5jbHVkZV90cF9zZXQiLCAiX19ydW5fbnVtX18iOiA1NiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvc3Vkb2VycyBpcyBpbiBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMS4zNjYsICJuYW1lIjogIi9ldGMvc3Vkb2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44MjQ4MzIifSwgImZpbGVffC1lbnN1cmVfc3Vkb2Vyc19kaXJfYW5zaWJsZV98LS9ldGMvc3Vkb2Vyc198LWxpbmUiOiB7Il9faWRfXyI6ICJlbnN1cmVfc3Vkb2Vyc19kaXJfYW5zaWJsZSIsICJfX3J1bl9udW1fXyI6IDU5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIk5vIGNoYW5nZXMgbmVlZGVkIHRvIGJlIG1hZGUiLCAiZHVyYXRpb24iOiAxLjcyNCwgIm5hbWUiOiAiL2V0Yy9zdWRvZXJzIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3Ljg0MzEwNiJ9LCAiZmlsZV98LWVuc3VyZV9zdWRvZXJzX2Rpcl9lY2NkaXNjb198LS9ldGMvc3Vkb2Vyc198LWxpbmUiOiB7Il9faWRfXyI6ICJlbnN1cmVfc3Vkb2Vyc19kaXJfZWNjZGlzY28iLCAiX19ydW5fbnVtX18iOiA2MSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJObyBjaGFuZ2VzIG5lZWRlZCB0byBiZSBtYWRlIiwgImR1cmF0aW9uIjogMS42NDksICJuYW1lIjogIi9ldGMvc3Vkb2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44NTg0MTcifSwgImZpbGVffC1lbnN1cmVfc3Vkb2Vyc19kaXJfc2FsdF98LS9ldGMvc3Vkb2Vyc198LWxpbmUiOiB7Il9faWRfXyI6ICJlbnN1cmVfc3Vkb2Vyc19kaXJfc2FsdCIsICJfX3J1bl9udW1fXyI6IDY1LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIk5vIGNoYW5nZXMgbmVlZGVkIHRvIGJlIG1hZGUiLCAiZHVyYXRpb24iOiAyLjA3OCwgIm5hbWUiOiAiL2V0Yy9zdWRvZXJzIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3Ljg4ODU5NSJ9LCAiZmlsZV98LWVuc3VyZV9zdWRvZXJzX2Rpcl90ZWxlZ3JhZl98LS9ldGMvc3Vkb2Vyc198LWxpbmUiOiB7Il9faWRfXyI6ICJlbnN1cmVfc3Vkb2Vyc19kaXJfdGVsZWdyYWYiLCAiX19ydW5fbnVtX18iOiA2MywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJObyBjaGFuZ2VzIG5lZWRlZCB0byBiZSBtYWRlIiwgImR1cmF0aW9uIjogMS44MjEsICJuYW1lIjogIi9ldGMvc3Vkb2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy44NzMyMjgifSwgImZpbGVffC1maWxlYmVhdF9hcGFjaGVfbW9kdWxlX2NvbmZffC0vZXRjL2ZpbGViZWF0L21vZHVsZXMuZC9zc25jX2FwYWNoZS55bWxffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiZmlsZWJlYXRfYXBhY2hlX21vZHVsZV9jb25mIiwgIl9fcnVuX251bV9fIjogOTcsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1maWxlYmVhdCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9maWxlYmVhdC9tb2R1bGVzLmQvc3NuY19hcGFjaGUueW1sIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTMuOTQ3LCAibmFtZSI6ICIvZXRjL2ZpbGViZWF0L21vZHVsZXMuZC9zc25jX2FwYWNoZS55bWwiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTkuNjU3Mjc0In0sICJmaWxlX3wtZmlsZWJlYXRfY3VzdG9tX2lucHV0c198LS9ldGMvZmlsZWJlYXQvaW5wdXRzLmQvc2FsdC55bWxffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiZmlsZWJlYXRfY3VzdG9tX2lucHV0cyIsICJfX3J1bl9udW1fXyI6IDEwMCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL2ZpbGViZWF0L2lucHV0cy5kL3NhbHQueW1sIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTMuMTczLCAibmFtZSI6ICIvZXRjL2ZpbGViZWF0L2lucHV0cy5kL3NhbHQueW1sIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE5LjY5OTY0NiJ9LCAiZmlsZV98LWZpbGViZWF0X2N1c3RvbV9pbnB1dHNffC0vZXRjL2ZpbGViZWF0L2lucHV0cy5kL3Nzc2QueW1sX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImZpbGViZWF0X2N1c3RvbV9pbnB1dHMiLCAiX19ydW5fbnVtX18iOiAxMDEsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1maWxlYmVhdCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9maWxlYmVhdC9pbnB1dHMuZC9zc3NkLnltbCBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDEzLjA1NywgIm5hbWUiOiAiL2V0Yy9maWxlYmVhdC9pbnB1dHMuZC9zc3NkLnltbCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS43MTI5NjMifSwgImZpbGVffC1maWxlYmVhdF9pbnB1dF9zYW1wbGVfY29uZl98LS9ldGMvZmlsZWJlYXQvaW5wdXRzLmQvYXBwaW5wdXQueW1sLnNhbXBsZV98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJmaWxlYmVhdF9pbnB1dF9zYW1wbGVfY29uZiIsICJfX3J1bl9udW1fXyI6IDk5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtZmlsZWJlYXQiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvZmlsZWJlYXQvaW5wdXRzLmQvYXBwaW5wdXQueW1sLnNhbXBsZSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE0LjEzNiwgIm5hbWUiOiAiL2V0Yy9maWxlYmVhdC9pbnB1dHMuZC9hcHBpbnB1dC55bWwuc2FtcGxlIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE5LjY4NTM3NCJ9LCAiZmlsZV98LWZpbGViZWF0X21haW5fY29uZl98LS9ldGMvZmlsZWJlYXQvZmlsZWJlYXQueW1sX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImZpbGViZWF0X21haW5fY29uZiIsICJfX3J1bl9udW1fXyI6IDk2LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtZmlsZWJlYXQiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvZmlsZWJlYXQvZmlsZWJlYXQueW1sIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMjguMDQ4LCAibmFtZSI6ICIvZXRjL2ZpbGViZWF0L2ZpbGViZWF0LnltbCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS42MjkwODQifSwgImZpbGVffC1maWxlYmVhdF9zeXN0ZW1fbW9kdWxlX2NvbmZffC0vZXRjL2ZpbGViZWF0L21vZHVsZXMuZC9zc25jX3N5c3RlbS55bWxffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAiZmlsZWJlYXRfc3lzdGVtX21vZHVsZV9jb25mIiwgIl9fcnVuX251bV9fIjogOTgsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1maWxlYmVhdCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9maWxlYmVhdC9tb2R1bGVzLmQvc3NuY19zeXN0ZW0ueW1sIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTMuODgyLCAibmFtZSI6ICIvZXRjL2ZpbGViZWF0L21vZHVsZXMuZC9zc25jX3N5c3RlbS55bWwiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTkuNjcxMzU2In0sICJmaWxlX3wtbG9ncm90YXRlLmRfYnRtcF98LS9ldGMvbG9ncm90YXRlLmQvYnRtcF98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJsb2dyb3RhdGUuZF9idG1wIiwgIl9fcnVuX251bV9fIjogMjksICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zeXNsb2ciLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvbG9ncm90YXRlLmQvYnRtcCBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE0LjkxNSwgIm5hbWUiOiAiL2V0Yy9sb2dyb3RhdGUuZC9idG1wIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjM1NTUyOSJ9LCAiZmlsZV98LWxvZ3JvdGF0ZS5kX3d0bXBffC0vZXRjL2xvZ3JvdGF0ZS5kL3d0bXBffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAibG9ncm90YXRlLmRfd3RtcCIsICJfX3J1bl9udW1fXyI6IDMwLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3lzbG9nIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL2xvZ3JvdGF0ZS5kL3d0bXAgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxNC4xNTgsICJuYW1lIjogIi9ldGMvbG9ncm90YXRlLmQvd3RtcCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy4zNzA1ODIifSwgImZpbGVffC1tYW5hZ2VfbG9naW4uZGVmc198LS9ldGMvbG9naW4uZGVmc198LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJtYW5hZ2VfbG9naW4uZGVmcyIsICJfX3J1bl9udW1fXyI6IDIwLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc2VjdXJpdHkiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvbG9naW4uZGVmcyBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE2Ljc1OCwgIm5hbWUiOiAiL2V0Yy9sb2dpbi5kZWZzIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjA5OTE4MSJ9LCAiZmlsZV98LW1hbmFnZV9sb2dyb3RhdGUuY29uZl9maWxlX3wtL2V0Yy9sb2dyb3RhdGUuY29uZl98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJtYW5hZ2VfbG9ncm90YXRlLmNvbmZfZmlsZSIsICJfX3J1bl9udW1fXyI6IDI3LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3lzbG9nIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL2xvZ3JvdGF0ZS5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTUuNDEzLCAibmFtZSI6ICIvZXRjL2xvZ3JvdGF0ZS5jb25mIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjMyMTYzNCJ9LCAiZmlsZV98LW1hbmFnZV9sb2dyb3RhdGUuZF9zeXNsb2dfZmlsZV98LS9ldGMvbG9ncm90YXRlLmQvc3lzbG9nX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogIm1hbmFnZV9sb2dyb3RhdGUuZF9zeXNsb2dfZmlsZSIsICJfX3J1bl9udW1fXyI6IDI4LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3lzbG9nIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL2xvZ3JvdGF0ZS5kL3N5c2xvZyBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE4LjExNywgIm5hbWUiOiAiL2V0Yy9sb2dyb3RhdGUuZC9zeXNsb2ciLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuMzM3MjM0In0sICJmaWxlX3wtbWFuYWdlX21pbmlvbl9jb25maWdffC0vZXRjL3NhbHQvbWluaW9uLmQvc3NuY19taW5pb24uY29uZl98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJtYW5hZ2VfbWluaW9uX2NvbmZpZyIsICJfX3J1bl9udW1fXyI6IDksICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1taW5pb24iLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvc2FsdC9taW5pb24uZC9zc25jX21pbmlvbi5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTM3LjgzNiwgIm5hbWUiOiAiL2V0Yy9zYWx0L21pbmlvbi5kL3NzbmNfbWluaW9uLmNvbmYiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTYuNDU0MTk0In0sICJmaWxlX3wtbWFuYWdlX3JzeXNsb2cuY29uZl9maWxlX3wtL2V0Yy9yc3lzbG9nLmNvbmZffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAibWFuYWdlX3JzeXNsb2cuY29uZl9maWxlIiwgIl9fcnVuX251bV9fIjogMjUsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zeXNsb2ciLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvcnN5c2xvZy5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTcuNjgsICJuYW1lIjogIi9ldGMvcnN5c2xvZy5jb25mIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjMwMzE4NiJ9LCAiZmlsZV98LW1hbmFnZV9zdGFydHVwX2NvbmZpZ198LS9ldGMvc2FsdC9taW5pb24uZC9zc25jX3N0YXJ0dXAuY29uZl98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJtYW5hZ2Vfc3RhcnR1cF9jb25maWciLCAiX19ydW5fbnVtX18iOiAxMCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLW1pbmlvbiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9zYWx0L21pbmlvbi5kL3NzbmNfc3RhcnR1cC5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTYuNTk5LCAibmFtZSI6ICIvZXRjL3NhbHQvbWluaW9uLmQvc3NuY19zdGFydHVwLmNvbmYiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTYuNTkyMjIxIn0sICJmaWxlX3wtbWFuYWdlX3phYmJpeF9hZ2VudGRffC0vZXRjL3phYmJpeC96YWJiaXhfYWdlbnRkLmNvbmZffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAibWFuYWdlX3phYmJpeF9hZ2VudGQiLCAiX19ydW5fbnVtX18iOiA1MSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXphYmJpeCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy96YWJiaXgvemFiYml4X2FnZW50ZC5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMjcuODY5LCAibmFtZSI6ICIvZXRjL3phYmJpeC96YWJiaXhfYWdlbnRkLmNvbmYiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuNjk0OTc4In0sICJmaWxlX3wtbWFuYWdlX3phYmJpeF9sb2dffC0vdmFyL2xvZy96YWJiaXhffC1kaXJlY3RvcnkiOiB7Il9faWRfXyI6ICJtYW5hZ2VfemFiYml4X2xvZyIsICJfX3J1bl9udW1fXyI6IDQ5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtemFiYml4IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVGhlIGRpcmVjdG9yeSAvdmFyL2xvZy96YWJiaXggaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAyLjE3NSwgIm5hbWUiOiAiL3Zhci9sb2cvemFiYml4IiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjY5MTY0MiJ9LCAiZmlsZV98LW1ldGFkYXRhX2dlbmVyYXRlZF9ncmFpbnNfZmlsZV98LS9ldGMvc2FsdC9taW5pb24uZC85OS1tZXRhZGF0YS1ncmFpbnMuY29uZl98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJtZXRhZGF0YV9nZW5lcmF0ZWRfZ3JhaW5zX2ZpbGUiLCAiX19ydW5fbnVtX18iOiAyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtbWluaW9uLmNsb3VkLW1ldGFkYXRhIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3NhbHQvbWluaW9uLmQvOTktbWV0YWRhdGEtZ3JhaW5zLmNvbmYgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiA4Mi42MDEsICJuYW1lIjogIi9ldGMvc2FsdC9taW5pb24uZC85OS1tZXRhZGF0YS1ncmFpbnMuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjowOS40MDY1NzUifSwgImZpbGVffC1yZW1vdmVfYW5zaWJsZV9hdXRob3JpemVkX2tleXMyX3wtfmFuc2libGUvLnNzaC9hdXRob3JpemVkX2tleXMyX3wtYWJzZW50IjogeyJfX2lkX18iOiAicmVtb3ZlX2Fuc2libGVfYXV0aG9yaXplZF9rZXlzMiIsICJfX3J1bl9udW1fXyI6IDgwLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtYW5zaWJsZSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2hvbWUvYW5zaWJsZS8uc3NoL2F1dGhvcml6ZWRfa2V5czIgaXMgbm90IHByZXNlbnQiLCAiZHVyYXRpb24iOiAwLjQ2NCwgIm5hbWUiOiAiL2hvbWUvYW5zaWJsZS8uc3NoL2F1dGhvcml6ZWRfa2V5czIiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTE5ODQ3In0sICJmaWxlX3wtcmVtb3ZlX2F1dGhvcml6ZWRfa2V5c198LX5yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzMl98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJyZW1vdmVfYXV0aG9yaXplZF9rZXlzIiwgIl9fcnVuX251bV9fIjogOTAsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1yb290IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvcm9vdC8uc3NoL2F1dGhvcml6ZWRfa2V5czIgaXMgbm90IHByZXNlbnQgYW5kIGlzIG5vdCBzZXQgZm9yIGNyZWF0aW9uIiwgImR1cmF0aW9uIjogMC44MTIsICJuYW1lIjogIi9yb290Ly5zc2gvYXV0aG9yaXplZF9rZXlzMiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45OTI2NTQifSwgImZpbGVffC1yZW1vdmVfYXV0aG9yaXplZF9rZXlzX3wtfnJvb3QvLnNzaC9hdXRob3JpemVkX2tleXNffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAicmVtb3ZlX2F1dGhvcml6ZWRfa2V5cyIsICJfX3J1bl9udW1fXyI6IDg5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtcm9vdCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL3Jvb3QvLnNzaC9hdXRob3JpemVkX2tleXMgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxLjY0OCwgIm5hbWUiOiAiL3Jvb3QvLnNzaC9hdXRob3JpemVkX2tleXMiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTkwOTEwIn0sICJmaWxlX3wtcmVtb3ZlX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfZGVkaWNhdGVkX3wtL2V0Yy9zdWRvZXJzX3wtbGluZSI6IHsiX19pZF9fIjogInJlbW92ZV9kZXByZWNhdGVkX3N1ZG9lcl9kaXJzX2RlZGljYXRlZCIsICJfX3J1bl9udW1fXyI6IDY3LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIk5vIGNoYW5nZXMgbmVlZGVkIHRvIGJlIG1hZGUiLCAiZHVyYXRpb24iOiAxLjc3NSwgIm5hbWUiOiAiL2V0Yy9zdWRvZXJzIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjkwNDI4MCJ9LCAiZmlsZV98LXJlbW92ZV9kZXByZWNhdGVkX3N1ZG9lcl9kaXJzX2xlZ2FjeV98LS9ldGMvc3Vkb2Vyc198LWxpbmUiOiB7Il9faWRfXyI6ICJyZW1vdmVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc19sZWdhY3kiLCAiX19ydW5fbnVtX18iOiA2OSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJObyBjaGFuZ2VzIG5lZWRlZCB0byBiZSBtYWRlIiwgImR1cmF0aW9uIjogMS43MzgsICJuYW1lIjogIi9ldGMvc3Vkb2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45MDY3MTQifSwgImZpbGVffC1yZW1vdmVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc19yZXRpcmVkX3wtL2V0Yy9zdWRvZXJzX3wtbGluZSI6IHsiX19pZF9fIjogInJlbW92ZV9kZXByZWNhdGVkX3N1ZG9lcl9kaXJzX3JldGlyZWQiLCAiX19ydW5fbnVtX18iOiA3MSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJObyBjaGFuZ2VzIG5lZWRlZCB0byBiZSBtYWRlIiwgImR1cmF0aW9uIjogMS41NzEsICJuYW1lIjogIi9ldGMvc3Vkb2VycyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45MDkwNzgifSwgImZpbGVffC1yZW1vdmVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc19zaGFyZWRffC0vZXRjL3N1ZG9lcnNffC1saW5lIjogeyJfX2lkX18iOiAicmVtb3ZlX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfc2hhcmVkIiwgIl9fcnVuX251bV9fIjogNzMsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zdWRvZXJzIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiTm8gY2hhbmdlcyBuZWVkZWQgdG8gYmUgbWFkZSIsICJkdXJhdGlvbiI6IDEuNTM4LCAibmFtZSI6ICIvZXRjL3N1ZG9lcnMiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTExMjM0In0sICJmaWxlX3wtcmVtb3ZlX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfdGVtcF98LS9ldGMvc3Vkb2Vyc198LWxpbmUiOiB7Il9faWRfXyI6ICJyZW1vdmVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc190ZW1wIiwgIl9fcnVuX251bV9fIjogNzUsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zdWRvZXJzIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiTm8gY2hhbmdlcyBuZWVkZWQgdG8gYmUgbWFkZSIsICJkdXJhdGlvbiI6IDEuNjAyLCAibmFtZSI6ICIvZXRjL3N1ZG9lcnMiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTEzMzYxIn0sICJmaWxlX3wtcmVtb3ZlX2dvZGlzY292ZXJ5X2RpcmVjdG9yeV98LS91c3IvbG9jYWwvYmluL2Rpc2NvdmVyeS1saW51eC1hbWQ2NF98LWFic2VudCI6IHsiX19pZF9fIjogInJlbW92ZV9nb2Rpc2NvdmVyeV9kaXJlY3RvcnkiLCAiX19ydW5fbnVtX18iOiA4MiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWdvZGlzY292ZXJ5LXJlbW92YWwiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC91c3IvbG9jYWwvYmluL2Rpc2NvdmVyeS1saW51eC1hbWQ2NCBpcyBub3QgcHJlc2VudCIsICJkdXJhdGlvbiI6IDAuNTEyLCAibmFtZSI6ICIvdXNyL2xvY2FsL2Jpbi9kaXNjb3ZlcnktbGludXgtYW1kNjQiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTM5NjEyIn0sICJmaWxlX3wtcmVtb3ZlX3Byb2ZpbGUuZF91bWFzay5zaF98LS9ldGMvcHJvZmlsZS5kL3VtYXNrLnNoX3wtYWJzZW50IjogeyJfX2lkX18iOiAicmVtb3ZlX3Byb2ZpbGUuZF91bWFzay5zaCIsICJfX3J1bl9udW1fXyI6IDE5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc2VjdXJpdHkiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvcHJvZmlsZS5kL3VtYXNrLnNoIGlzIG5vdCBwcmVzZW50IiwgImR1cmF0aW9uIjogMC41MTIsICJuYW1lIjogIi9ldGMvcHJvZmlsZS5kL3VtYXNrLnNoIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjA5ODU3NiJ9LCAiZmlsZV98LXJlbW92ZV9yc3lzbG9nLmNvbmZfZnJvbV9sb2dyb3RhdGVffC0vZXRjL2xvZ3JvdGF0ZS5kL3JzeXNsb2dffC1hYnNlbnQiOiB7Il9faWRfXyI6ICJyZW1vdmVfcnN5c2xvZy5jb25mX2Zyb21fbG9ncm90YXRlIiwgIl9fcnVuX251bV9fIjogMjYsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zeXNsb2ciLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvbG9ncm90YXRlLmQvcnN5c2xvZyBpcyBub3QgcHJlc2VudCIsICJkdXJhdGlvbiI6IDAuNTA4LCAibmFtZSI6ICIvZXRjL2xvZ3JvdGF0ZS5kL3JzeXNsb2ciLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuMzIxMDM1In0sICJmaWxlX3wtcmVtb3ZlX3NhbHRfbWluaW9uX2NvbmZpZ198LS9ldGMvc2FsdC9taW5pb25ffC1hYnNlbnQiOiB7Il9faWRfXyI6ICJyZW1vdmVfc2FsdF9taW5pb25fY29uZmlnIiwgIl9fcnVuX251bV9fIjogMTEsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1taW5pb24iLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvc2FsdC9taW5pb24gaXMgbm90IHByZXNlbnQiLCAiZHVyYXRpb24iOiAwLjY1NywgIm5hbWUiOiAiL2V0Yy9zYWx0L21pbmlvbiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNi42MDkwMjIifSwgImZpbGVffC1yZW5hbWVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc19kZWRpY2F0ZWRffC0vZXRjL3N1ZG9lcnMuZC9UUEFNX0RFUFJFQ0FURURfZGVkaWNhdGVkX3wtcmVuYW1lIjogeyJfX2lkX18iOiAicmVuYW1lX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfZGVkaWNhdGVkIiwgIl9fcnVuX251bV9fIjogNjgsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zdWRvZXJzIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiU291cmNlIGZpbGUgXCIvZXRjL3N1ZG9lcnMuZC9kZWRpY2F0ZWRcIiBoYXMgYWxyZWFkeSBiZWVuIG1vdmVkIG91dCBvZiBwbGFjZSIsICJkdXJhdGlvbiI6IDAuNDQyLCAibmFtZSI6ICIvZXRjL3N1ZG9lcnMuZC9UUEFNX0RFUFJFQ0FURURfZGVkaWNhdGVkIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjkwNjE4NCJ9LCAiZmlsZV98LXJlbmFtZV9kZXByZWNhdGVkX3N1ZG9lcl9kaXJzX2xlZ2FjeV98LS9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF9sZWdhY3lffC1yZW5hbWUiOiB7Il9faWRfXyI6ICJyZW5hbWVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc19sZWdhY3kiLCAiX19ydW5fbnVtX18iOiA3MCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJTb3VyY2UgZmlsZSBcIi9ldGMvc3Vkb2Vycy5kL2xlZ2FjeVwiIGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgb3V0IG9mIHBsYWNlIiwgImR1cmF0aW9uIjogMC40MjksICJuYW1lIjogIi9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF9sZWdhY3kiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTA4NTUzIn0sICJmaWxlX3wtcmVuYW1lX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfcmV0aXJlZF98LS9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF9yZXRpcmVkX3wtcmVuYW1lIjogeyJfX2lkX18iOiAicmVuYW1lX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfcmV0aXJlZCIsICJfX3J1bl9udW1fXyI6IDcyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlNvdXJjZSBmaWxlIFwiL2V0Yy9zdWRvZXJzLmQvcmV0aXJlZFwiIGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgb3V0IG9mIHBsYWNlIiwgImR1cmF0aW9uIjogMC40MDgsICJuYW1lIjogIi9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF9yZXRpcmVkIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjkxMDc0NCJ9LCAiZmlsZV98LXJlbmFtZV9kZXByZWNhdGVkX3N1ZG9lcl9kaXJzX3NoYXJlZF98LS9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF9zaGFyZWRffC1yZW5hbWUiOiB7Il9faWRfXyI6ICJyZW5hbWVfZGVwcmVjYXRlZF9zdWRvZXJfZGlyc19zaGFyZWQiLCAiX19ydW5fbnVtX18iOiA3NCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXN1ZG9lcnMiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJTb3VyY2UgZmlsZSBcIi9ldGMvc3Vkb2Vycy5kL3NoYXJlZFwiIGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgb3V0IG9mIHBsYWNlIiwgImR1cmF0aW9uIjogMC40MTEsICJuYW1lIjogIi9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF9zaGFyZWQiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTEyODcwIn0sICJmaWxlX3wtcmVuYW1lX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfdGVtcF98LS9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF90ZW1wX3wtcmVuYW1lIjogeyJfX2lkX18iOiAicmVuYW1lX2RlcHJlY2F0ZWRfc3Vkb2VyX2RpcnNfdGVtcCIsICJfX3J1bl9udW1fXyI6IDc2LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3Vkb2VycyIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlNvdXJjZSBmaWxlIFwiL2V0Yy9zdWRvZXJzLmQvdGVtcFwiIGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQgb3V0IG9mIHBsYWNlIiwgImR1cmF0aW9uIjogMC40MjQsICJuYW1lIjogIi9ldGMvc3Vkb2Vycy5kL1RQQU1fREVQUkVDQVRFRF90ZW1wIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjkxNTA2OCJ9LCAiZmlsZV98LXNhZmVndWFyZF9zc3NkX2ZpbGVffC0vZXRjL3Nzc2QvY29uZi5kLzk5LXNhZmVndWFyZC5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInNhZmVndWFyZF9zc3NkX2ZpbGUiLCAiX19ydW5fbnVtX18iOiAxMTAsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zc3NkIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAib25seWlmIGNvbmRpdGlvbiBpcyBmYWxzZSIsICJkdXJhdGlvbiI6IDE2Ljk1MSwgIm5hbWUiOiAiL2V0Yy9zc3NkL2NvbmYuZC85OS1zYWZlZ3VhcmQuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic2tpcF93YXRjaCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE5Ljg4ODIxNCJ9LCAiZmlsZV98LXNzaGRfYmFubmVyX2lzc3VlX3wtL2V0Yy9pc3N1ZS5uZXRffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAic3NoZF9iYW5uZXJfaXNzdWUiLCAiX19ydW5fbnVtX18iOiAyMywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXNlY3VyaXR5IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL2lzc3VlLm5ldCBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDEzLjQyOSwgIm5hbWUiOiAiL2V0Yy9pc3N1ZS5uZXQiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuMjM1OTM5In0sICJmaWxlX3wtc3NoZF9iYW5uZXJfaXNzdWVffC0vZXRjL2lzc3VlX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInNzaGRfYmFubmVyX2lzc3VlIiwgIl9fcnVuX251bV9fIjogMjIsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zZWN1cml0eSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9pc3N1ZSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE2LjM3NiwgIm5hbWUiOiAiL2V0Yy9pc3N1ZSIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy4yMTkzNzMifSwgImZpbGVffC1zc2hkX2NvbmZpZ198LS9ldGMvc3NoL3NzaGRfY29uZmlnX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInNzaGRfY29uZmlnIiwgIl9fcnVuX251bV9fIjogMjEsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1zZWN1cml0eSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9zc2gvc3NoZF9jb25maWcgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxMDMuMDc3LCAibmFtZSI6ICIvZXRjL3NzaC9zc2hkX2NvbmZpZyIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy4xMTYwODYifSwgImZpbGVffC1zc25jLXRydXN0ZWQtY2FffC0vZXRjL3BraS9jYS10cnVzdC9zb3VyY2UvYW5jaG9ycy9zc25jLWNvcnAuY2EuY2hhaW4ucGVtX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInNzbmMtdHJ1c3RlZC1jYSIsICJfX3J1bl9udW1fXyI6IDE3LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtdHJ1c3RlZC1jYS5saW51eC10cnVzdGVkLWNhIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3BraS9jYS10cnVzdC9zb3VyY2UvYW5jaG9ycy9zc25jLWNvcnAuY2EuY2hhaW4ucGVtIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTUuNDY4LCAibmFtZSI6ICIvZXRjL3BraS9jYS10cnVzdC9zb3VyY2UvYW5jaG9ycy9zc25jLWNvcnAuY2EuY2hhaW4ucGVtIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjA4MjAzNSJ9LCAiZmlsZV98LXRhZ19nZW5lcmF0ZWRfZ3JhaW5zX2ZpbGVffC0vZXRjL3NhbHQvbWluaW9uLmQvOTgtdGFnLWdyYWlucy5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInRhZ19nZW5lcmF0ZWRfZ3JhaW5zX2ZpbGUiLCAiX19ydW5fbnVtX18iOiAwLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtbWluaW9uLmNsb3VkLW1ldGFkYXRhIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3NhbHQvbWluaW9uLmQvOTgtdGFnLWdyYWlucy5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogODUuMTQxLCAibmFtZSI6ICIvZXRjL3NhbHQvbWluaW9uLmQvOTgtdGFnLWdyYWlucy5jb25mIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjA3LjgyMTI3MiJ9LCAiZmlsZV98LXRlbGVncmFmX2NsZWFudXBffC0vZXRjL3RlbGVncmFmL3RlbGVncmFmLmQvZGVmYXVsdF9pbnB1dHMuY29uZl98LWFic2VudCI6IHsiX19pZF9fIjogInRlbGVncmFmX2NsZWFudXAiLCAiX19ydW5fbnVtX18iOiA0MiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3RlbGVncmFmL3RlbGVncmFmLmQvZGVmYXVsdF9pbnB1dHMuY29uZiBpcyBub3QgcHJlc2VudCIsICJkdXJhdGlvbiI6IDAuNTUsICJuYW1lIjogIi9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZC9kZWZhdWx0X2lucHV0cy5jb25mIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjU5ODIwMSJ9LCAiZmlsZV98LXRlbGVncmFmX2NsZWFudXBffC0vZXRjL3RlbGVncmFmL3RlbGVncmFmLmQvZGVmYXVsdF9vdXRwdXRzLmNvbmZffC1hYnNlbnQiOiB7Il9faWRfXyI6ICJ0ZWxlZ3JhZl9jbGVhbnVwIiwgIl9fcnVuX251bV9fIjogNDMsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy10ZWxlZ3JhZiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy90ZWxlZ3JhZi90ZWxlZ3JhZi5kL2RlZmF1bHRfb3V0cHV0cy5jb25mIGlzIG5vdCBwcmVzZW50IiwgImR1cmF0aW9uIjogMC40MjQsICJuYW1lIjogIi9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZC9kZWZhdWx0X291dHB1dHMuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy41OTkyMTMifSwgImZpbGVffC10ZWxlZ3JhZl9jb25mX3wtL2V0Yy90ZWxlZ3JhZi90ZWxlZ3JhZi5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInRlbGVncmFmX2NvbmYiLCAiX19ydW5fbnVtX18iOiAzOCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3RlbGVncmFmL3RlbGVncmFmLmNvbmYgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAyMy43OTksICJuYW1lIjogIi9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy41MjE3OTIifSwgImZpbGVffC10ZWxlZ3JhZl9jb25mX3wtL2V0Yy90ZWxlZ3JhZi90ZWxlZ3JhZi5kL2RlZmF1bHRfcHJvY2Vzc29yLmNvbmZffC1tYW5hZ2VkIjogeyJfX2lkX18iOiAidGVsZWdyYWZfY29uZiIsICJfX3J1bl9udW1fXyI6IDQxLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtdGVsZWdyYWYiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJGaWxlIC9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZC9kZWZhdWx0X3Byb2Nlc3Nvci5jb25mIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMTUuNjg1LCAibmFtZSI6ICIvZXRjL3RlbGVncmFmL3RlbGVncmFmLmQvZGVmYXVsdF9wcm9jZXNzb3IuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy41ODE1MjAifSwgImZpbGVffC10ZWxlZ3JhZl9jb25mX3wtL2V0Yy90ZWxlZ3JhZi90ZWxlZ3JhZi5kL2xpbnV4X2lucHV0cy5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInRlbGVncmFmX2NvbmYiLCAiX19ydW5fbnVtX18iOiAzOSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3RlbGVncmFmL3RlbGVncmFmLmQvbGludXhfaW5wdXRzLmNvbmYgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxNi42MzIsICJuYW1lIjogIi9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZC9saW51eF9pbnB1dHMuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy41NDU3MjMifSwgImZpbGVffC10ZWxlZ3JhZl9jb25mX3wtL2V0Yy90ZWxlZ3JhZi90ZWxlZ3JhZi5kL2xpbnV4X291dHB1dF9rYWZrYS5jb25mX3wtbWFuYWdlZCI6IHsiX19pZF9fIjogInRlbGVncmFmX2NvbmYiLCAiX19ydW5fbnVtX18iOiA0MCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiRmlsZSAvZXRjL3RlbGVncmFmL3RlbGVncmFmLmQvbGludXhfb3V0cHV0X2thZmthLmNvbmYgaXMgaW4gdGhlIGNvcnJlY3Qgc3RhdGUiLCAiZHVyYXRpb24iOiAxOC44OTYsICJuYW1lIjogIi9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZC9saW51eF9vdXRwdXRfa2Fma2EuY29uZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy41NjI0ODUifSwgImZpbGVffC10ZWxncmFmX2Rpcl98LS9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZF98LWRpcmVjdG9yeSI6IHsiX19pZF9fIjogInRlbGdyYWZfZGlyIiwgIl9fcnVuX251bV9fIjogMzcsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy10ZWxlZ3JhZiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBkaXJlY3RvcnkgL2V0Yy90ZWxlZ3JhZi90ZWxlZ3JhZi5kIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIiwgImR1cmF0aW9uIjogMS42MDUsICJuYW1lIjogIi9ldGMvdGVsZWdyYWYvdGVsZWdyYWYuZCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy41MjAwNzAifSwgImZpbGVffC12b2x1bWVfZ2VuZXJhdGVkX2dyYWluc19maWxlX3wtL2V0Yy9zYWx0L21pbmlvbi5kLzk3LXZvbHVtZS1ncmFpbnMuY29uZi5qMl98LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJ2b2x1bWVfZ2VuZXJhdGVkX2dyYWluc19maWxlIiwgIl9fcnVuX251bV9fIjogMSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLW1pbmlvbi5jbG91ZC1tZXRhZGF0YSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkZpbGUgL2V0Yy9zYWx0L21pbmlvbi5kLzk3LXZvbHVtZS1ncmFpbnMuY29uZi5qMiBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE0OTkuODMyLCAibmFtZSI6ICIvZXRjL3NhbHQvbWluaW9uLmQvOTctdm9sdW1lLWdyYWlucy5jb25mLmoyIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjA3LjkwNjU1NSJ9LCAiZmlsZV98LXphYmJpeF9kaXJffC0vZXRjL3phYmJpeC96YWJiaXhfYWdlbnRkLmRffC1kaXJlY3RvcnkiOiB7Il9faWRfXyI6ICJ6YWJiaXhfZGlyIiwgIl9fcnVuX251bV9fIjogNTAsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy16YWJiaXgiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJUaGUgZGlyZWN0b3J5IC9ldGMvemFiYml4L3phYmJpeF9hZ2VudGQuZCBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDAuOTMxLCAibmFtZSI6ICIvZXRjL3phYmJpeC96YWJiaXhfYWdlbnRkLmQiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuNjkzOTM4In0sICJncmFpbnNffC1zZXRfY29ydGV4X2dyYWluX3wtY29ydGV4X2luc3RhbGxlZF98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJzZXRfY29ydGV4X2dyYWluIiwgIl9fcnVuX251bV9fIjogMTIxLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtcGFsby1jb3J0ZXgubGludXgiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJHcmFpbiBpcyBhbHJlYWR5IHNldCIsICJkdXJhdGlvbiI6IDEuMDYxLCAibmFtZSI6ICJjb3J0ZXhfaW5zdGFsbGVkIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjIxLjkxMzcxOCJ9LCAiZ3JhaW5zX3wtc2V0X2V4Y2x1ZGVfeGFndF9ncmFpbl98LWV4Y2x1ZGVfeGFndF98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJzZXRfZXhjbHVkZV94YWd0X2dyYWluIiwgIl9fcnVuX251bV9fIjogMTIyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtaHgtcmVtb3ZhbC5saW51eCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkdyYWluIGlzIGFscmVhZHkgc2V0IiwgImR1cmF0aW9uIjogMC40NzMsICJuYW1lIjogImV4Y2x1ZGVfeGFndCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoyMS45MTQ4OTYifSwgImdyb3VwX3wtYW5zaWJsZV9ncm91cF98LWFuc2libGVffC1wcmVzZW50IjogeyJfX2lkX18iOiAiYW5zaWJsZV9ncm91cCIsICJfX3J1bl9udW1fXyI6IDc3LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtYW5zaWJsZSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkdyb3VwIGFuc2libGUgaXMgcHJlc2VudCBhbmQgdXAgdG8gZGF0ZSIsICJkdXJhdGlvbiI6IDAuNSwgIm5hbWUiOiAiYW5zaWJsZSIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45MTU1OTYifSwgImdyb3VwX3wtbWFuYWdlX3phYmJpeF9ncm91cF98LXphYmJpeF98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJtYW5hZ2VfemFiYml4X2dyb3VwIiwgIl9fcnVuX251bV9fIjogNDYsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy16YWJiaXgiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJHcm91cCB6YWJiaXggaXMgcHJlc2VudCBhbmQgdXAgdG8gZGF0ZSIsICJkdXJhdGlvbiI6IDEuMjU0LCAibmFtZSI6ICJ6YWJiaXgiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuNjY1NTQyIn0sICJncm91cF98LXRlbGVncmFmX2dyb3VwX3wtdGVsZWdyYWZffC1wcmVzZW50IjogeyJfX2lkX18iOiAidGVsZWdyYWZfZ3JvdXAiLCAiX19ydW5fbnVtX18iOiAzNCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiR3JvdXAgdGVsZWdyYWYgaXMgcHJlc2VudCBhbmQgdXAgdG8gZGF0ZSIsICJkdXJhdGlvbiI6IDEuMDEsICJuYW1lIjogInRlbGVncmFmIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjQ5MjY4MSJ9LCAibW9kdWxlX3wtY2hlY2tfa2Fma2FfYWNjZXNzX3wtY2hlY2tfa2Fma2FfYWNjZXNzX3wtcnVuIjogeyJfX2lkX18iOiAiY2hlY2tfa2Fma2FfYWNjZXNzIiwgIl9fcnVuX251bV9fIjogOTEsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1maWxlYmVhdCIsICJjaGFuZ2VzIjogeyJuZXR3b3JrLmNvbm5lY3QiOiB7ImNvbW1lbnQiOiAiU3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byBlc2thZmthLWtjLXQyLnNzbmMtY29ycC5jbG91ZCAoMTAuMjIyLjE1My4zMikgb24gdGNwIHBvcnQgOTA5NCIsICJyZXN1bHQiOiB0cnVlfX0sICJjb21tZW50IjogIm5ldHdvcmsuY29ubmVjdDogU3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZCB0byBlc2thZmthLWtjLXQyLnNzbmMtY29ycC5jbG91ZCAoMTAuMjIyLjE1My4zMikgb24gdGNwIHBvcnQgOTA5NCIsICJkdXJhdGlvbiI6IDIuMjk3LCAibmFtZSI6IFsibmV0d29yay5jb25uZWN0Il0sICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45OTM1NjMifSwgIm1vZHVsZV98LWZpbGViZWF0LWxvZy1lcnJvcl98LWZpbGViZWF0LWxvZy1lcnJvcl98LXJ1biI6IHsiX19ydW5fbnVtX18iOiAxMDYsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1maWxlYmVhdCIsICJfX3N0YXRlX3Jhbl9fIjogZmFsc2UsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlN0YXRlIHdhcyBub3QgcnVuIGJlY2F1c2Ugb25mYWlsIHJlcSBkaWQgbm90IGNoYW5nZSIsICJkdXJhdGlvbiI6IDAuMDAxLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTkuNzk0MzYzIn0sICJwaXBffC1pbnN0YWxsX2N1c3RvbV9zYWx0X21vZHVsZXNffC1zc25jX3NhbHRfbWluaW9uX2V4dG1vZHM9PTAuMC44X3wtaW5zdGFsbGVkIjogeyJfX2lkX18iOiAiaW5zdGFsbF9jdXN0b21fc2FsdF9tb2R1bGVzIiwgIl9fcnVuX251bV9fIjogNCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLW1pbmlvbiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZXJlIHdhcyBubyBlcnJvciBpbnN0YWxsaW5nIHBhY2thZ2UgJ3NzbmNfc2FsdF9taW5pb25fZXh0bW9kcz09MC4wLjgnIGFsdGhvdWdoIGl0IGRvZXMgbm90IHNob3cgd2hlbiBjYWxsaW5nICdwaXAuZnJlZXplJy4iLCAiZHVyYXRpb24iOiAxNTUyLjAxNywgIm5hbWUiOiAic3NuY19zYWx0X21pbmlvbl9leHRtb2RzPT0wLjAuOCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxMC40Nzc5MTEifSwgInBpcF98LWluc3RhbGxfcGlwX3BhY2thZ2VzX3wtY3Jvbml0ZXJffC1pbnN0YWxsZWQiOiB7Il9faWRfXyI6ICJpbnN0YWxsX3BpcF9wYWNrYWdlcyIsICJfX3J1bl9udW1fXyI6IDgsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1taW5pb24iLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJQeXRob24gcGFja2FnZSBjcm9uaXRlciB3YXMgYWxyZWFkeSBpbnN0YWxsZWRcbkFsbCBzcGVjaWZpZWQgcGFja2FnZXMgYXJlIGFscmVhZHkgaW5zdGFsbGVkIiwgImR1cmF0aW9uIjogMzE4Ljc2OSwgIm5hbWUiOiAiY3Jvbml0ZXIiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTYuMTM1MDcyIn0sICJwaXBffC1pbnN0YWxsX3BpcF9wYWNrYWdlc198LXB5aW5vdGlmeV98LWluc3RhbGxlZCI6IHsiX19pZF9fIjogImluc3RhbGxfcGlwX3BhY2thZ2VzIiwgIl9fcnVuX251bV9fIjogNywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLW1pbmlvbiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlB5dGhvbiBwYWNrYWdlIHB5aW5vdGlmeSB3YXMgYWxyZWFkeSBpbnN0YWxsZWRcbkFsbCBzcGVjaWZpZWQgcGFja2FnZXMgYXJlIGFscmVhZHkgaW5zdGFsbGVkIiwgImR1cmF0aW9uIjogMzE2LjU3MSwgIm5hbWUiOiAicHlpbm90aWZ5IiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE1LjgxODEyMCJ9LCAicGlwX3wtaW5zdGFsbF9waXBfcGFja2FnZXNffC1weXRob24tZGF0ZXV0aWxffC1pbnN0YWxsZWQiOiB7Il9faWRfXyI6ICJpbnN0YWxsX3BpcF9wYWNrYWdlcyIsICJfX3J1bl9udW1fXyI6IDYsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1taW5pb24iLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJQeXRob24gcGFja2FnZSBweXRob24tZGF0ZXV0aWwgd2FzIGFscmVhZHkgaW5zdGFsbGVkXG5BbGwgc3BlY2lmaWVkIHBhY2thZ2VzIGFyZSBhbHJlYWR5IGluc3RhbGxlZCIsICJkdXJhdGlvbiI6IDMxNS4xNzUsICJuYW1lIjogInB5dGhvbi1kYXRldXRpbCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNS41MDI1NDAifSwgInBrZ198LWluc3RhbGxfY29ydGV4X3wtdHJhcHNfcGF3bl98LWluc3RhbGxlZCI6IHsiX19pZF9fIjogImluc3RhbGxfY29ydGV4IiwgIl9fcnVuX251bV9fIjogMTE5LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtcGFsby1jb3J0ZXgubGludXgiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJ1bmxlc3MgY29uZGl0aW9uIGlzIHRydWUiLCAiZHVyYXRpb24iOiAyNC4wMSwgIm5hbWUiOiAidHJhcHNfcGF3biIsICJyZXN1bHQiOiB0cnVlLCAic2tpcF93YXRjaCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjIxLjgzNjk0OCJ9LCAicGtnX3wtaW5zdGFsbF9maWxlYmVhdF98LWZpbGViZWF0X3wtaW5zdGFsbGVkIjogeyJfX2lkX18iOiAiaW5zdGFsbF9maWxlYmVhdCIsICJfX3J1bl9udW1fXyI6IDk1LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtZmlsZWJlYXQiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJBbGwgc3BlY2lmaWVkIHBhY2thZ2VzIGFyZSBhbHJlYWR5IGluc3RhbGxlZCBhbmQgYXJlIGF0IHRoZSBkZXNpcmVkIHZlcnNpb24uXG5QYWNrYWdlIGZpbGViZWF0IGlzIGFscmVhZHkgc2V0IHRvIGJlIGhlbGQuIiwgImR1cmF0aW9uIjogMTQyMS4yOTcsICJuYW1lIjogImZpbGViZWF0IiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE4LjIwNjEyOCJ9LCAicGtnX3wtaW5zdGFsbF9naXRffC1naXRffC1pbnN0YWxsZWQiOiB7Il9faWRfXyI6ICJpbnN0YWxsX2dpdCIsICJfX3J1bl9udW1fXyI6IDg0LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtZ2l0IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiQWxsIHNwZWNpZmllZCBwYWNrYWdlcyBhcmUgYWxyZWFkeSBpbnN0YWxsZWQiLCAiZHVyYXRpb24iOiAxNy4xNjIsICJuYW1lIjogImdpdCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy45NTA0NjAifSwgInBrZ198LWluc3RhbGxfcGlwX3wtcHl0aG9uMy1waXBffC1sYXRlc3QiOiB7Il9faWRfXyI6ICJpbnN0YWxsX3BpcCIsICJfX3J1bl9udW1fXyI6IDUsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1taW5pb24iLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJQYWNrYWdlIHB5dGhvbjMtcGlwIGlzIGFscmVhZHkgdXAtdG8tZGF0ZSIsICJkdXJhdGlvbiI6IDM0NTUuNjg1LCAibmFtZSI6ICJweXRob24zLXBpcCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxMi4wNDY1MzcifSwgInBrZ198LWluc3RhbGxfdGVsZWdyYWZffC10ZWxlZ3JhZl98LWluc3RhbGxlZCI6IHsiX19pZF9fIjogImluc3RhbGxfdGVsZWdyYWYiLCAiX19ydW5fbnVtX18iOiAzNiwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAidW5sZXNzIGNvbmRpdGlvbiBpcyB0cnVlIiwgImR1cmF0aW9uIjogMjMuMTY3LCAibmFtZSI6ICJ0ZWxlZ3JhZiIsICJyZXN1bHQiOiB0cnVlLCAic2tpcF93YXRjaCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjQ5NjQ0NSJ9LCAicGtnX3wtaW5zdGFsbF92ZXJzaW9ubG9ja198LXB5dGhvbjMtZG5mLXBsdWdpbi12ZXJzaW9ubG9ja198LWluc3RhbGxlZCI6IHsiX19pZF9fIjogImluc3RhbGxfdmVyc2lvbmxvY2siLCAiX19ydW5fbnVtX18iOiA5NCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiQWxsIHNwZWNpZmllZCBwYWNrYWdlcyBhcmUgYWxyZWFkeSBpbnN0YWxsZWQiLCAiZHVyYXRpb24iOiAxNi42MzUsICJuYW1lIjogInB5dGhvbjMtZG5mLXBsdWdpbi12ZXJzaW9ubG9jayIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOC4xODkzMzUifSwgInBrZ198LW1hbmFnZV96YWJiaXg2LWFnZW50LWFuZC1zZW5kZXJffC1tYW5hZ2VfemFiYml4Ni1hZ2VudC1hbmQtc2VuZGVyX3wtaW5zdGFsbGVkIjogeyJfX2lkX18iOiAibWFuYWdlX3phYmJpeDYtYWdlbnQtYW5kLXNlbmRlciIsICJfX3J1bl9udW1fXyI6IDUyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtemFiYml4IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiQWxsIHNwZWNpZmllZCBwYWNrYWdlcyBhcmUgYWxyZWFkeSBpbnN0YWxsZWQgYW5kIGFyZSBhdCB0aGUgZGVzaXJlZCB2ZXJzaW9uIiwgImR1cmF0aW9uIjogNTEuNTgyLCAibmFtZSI6ICJtYW5hZ2VfemFiYml4Ni1hZ2VudC1hbmQtc2VuZGVyIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjcyMzAxMyJ9LCAicGtnX3wtdXBncmFkZV9zYWx0X21pbmlvbl98LXNhbHQtbWluaW9uX3wtaW5zdGFsbGVkIjogeyJfX2lkX18iOiAidXBncmFkZV9zYWx0X21pbmlvbiIsICJfX3J1bl9udW1fXyI6IDE1LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtbWluaW9uIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAidW5sZXNzIGNvbmRpdGlvbiBpcyB0cnVlIiwgImR1cmF0aW9uIjogMzc5LjUyOSwgIm5hbWUiOiAic2FsdC1taW5pb24iLCAicmVzdWx0IjogdHJ1ZSwgInNraXBfd2F0Y2giOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNi42ODU2NjYifSwgInBrZ3JlcG9ffC1lbGFzdGljX3l1bV9yZXBvX3wtYXJ0aWZhY3RvcnktZWxhc3RpYy04X3wtbWFuYWdlZCI6IHsiX19pZF9fIjogImVsYXN0aWNfeXVtX3JlcG8iLCAiX19ydW5fbnVtX18iOiA5MywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiUGFja2FnZSByZXBvICdhcnRpZmFjdG9yeS1lbGFzdGljLTgnIGFscmVhZHkgY29uZmlndXJlZCIsICJkdXJhdGlvbiI6IDIyLjc2MiwgIm5hbWUiOiAiYXJ0aWZhY3RvcnktZWxhc3RpYy04IiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE4LjE2NjQwNCJ9LCAicGtncmVwb198LW1hbmFnZV9hcnRpZmFjdG9yeS16YWJiaXg2X3wtYXJ0aWZhY3RvcnktemFiYml4X3wtbWFuYWdlZCI6IHsiX19pZF9fIjogIm1hbmFnZV9hcnRpZmFjdG9yeS16YWJiaXg2IiwgIl9fcnVuX251bV9fIjogNDgsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy16YWJiaXgiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJQYWNrYWdlIHJlcG8gJ2FydGlmYWN0b3J5LXphYmJpeCcgYWxyZWFkeSBjb25maWd1cmVkIiwgImR1cmF0aW9uIjogMjAuMjIyLCAibmFtZSI6ICJhcnRpZmFjdG9yeS16YWJiaXgiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuNjcxMjU0In0sICJwa2dyZXBvX3wtc2FsdHByb2plY3Q5X3JlcG9ffC1zYWx0c3RhY2stcmVwb198LW1hbmFnZWQiOiB7Il9faWRfXyI6ICJzYWx0cHJvamVjdDlfcmVwbyIsICJfX3J1bl9udW1fXyI6IDMsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc2FsdC1yZXBvIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiUGFja2FnZSByZXBvICdzYWx0c3RhY2stcmVwbycgYWxyZWFkeSBjb25maWd1cmVkIiwgImR1cmF0aW9uIjogOTE3LjY4OCwgIm5hbWUiOiAic2FsdHN0YWNrLXJlcG8iLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MDkuNDg5OTg1In0sICJzY2hlZHVsZV98LWFubm91bmNlX3ByZXNlbmNlX3wtQW5ub3VuY2UgTWluaW9uIFByZXNlbmNlIChTUy0yMTQzKV98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJhbm5vdW5jZV9wcmVzZW5jZSIsICJfX3J1bl9udW1fXyI6IDE2LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtbWluaW9uIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiSm9iIEFubm91bmNlIE1pbmlvbiBQcmVzZW5jZSAoU1MtMjE0MykgaW4gY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE2LjIyNiwgIm5hbWUiOiAiQW5ub3VuY2UgTWluaW9uIFByZXNlbmNlIChTUy0yMTQzKSIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy4wNjU2MzUifSwgInNjaGVkdWxlX3wtaW5mb3NlYy1uZXRzdGF0LXNjaGVkdWxlX3wtaW5mb3NlYy1uZXRzdGF0LXNjaGVkdWxlX3wtcHJlc2VudCI6IHsiX19pZF9fIjogImluZm9zZWMtbmV0c3RhdC1zY2hlZHVsZSIsICJfX3J1bl9udW1fXyI6IDExNCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWluZm9zZWMtbmV0c3RhdC5zY2hlZHVsZSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIkpvYiBpbmZvc2VjLW5ldHN0YXQtc2NoZWR1bGUgaW4gY29ycmVjdCBzdGF0ZSIsICJkdXJhdGlvbiI6IDE0LjQxNywgIm5hbWUiOiAiaW5mb3NlYy1uZXRzdGF0LXNjaGVkdWxlIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjIwLjAzMDI1MyJ9LCAic2VydmljZV98LWNsb3VkX3Nzc2Rfc2VydmljZV98LXNzc2RffC1ydW5uaW5nIjogeyJfX2lkX18iOiAiY2xvdWRfc3NzZF9zZXJ2aWNlIiwgIl9fcnVuX251bV9fIjogMTEyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3NzZCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBzZXJ2aWNlIHNzc2QgaXMgYWxyZWFkeSBydW5uaW5nIiwgImR1cmF0aW9uIjogMzEuMDQyLCAibmFtZSI6ICJzc3NkIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE5Ljk1MTE4NSJ9LCAic2VydmljZV98LWRpc2FibGVfZmlsZWJlYXRffC1maWxlYmVhdF98LWRlYWQiOiB7Il9fcnVuX251bV9fIjogMTAzLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtZmlsZWJlYXQiLCAiX19zdGF0ZV9yYW5fXyI6IGZhbHNlLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJTdGF0ZSB3YXMgbm90IHJ1biBiZWNhdXNlIG9uZmFpbCByZXEgZGlkIG5vdCBjaGFuZ2UiLCAiZHVyYXRpb24iOiAwLjAwNCwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE5Ljc0NDYzNCJ9LCAic2VydmljZV98LWVuYWJsZV90ZWxlZ3JhZl98LXRlbGVncmFmX3wtZW5hYmxlZCI6IHsiX19pZF9fIjogImVuYWJsZV90ZWxlZ3JhZiIsICJfX3J1bl9udW1fXyI6IDQ0LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtdGVsZWdyYWYiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJTZXJ2aWNlIHRlbGVncmFmIGlzIGFscmVhZHkgZW5hYmxlZCwgYW5kIGlzIGluIHRoZSBkZXNpcmVkIHN0YXRlIiwgImR1cmF0aW9uIjogMzAuMzgxLCAibmFtZSI6ICJ0ZWxlZ3JhZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy42MDAyMTgifSwgInNlcnZpY2VffC1xdWFseXMtY2xvdWQtYWdlbnQtc2VydmljZV98LXF1YWx5cy1jbG91ZC1hZ2VudF98LXJ1bm5pbmciOiB7Il9faWRfXyI6ICJxdWFseXMtY2xvdWQtYWdlbnQtc2VydmljZSIsICJfX3J1bl9udW1fXyI6IDExMywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXF1YWx5cy1hZ2VudC5saW51eCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBzZXJ2aWNlIHF1YWx5cy1jbG91ZC1hZ2VudCBpcyBhbHJlYWR5IHJ1bm5pbmciLCAiZHVyYXRpb24iOiA0Ny4yNDMsICJuYW1lIjogInF1YWx5cy1jbG91ZC1hZ2VudCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS45ODI1OTgifSwgInNlcnZpY2VffC1yZXN0YXJ0X2ZpbGViZWF0X3wtZmlsZWJlYXRffC1ydW5uaW5nIjogeyJfX2lkX18iOiAicmVzdGFydF9maWxlYmVhdCIsICJfX3J1bl9udW1fXyI6IDEwNCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLWZpbGViZWF0IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVGhlIHNlcnZpY2UgZmlsZWJlYXQgaXMgYWxyZWFkeSBydW5uaW5nIiwgImR1cmF0aW9uIjogNDYuOTI4LCAibmFtZSI6ICJmaWxlYmVhdCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxOS43NDU5NTUifSwgInNlcnZpY2VffC1yZXN0YXJ0X2xvZ3JvdGF0ZV98LWxvZ3JvdGF0ZS50aW1lcl98LXJ1bm5pbmciOiB7Il9faWRfXyI6ICJyZXN0YXJ0X2xvZ3JvdGF0ZSIsICJfX3J1bl9udW1fXyI6IDMzLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3lzbG9nIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVGhlIHNlcnZpY2UgbG9ncm90YXRlLnRpbWVyIGlzIGFscmVhZHkgcnVubmluZyIsICJkdXJhdGlvbiI6IDQ2LjkyNCwgIm5hbWUiOiAibG9ncm90YXRlLnRpbWVyIiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3LjQ0NTM1OSJ9LCAic2VydmljZV98LXJlc3RhcnRfcnlzbG9nX3wtcnN5c2xvZ198LXJ1bm5pbmciOiB7Il9faWRfXyI6ICJyZXN0YXJ0X3J5c2xvZyIsICJfX3J1bl9udW1fXyI6IDMyLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3lzbG9nIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVGhlIHNlcnZpY2UgcnN5c2xvZyBpcyBhbHJlYWR5IHJ1bm5pbmciLCAiZHVyYXRpb24iOiA1Mi4xMjIsICJuYW1lIjogInJzeXNsb2ciLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuMzkxMTc5In0sICJzZXJ2aWNlX3wtcmVzdGFydF9zYWx0X21pbmlvbl9wZXJfbWluaW9uX2NoYW5nZV98LXNhbHQtbWluaW9uX3wtcnVubmluZyI6IHsiX19pZF9fIjogInJlc3RhcnRfc2FsdF9taW5pb25fcGVyX21pbmlvbl9jaGFuZ2UiLCAiX19ydW5fbnVtX18iOiAxNCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLW1pbmlvbiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBzZXJ2aWNlIHNhbHQtbWluaW9uIGlzIGFscmVhZHkgcnVubmluZyIsICJkdXJhdGlvbiI6IDQ2LjUwNCwgIm5hbWUiOiAic2FsdC1taW5pb24iLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTYuNjM3MTE3In0sICJzZXJ2aWNlX3wtcmVzdGFydF90ZWxlZ3JhZl98LXRlbGVncmFmX3wtcnVubmluZyI6IHsiX19pZF9fIjogInJlc3RhcnRfdGVsZWdyYWYiLCAiX19ydW5fbnVtX18iOiA0NSwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXRlbGVncmFmIiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVGhlIHNlcnZpY2UgdGVsZWdyYWYgaXMgYWxyZWFkeSBydW5uaW5nIiwgImR1cmF0aW9uIjogMzMuNDE2LCAibmFtZSI6ICJ0ZWxlZ3JhZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy42MzE2ODEifSwgInNlcnZpY2VffC1yZXN0YXJ0X3phYmJpeC1hZ2VudF9vbl9jb25maWdfY2hhbmdlX3wtemFiYml4LWFnZW50X3wtcnVubmluZyI6IHsiX19pZF9fIjogInJlc3RhcnRfemFiYml4LWFnZW50X29uX2NvbmZpZ19jaGFuZ2UiLCAiX19ydW5fbnVtX18iOiA1MywgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXphYmJpeCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBzZXJ2aWNlIHphYmJpeC1hZ2VudCBpcyBhbHJlYWR5IHJ1bm5pbmciLCAiZHVyYXRpb24iOiA0NC40MTgsICJuYW1lIjogInphYmJpeC1hZ2VudCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy43NzU0MjAifSwgInNlcnZpY2VffC1zYWZlZ3VhcmRfc3NzZF9zZXJ2aWNlX3wtc3NzZF98LXJ1bm5pbmciOiB7Il9faWRfXyI6ICJzYWZlZ3VhcmRfc3NzZF9zZXJ2aWNlIiwgIl9fcnVuX251bV9fIjogMTExLCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtc3NzZCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBzZXJ2aWNlIHNzc2QgaXMgYWxyZWFkeSBydW5uaW5nIiwgImR1cmF0aW9uIjogNDUuMjIsICJuYW1lIjogInNzc2QiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTkuOTA1NTkxIn0sICJzZXJ2aWNlX3wtc3NoZF9zZXJ2aWNlX3wtc3NoZF98LXJ1bm5pbmciOiB7Il9faWRfXyI6ICJzc2hkX3NlcnZpY2UiLCAiX19ydW5fbnVtX18iOiAyNCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXNlY3VyaXR5IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVGhlIHNlcnZpY2Ugc3NoZCBpcyBhbHJlYWR5IHJ1bm5pbmciLCAiZHVyYXRpb24iOiA1My4yNTQsICJuYW1lIjogInNzaGQiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuMjQ5NTE2In0sICJzZXJ2aWNlX3wtc3RhcnRfY29ydGV4X3NlcnZpY2VffC10cmFwc19wbWRffC1ydW5uaW5nIjogeyJfX2lkX18iOiAic3RhcnRfY29ydGV4X3NlcnZpY2UiLCAiX19ydW5fbnVtX18iOiAxMjAsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy1wYWxvLWNvcnRleC5saW51eCIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlRoZSBzZXJ2aWNlIHRyYXBzX3BtZCBpcyBhbHJlYWR5IHJ1bm5pbmciLCAiZHVyYXRpb24iOiA0OS4yNDIsICJuYW1lIjogInRyYXBzX3BtZCIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoyMS44NjI3ODYifSwgInVzZXJffC1hbnNpYmxlX3VzZXJffC1hbnNpYmxlX3wtcHJlc2VudCI6IHsiX19pZF9fIjogImFuc2libGVfdXNlciIsICJfX3J1bl9udW1fXyI6IDc4LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtYW5zaWJsZSIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlVzZXIgYW5zaWJsZSBpcyBwcmVzZW50IGFuZCB1cCB0byBkYXRlIiwgImR1cmF0aW9uIjogMi42NTYsICJuYW1lIjogImFuc2libGUiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuOTE2MTkwIn0sICJ1c2VyX3wtbWFuYWdlX3phYmJpeF91c2VyX3wtemFiYml4X3wtcHJlc2VudCI6IHsiX19pZF9fIjogIm1hbmFnZV96YWJiaXhfdXNlciIsICJfX3J1bl9udW1fXyI6IDQ3LCAiX19zbHNfXyI6ICJzc25jLWJhc2VsaW5lLnNzbmMtemFiYml4IiwgImNoYW5nZXMiOiB7fSwgImNvbW1lbnQiOiAiVXNlciB6YWJiaXggaXMgcHJlc2VudCBhbmQgdXAgdG8gZGF0ZSIsICJkdXJhdGlvbiI6IDMuODI5LCAibmFtZSI6ICJ6YWJiaXgiLCAicmVzdWx0IjogdHJ1ZSwgInN0YXJ0X3RpbWUiOiAiMTk6MjY6MTcuNjY3MjY1In0sICJ1c2VyX3wtc2V0X3Bhc3N3b3JkX3wtcm9vdF98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJzZXRfcGFzc3dvcmQiLCAiX19ydW5fbnVtX18iOiA4OCwgIl9fc2xzX18iOiAic3NuYy1iYXNlbGluZS5zc25jLXJvb3QiLCAiY2hhbmdlcyI6IHt9LCAiY29tbWVudCI6ICJVc2VyIHJvb3QgaXMgcHJlc2VudCBhbmQgdXAgdG8gZGF0ZSIsICJkdXJhdGlvbiI6IDEuNTY0LCAibmFtZSI6ICJyb290IiwgInJlc3VsdCI6IHRydWUsICJzdGFydF90aW1lIjogIjE5OjI2OjE3Ljk4OTI0NiJ9LCAidXNlcl98LXRlbGVncmFmX3VzZXJffC10ZWxlZ3JhZl98LXByZXNlbnQiOiB7Il9faWRfXyI6ICJ0ZWxlZ3JhZl91c2VyIiwgIl9fcnVuX251bV9fIjogMzUsICJfX3Nsc19fIjogInNzbmMtYmFzZWxpbmUuc3NuYy10ZWxlZ3JhZiIsICJjaGFuZ2VzIjoge30sICJjb21tZW50IjogIlVzZXIgdGVsZWdyYWYgaXMgcHJlc2VudCBhbmQgdXAgdG8gZGF0ZSIsICJkdXJhdGlvbiI6IDIuNDcyLCAibmFtZSI6ICJ0ZWxlZ3JhZiIsICJyZXN1bHQiOiB0cnVlLCAic3RhcnRfdGltZSI6ICIxOToyNjoxNy40OTM4MjAifX0sICJzdWNjZXNzIjogdHJ1ZX0="
        }
    ],
    "jid": "20240724192622670225",
    "return": null,
    "success": true,
    "user": "Reactor"
}

Salt Compatibility with Foreman 1.20

Hi guys,

I'm planning to upgrade my Foreman 1.18 instance to 1.20 but i wanted to make sure that Salt is still supported with the current version. As there were no indications in the 1.20 release notes I'd assume it will still work. Nevertheless, I think it'd be great to update the Salt plugin doc as they stop listing support at Foreman 1.13.X with smart proxy 2.X.

Maybe a table like the foreman_salt repo would be a good fit to indicate anything above 1.13 is fine:
image
source https://github.com/theforeman/foreman_salt

salt runner foreman_reports_upload.py script issues with load balancers

As we continue to build out our large foreman/salt infrastructure, we use multiple load balancers for the foremanUI, API, etc. It is common use with load balancers to set them up as ssl managed, where as you forward port 443 from the load balancer, to 443 on the foreman server. But then you modify the apache configuration to be https, without the SSL engine itself. This allows the load balancer to handle http traffic via SSL, then forward it to the Foreman servers, where the SSL ends.

The current script will not work this way, as it does a check for https. If https is enabled in the config file this if will run:

    if config[":proto"] == "https":

Which will look for ssl certs, and fail. The foreman-node script, for example, doesnt care if you set it to https or http. It will only use the ssl certs if they are NOT empty.

This isnt a bug so to say, but it will prevent people from using the script if they are using managed load balancers.

I edited the script to ignore the checking of https, and instead check to see if ssl_cert and ssl_key are empty or not. If they are empty, it assumes ssl is not enable, but still uses https.

New Reactor Upload fails for some host

A Host of mine outputs a lot of data and the reactor uploaded fails on this

2019-10-30 23:34:55,563 [salt.utils.reactor:106 ][ERROR   ][30823] Failed to render "/srv/salt/foreman_report_upload.sls":
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/salt/renderers/yaml.py", line 65, in render
    data = yamlloader.load(yaml_data, Loader=get_yaml_loader(argline))
  File "/usr/lib/python3/dist-packages/salt/utils/yamlloader.py", line 170, in load
    return yaml.load(stream, Loader=Loader)
  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 72, in load
    return loader.get_single_data()
  File "/usr/lib/python3/dist-packages/yaml/constructor.py", line 35, in get_single_data
    node = self.get_single_node()
  File "ext/_yaml.pyx", line 707, in _yaml.CParser.get_single_node (ext/_yaml.c:9612)
  File "ext/_yaml.pyx", line 725, in _yaml.CParser._compose_document (ext/_yaml.c:9922)
  File "ext/_yaml.pyx", line 776, in _yaml.CParser._compose_node (ext/_yaml.c:10814)
  File "ext/_yaml.pyx", line 890, in _yaml.CParser._compose_mapping_node (ext/_yaml.c:12609)
  File "ext/_yaml.pyx", line 776, in _yaml.CParser._compose_node (ext/_yaml.c:10814)
  File "ext/_yaml.pyx", line 890, in _yaml.CParser._compose_mapping_node (ext/_yaml.c:12609)
  File "ext/_yaml.pyx", line 774, in _yaml.CParser._compose_node (ext/_yaml.c:10784)
  File "ext/_yaml.pyx", line 851, in _yaml.CParser._compose_sequence_node (ext/_yaml.c:12011)
  File "ext/_yaml.pyx", line 776, in _yaml.CParser._compose_node (ext/_yaml.c:10814)
  File "ext/_yaml.pyx", line 890, in _yaml.CParser._compose_mapping_node (ext/_yaml.c:12609)
  File "ext/_yaml.pyx", line 774, in _yaml.CParser._compose_node (ext/_yaml.c:10784)
  File "ext/_yaml.pyx", line 851, in _yaml.CParser._compose_sequence_node (ext/_yaml.c:12011)
  File "ext/_yaml.pyx", line 776, in _yaml.CParser._compose_node (ext/_yaml.c:10814)
  File "ext/_yaml.pyx", line 892, in _yaml.CParser._compose_mapping_node (ext/_yaml.c:12639)
  File "ext/_yaml.pyx", line 905, in _yaml.CParser._parse_next_event (ext/_yaml.c:12818)
yaml.parser.ParserError: while parsing a block mapping
  in "<unicode string>", line 5, column 10
did not find expected key
  in "<unicode string>", line 5, column 2131

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/salt/utils/reactor.py", line 97, in render_reaction
    data=data)
  File "/usr/lib/python3/dist-packages/salt/state.py", line 385, in render_template
    **kwargs)
  File "/usr/lib/python3/dist-packages/salt/template.py", line 101, in compile_template
    ret = render(input_data, saltenv, sls, **render_kwargs)
  File "/usr/lib/python3/dist-packages/salt/renderers/yaml.py", line 71, in render
    raise SaltRenderError(exc)
salt.exceptions.SaltRenderError: while parsing a block mapping
  in "<unicode string>", line 5, column 10
did not find expected key
  in "<unicode string>", line 5, column 2131

No reports uploaded to foreman via https

Following Foreman (v. 1.12) & foreman_salt (v. 5.0) integration manual I've set up working evironment that properly runs salt from foreman.
Unfortunately I wasn't able to gather any reports.

After some investigation I found (in /var/log/foreman-proxy/salt-cron.log):

SLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
Traceback (most recent call last):
File "/usr/sbin/upload-salt-reports", line 137, in
upload(jobs_to_upload())
File "/usr/sbin/upload-salt-reports", line 112, in upload
json.dumps(job), headers)
File "/usr/lib/python2.7/httplib.py", line 1057, in request
self._send_request(method, url, body, headers)
File "/usr/lib/python2.7/httplib.py", line 1097, in _send_request
self.endheaders(body)
File "/usr/lib/python2.7/httplib.py", line 1053, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 897, in _send_output
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 859, in send
self.connect()
File "/usr/lib/python2.7/httplib.py", line 1278, in connect
server_hostname=server_hostname)
File "/usr/lib/python2.7/ssl.py", line 353, in wrap_socket
_context=self)
File "/usr/lib/python2.7/ssl.py", line 601, in init
self.do_handshake()
File "/usr/lib/python2.7/ssl.py", line 830, in do_handshake
self._sslobj.do_handshake()

tcpdump showed that the client script (upload-salt-reports) was responding with: alert unknown ca

Changing the following (connection initialization):
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) context.load_cert_chain(certfile=config[':ssl_cert'], keyfile=config[':ssl_key']) connection = httplib.HTTPSConnection(config[':host'], port=config[':port'], context=context)
yields proper report upload.
Please advice if this is some kind of bug or have I misconfigured something ?

My /etc/salt/foreman.yaml


:proto: https
:host: fancy.host
:port: 443
:ssl_ca: "/etc/foreman/ssl/certs/ca.pem"
:ssl_cert: "/etc/foreman/ssl/certs/fancy.host.pem"
:ssl_key: "/etc/foreman/ssl/private/fancy.host.key"
:timeout: 60
๐Ÿง‚ /usr/bin/salt
:upload_grains: true

Support for state.apply command

Hi is it possible for upload-salt-reports to support the state.apply command also instead of only working for only state.highstate?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.