import xml.etree.ElementTree as ET
from xml.dom import minidom
import csv
import io
def prettify_xml(elem):
"""Return a pretty-printed XML string for the Element."""
rough_string = ET.tostring(elem, 'utf-8')
parsed = minidom.parseString(rough_string)
return parsed.toprettyxml(indent=" ")
def create_insert_element(record):
insert_elem = ET.Element("insert", tableName="EXTERNAL_API_DEFINITION", schemaName="${current_schema}")
# Define each column with values from the record
columns = [
("BILLER_CODE", record['biller_code']),
("BILLER_SECRETS", record['biller_secrets']),
("INFO_CHECK_REQUEST_DEFINITION", record['info_check_request_definition']),
("PAYMENT_REQUEST_DEFINITION", record['payment_request_definition']),
("IS_ACTIVE", "${default_boolean_true}"),
("INFO_CHECK_ENDPOINT", record['info_check_api']),
("PROCESS_PAYMENT_ENDPOINT", record['process_payment_endpoint']),
("PAYMENT_STATUS_ENDPOINT", record['payment_status_definition']),
("REQUEST_HEADERS_DEFINITION", record['request_headers_definition'])
]
# Add each column to the insert element
for name, value in columns:
ET.SubElement(insert_elem, "column", name=name, value=value)
return insert_elem
def create_xml_migration_script(records):
root = ET.Element("changeSet", id="insert_external_api_definitions", author="user")
# Add each record's insert element
for record in records:
insert_elem = create_insert_element(record)
root.append(insert_elem)
# Pretty print the XML
return prettify_xml(root)
def parse_input(input_text):
# Parse the CSV input
reader = csv.reader(io.StringIO(input_text))
records = []
for row in reader:
if len(row) < 8:
continue # Skip rows that don't have all required fields
# Map the row to dictionary keys
record = {
"biller_code": row[0].strip(),
"biller_secrets": row[1].strip(),
"info_check_request_definition": row[2].strip(),
"payment_request_definition": row[3].strip(),
"info_check_api": row[4].strip(),
"process_payment_endpoint": row[5].strip(),
"request_headers_definition": row[6].strip(),
"payment_status_definition": row[7].strip()
}
records.append(record)
return records
# Sample input
input_text = '''
SSL_DPDC_POSTPAID,"{
""common"": {
""STK-CODE"": ""ABDIRECT"",
""AUTH-KEY"": ""EWEECFBy4WywpHCXWuYEK.WlGBtbUuyi"",
""utility_auth_key"": ""16922468323555"",
""utility_secret_key"": ""c5iMNoUatdYlSqEW"",
""mode"": ""1"",
""pay_channel"": ""4""
}
}","{
""transaction_id"": ""transaction_id"",
""account_no"": ""account_no"",
""bill_month"": ""bill_months"",
""bill_year"": ""bill_years"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""bnk_trx_id"": ""bnk_trx_id"",
""pay_channel"": ""pay_channel"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,/api/v1/bill-info,/api/v1/bill-payment,/api/v1/bill-status,"{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}","{
""bnk_trx_id"": ""bnk_trx_id"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}"
SSL_WILLS_LITTLE_FLOWER,"{
""STK-CODE"": ""ABDIRECT"",
""AUTH-KEY"": ""EWEECFBy4WywpHCXWuYEK.WlGBtbUuyi"",
""utility_auth_key"": ""16888826005300"",
""utility_secret_key"": ""YlnQ98fCIgEkg2vU""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key"",
""reference_no"": ""reference_no""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,/api/v1/bill-info,/api/v1/bill-payment,/api/v1/bill-status,"{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}"
SSL_NESCO_POSTPAID,"{
""STK-CODE"": ""ABDIRECT"",
""AUTH-KEY"": ""EWEECFBy4WywpHCXWuYEK.WlGBtbUuyi"",
""utility_auth_key"": ""16976995921527"",
""utility_secret_key"": ""Lt/GrXALyd1pj8AY"",
""mode"": ""1""
}","{
""transaction_id"": ""transaction_id"",
""account_no"": ""account_no"",
""bill_month"": ""bill_months"",
""bill_year"": ""bill_years"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""is_stamp_collected"": ""is_stamp_collected"",
""core_transaction_id"": ""core_transaction_id"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,/api/v1/bill-info,/api/v1/bill-payment,/api/v1/bill-status,"{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}"
SSL_WASA_GENERAL_BILL,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""WA15174603642090"",
""utility_secret_key"": ""GWFYAiy8g5T92UIg"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""bill_type"": ""GENERAL-BILL""
},
""infoCheck"": {},
""payBill"": {
""payment_type"": ""3"",
""channel_id"": ""4""
}
}","{
""transaction_id"": ""transaction_id"",
""billno"": ""billno"",
""bill_type"": ""bill_type"",
""account_no"": ""account_no"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""mobile_no"": ""mobile_no"",
""branch_code"": ""branch_code"",
""payment_type"": ""payment_type"",
""channel_id"": ""channel_id"",
""remarks"": ""remarks"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,/api/v1/bill-info,/api/v1/bill-payment,/api/v1/bill-status,"{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}"
SSL_NESCO_PREPAID,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""NE16151186585379"",
""utility_secret_key"": ""PsilgetRO/wYIkPg"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""bill_type"": ""PREPAID""
},
""infoCheck"": {},
""payBill"": {}
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key"",
""bill_type"": ""bill_type""
}","{
""utility_bill_type"": ""utility_bill_type"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,/api/v1/bill-info,/api/v1/bill-payment,/api/v1/bill-status,"{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}"
SSL_DPDC_NEW_POSTPAID,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""DP16030264222969"",
""utility_secret_key"": ""wQXJaE6c5ydoxG3H"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla""
},
""infoCheck"": {
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""utility_auth_key"": ""DP16030264222969"",
""utility_secret_key"": ""wQXJaE6c5ydoxG3H""
},
""payBill"": {
""mode"": ""1""
}
}","{
""transaction_id"": ""transaction_id"",
""account_no"": ""account_no"",
""pay_channel"": ""pay_channel"",
""bill_months"": ""bill_months"",
""bill_years"": ""bill_years"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""pay_channel"": ""pay_channel"",
""bnk_trx_id"": ""bnk_trx_id"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
SSL_DESCO_POSTPAID,"{
""STK-CODE"": ""ABDIRECT"",
""utility_auth_key"": ""16643633415347"",
""utility_secret_key"": ""FrFHsRG3jws7kmMV"",
""AUTH-KEY"": ""EWEECFBy4WywpHCXWuYEK.WlGBtbUuyi""
}","{
""transaction_id"": ""transaction_id"",
""billno"": ""bllNo"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,/api/v1/bill-info,/api/v1/bill-payment,/api/v1/bill-status,"{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}","{
""bnk_trx_id"": ""bnk_trx_id"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}"
SSL_BGDCL_DEMAND_NOTE,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""BG15650660381148"",
""utility_secret_key"": ""mfOxzaTBWl0pM8wC"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""bill_type"": ""DEMAND-NOTE""
},
""infoCheck"": {},
""payBill"": {}
}","{
""transaction_id"": ""transaction_id"",
""custCode"": ""custCode"",
""mobileNo"": ""mobileNo"",
""demandNoteCode"": ""demandNoteCode"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""transaction_id"": ""transaction_id"",
""custCode"": ""custCode"",
""mobileNo"": ""mobileNo"",
""bankName"": ""bankName"",
""branchName"": ""branchName"",
""totalAmount"": ""totalAmount"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
BGDCL_METERED,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""BG15650909253030"",
""utility_secret_key"": ""xdtDeg65HgUjA6SZ"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla""
},
""infoCheck"": {
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""utility_auth_key"": ""BG15650909253030"",
""utility_secret_key"": ""xdtDeg65HgUjA6SZ""
},
""payBill"": {
""mode"": ""1""
}
}","{
""code"": ""custCode"",
""mobileNo"": ""mobileNo"",
""transaction_id"": ""transaction_id"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""mobileNo"": ""mobileNo"",
""bankName"": ""bankName"",
""branchName"": ""branchName"",
""custCode"": ""custCode"",
""billAmount"": ""billAmount"",
""transaction_id"": ""transaction_id"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
BGDCL_NON_METERED,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""BG15650661022290"",
""utility_secret_key"": ""DVBODGYa3fJuKZm5"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla""
},
""infoCheck"": {
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""utility_auth_key"": ""BG15650661022290"",
""utility_secret_key"": ""DVBODGYa3fJuKZm5""
},
""payBill"": {
""mode"": ""1""
}
}","{
""code"": ""code"",
""mobileNo"": ""mobileNo"",
""transaction_id"": ""transaction_id"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""mobileNo"": ""mobileNo"",
""bankName"": ""bankName"",
""branchName"": ""branchName"",
""custCode"": ""custCode"",
""billAmount"": ""billAmount"",
""transaction_id"": ""transaction_id"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}
",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
SSL_TITAS_DEMAND_NOTE,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""TI15174603537876"",
""utility_secret_key"": ""IV5RwHzGJDBpkhk1"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla""
},
""infoCheck"": {
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""utility_auth_key"": ""TI15174603537876"",
""utility_secret_key"": ""IV5RwHzGJDBpkhk1""
},
""payBill"": {
""mode"": ""1""
}
}","{
""invoiceNo"": ""invoiceNo"",
""transaction_id"": ""transaction_id"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""paymentId"": ""paymentId"",
""bill_type"": ""bill_type"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
SSL_TITAS_METERED,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""TI15174603077847"",
""utility_secret_key"": ""Nn2nCVRuTpY6xso5"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla""
},
""infoCheck"": {
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""utility_auth_key"": ""TI15174603077847"",
""utility_secret_key"": ""Nn2nCVRuTpY6xso5""
},
""payBill"": {
""mode"": ""1""
}
}","{
""invoiceNo"": ""invoiceNo"",
""customerCode"": ""customerCode"",
""sourceTaxAmount"": ""sourceTaxAmount"",
""branchRoutingNo"": ""branchRoutingNo"",
""operator"": ""operator"",
""transaction_id"": ""transaction_id"",
""chalanNo"": ""chalanNo"",
""chalanDate"": ""chalanDate"",
""chalanBank"": ""chalanBank"",
""chalanBranch"": ""chalanBranch"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""paymentId"": ""paymentId"",
""bill_type"": ""bill_type"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
SSL_TITAS_NON_METERED,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""TI15174603401736"",
""utility_secret_key"": ""PCQue5wZiBhflvYk"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla""
},
""infoCheck"": {
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""utility_auth_key"": ""TI15174603401736"",
""utility_secret_key"": ""PCQue5wZiBhflvYk""
},
""payBill"": {
""mode"": ""1""
}
}","{
""customer"": ""customer"",
""amount"": ""amount"",
""surcharge"": ""surcharge"",
""particulars"": ""particulars"",
""transaction_id"": ""transaction_id"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""transaction_id"": ""transaction_id"",
""paymentId"": ""paymentId"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
SSL_BREB_POSTPAID,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""BR16713629651374"",
""utility_secret_key"": ""BR16713629651374"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""pay_channel"": ""4""
},
""infoCheck"": {
},
""payBill"": {
""mode"": ""1""
}
}","{
""transaction_id"": ""transaction_id"",
""account_no"": ""account_no"",
""type_of_bill"": ""type_of_bill"",
""bill_type"": ""bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key"",
""branchRoutingNo"": ""branchRoutingNo""
}
","{
""utility_bill_type"": ""utility_bill_type"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
SSL_BTCL_NEW_REGULAR_BILL,"{
""common"": {
""STK-CODE"": ""DEMO"",
""utility_auth_key"": ""BT16001654136458"",
""utility_secret_key"": ""11eoYOi3nemSPglu"",
""AUTH-KEY"": ""BD6pFSIfSOLEIgKyru67MeBhICkRiFla"",
""pay_channel"": ""4""
},
""infoCheck"": {
},
""payBill"": {
""mode"": ""1""
}
}","{
""bill_no"": ""bill_no"",
""phone_number"": ""phone_number"",
""exchange_code"": ""exchange_code"",
""branch_code"": ""branch_code"",
""bill_type"": ""bill_type"",
""transaction_id"": ""transaction_id"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}","{
""transaction_id"": ""transaction_id"",
""utility_bill_type"": ""utility_bill_type"",
""utility_auth_key"": ""utility_auth_key"",
""utility_secret_key"": ""utility_secret_key""
}",true,"","","","{
""AUTH-KEY"": ""AUTH-KEY"",
""STK-CODE"": ""STK-CODE""
}",
'''
# Parse the input and create records
records = parse_input(input_text)
# Generate XML migration script
xml_script = create_xml_migration_script(records)
# Output the generated XML script
print(xml_script)
aW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFVApmcm9tIHhtbC5kb20gaW1wb3J0IG1pbmlkb20KaW1wb3J0IGNzdgppbXBvcnQgaW8KCmRlZiBwcmV0dGlmeV94bWwoZWxlbSk6CiAgICAiIiJSZXR1cm4gYSBwcmV0dHktcHJpbnRlZCBYTUwgc3RyaW5nIGZvciB0aGUgRWxlbWVudC4iIiIKICAgIHJvdWdoX3N0cmluZyA9IEVULnRvc3RyaW5nKGVsZW0sICd1dGYtOCcpCiAgICBwYXJzZWQgPSBtaW5pZG9tLnBhcnNlU3RyaW5nKHJvdWdoX3N0cmluZykKICAgIHJldHVybiBwYXJzZWQudG9wcmV0dHl4bWwoaW5kZW50PSIgICAgIikKCmRlZiBjcmVhdGVfaW5zZXJ0X2VsZW1lbnQocmVjb3JkKToKICAgIGluc2VydF9lbGVtID0gRVQuRWxlbWVudCgiaW5zZXJ0IiwgdGFibGVOYW1lPSJFWFRFUk5BTF9BUElfREVGSU5JVElPTiIsIHNjaGVtYU5hbWU9IiR7Y3VycmVudF9zY2hlbWF9IikKICAgIAogICAgIyBEZWZpbmUgZWFjaCBjb2x1bW4gd2l0aCB2YWx1ZXMgZnJvbSB0aGUgcmVjb3JkCiAgICBjb2x1bW5zID0gWwogICAgICAgICgiQklMTEVSX0NPREUiLCByZWNvcmRbJ2JpbGxlcl9jb2RlJ10pLAogICAgICAgICgiQklMTEVSX1NFQ1JFVFMiLCByZWNvcmRbJ2JpbGxlcl9zZWNyZXRzJ10pLAogICAgICAgICgiSU5GT19DSEVDS19SRVFVRVNUX0RFRklOSVRJT04iLCByZWNvcmRbJ2luZm9fY2hlY2tfcmVxdWVzdF9kZWZpbml0aW9uJ10pLAogICAgICAgICgiUEFZTUVOVF9SRVFVRVNUX0RFRklOSVRJT04iLCByZWNvcmRbJ3BheW1lbnRfcmVxdWVzdF9kZWZpbml0aW9uJ10pLAogICAgICAgICgiSVNfQUNUSVZFIiwgIiR7ZGVmYXVsdF9ib29sZWFuX3RydWV9IiksCiAgICAgICAgKCJJTkZPX0NIRUNLX0VORFBPSU5UIiwgcmVjb3JkWydpbmZvX2NoZWNrX2FwaSddKSwKICAgICAgICAoIlBST0NFU1NfUEFZTUVOVF9FTkRQT0lOVCIsIHJlY29yZFsncHJvY2Vzc19wYXltZW50X2VuZHBvaW50J10pLAogICAgICAgICgiUEFZTUVOVF9TVEFUVVNfRU5EUE9JTlQiLCByZWNvcmRbJ3BheW1lbnRfc3RhdHVzX2RlZmluaXRpb24nXSksCiAgICAgICAgKCJSRVFVRVNUX0hFQURFUlNfREVGSU5JVElPTiIsIHJlY29yZFsncmVxdWVzdF9oZWFkZXJzX2RlZmluaXRpb24nXSkKICAgIF0KICAgIAogICAgIyBBZGQgZWFjaCBjb2x1bW4gdG8gdGhlIGluc2VydCBlbGVtZW50CiAgICBmb3IgbmFtZSwgdmFsdWUgaW4gY29sdW1uczoKICAgICAgICBFVC5TdWJFbGVtZW50KGluc2VydF9lbGVtLCAiY29sdW1uIiwgbmFtZT1uYW1lLCB2YWx1ZT12YWx1ZSkKICAgIAogICAgcmV0dXJuIGluc2VydF9lbGVtCgpkZWYgY3JlYXRlX3htbF9taWdyYXRpb25fc2NyaXB0KHJlY29yZHMpOgogICAgcm9vdCA9IEVULkVsZW1lbnQoImNoYW5nZVNldCIsIGlkPSJpbnNlcnRfZXh0ZXJuYWxfYXBpX2RlZmluaXRpb25zIiwgYXV0aG9yPSJ1c2VyIikKICAgIAogICAgIyBBZGQgZWFjaCByZWNvcmQncyBpbnNlcnQgZWxlbWVudAogICAgZm9yIHJlY29yZCBpbiByZWNvcmRzOgogICAgICAgIGluc2VydF9lbGVtID0gY3JlYXRlX2luc2VydF9lbGVtZW50KHJlY29yZCkKICAgICAgICByb290LmFwcGVuZChpbnNlcnRfZWxlbSkKICAgIAogICAgIyBQcmV0dHkgcHJpbnQgdGhlIFhNTAogICAgcmV0dXJuIHByZXR0aWZ5X3htbChyb290KQoKZGVmIHBhcnNlX2lucHV0KGlucHV0X3RleHQpOgogICAgIyBQYXJzZSB0aGUgQ1NWIGlucHV0CiAgICByZWFkZXIgPSBjc3YucmVhZGVyKGlvLlN0cmluZ0lPKGlucHV0X3RleHQpKQogICAgcmVjb3JkcyA9IFtdCiAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICBpZiBsZW4ocm93KSA8IDg6CiAgICAgICAgICAgIGNvbnRpbnVlICAjIFNraXAgcm93cyB0aGF0IGRvbid0IGhhdmUgYWxsIHJlcXVpcmVkIGZpZWxkcwoKICAgICAgICAjIE1hcCB0aGUgcm93IHRvIGRpY3Rpb25hcnkga2V5cwogICAgICAgIHJlY29yZCA9IHsKICAgICAgICAgICAgImJpbGxlcl9jb2RlIjogcm93WzBdLnN0cmlwKCksCiAgICAgICAgICAgICJiaWxsZXJfc2VjcmV0cyI6IHJvd1sxXS5zdHJpcCgpLAogICAgICAgICAgICAiaW5mb19jaGVja19yZXF1ZXN0X2RlZmluaXRpb24iOiByb3dbMl0uc3RyaXAoKSwKICAgICAgICAgICAgInBheW1lbnRfcmVxdWVzdF9kZWZpbml0aW9uIjogcm93WzNdLnN0cmlwKCksCiAgICAgICAgICAgICJpbmZvX2NoZWNrX2FwaSI6IHJvd1s0XS5zdHJpcCgpLAogICAgICAgICAgICAicHJvY2Vzc19wYXltZW50X2VuZHBvaW50Ijogcm93WzVdLnN0cmlwKCksCiAgICAgICAgICAgICJyZXF1ZXN0X2hlYWRlcnNfZGVmaW5pdGlvbiI6IHJvd1s2XS5zdHJpcCgpLAogICAgICAgICAgICAicGF5bWVudF9zdGF0dXNfZGVmaW5pdGlvbiI6IHJvd1s3XS5zdHJpcCgpCiAgICAgICAgfQogICAgICAgIHJlY29yZHMuYXBwZW5kKHJlY29yZCkKICAgIAogICAgcmV0dXJuIHJlY29yZHMKCiMgU2FtcGxlIGlucHV0CmlucHV0X3RleHQgPSAnJycKU1NMX0RQRENfUE9TVFBBSUQsInsKICAiImNvbW1vbiIiOiB7CiAgICAiIlNUSy1DT0RFIiI6ICIiQUJESVJFQ1QiIiwKICAgICIiQVVUSC1LRVkiIjogIiJFV0VFQ0ZCeTRXeXdwSENYV3VZRUsuV2xHQnRiVXV5aSIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiMTY5MjI0NjgzMjM1NTUiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiYzVpTU5vVWF0ZFlsU3FFVyIiLAogICAgIiJtb2RlIiI6ICIiMSIiLAogICAgIiJwYXlfY2hhbm5lbCIiOiAiIjQiIgogIH0KfSIsInsKICAgICAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICAgICAiImFjY291bnRfbm8iIjogIiJhY2NvdW50X25vIiIsCiAgICAgICAgIiJiaWxsX21vbnRoIiI6ICIiYmlsbF9tb250aHMiIiwKICAgICAgICAiImJpbGxfeWVhciIiOiAiImJpbGxfeWVhcnMiIiwKICAgICAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAgICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgogICAgfSIsInsKICAgICAgICAiImJua190cnhfaWQiIjogIiJibmtfdHJ4X2lkIiIsCiAgICAgICAgIiJwYXlfY2hhbm5lbCIiOiAiInBheV9jaGFubmVsIiIsCiAgICAgICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKICAgIH0iLHRydWUsL2FwaS92MS9iaWxsLWluZm8sL2FwaS92MS9iaWxsLXBheW1lbnQsL2FwaS92MS9iaWxsLXN0YXR1cywiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwiewogICAgIiJibmtfdHJ4X2lkIiI6ICIiYm5rX3RyeF9pZCIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iClNTTF9XSUxMU19MSVRUTEVfRkxPV0VSLCJ7CiAgIiJTVEstQ09ERSIiOiAiIkFCRElSRUNUIiIsCiAgIiJBVVRILUtFWSIiOiAiIkVXRUVDRkJ5NFd5d3BIQ1hXdVlFSy5XbEdCdGJVdXlpIiIsCiAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiMTY4ODg4MjYwMDUzMDAiIiwKICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIllsblE5OGZDSWdFa2cydlUiIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiLAogICAgIiJyZWZlcmVuY2Vfbm8iIjogIiJyZWZlcmVuY2Vfbm8iIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLHRydWUsL2FwaS92MS9iaWxsLWluZm8sL2FwaS92MS9iaWxsLXBheW1lbnQsL2FwaS92MS9iaWxsLXN0YXR1cywiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iClNTTF9ORVNDT19QT1NUUEFJRCwiewogICAgIiJTVEstQ09ERSIiOiAiIkFCRElSRUNUIiIsCiAgICAiIkFVVEgtS0VZIiI6ICIiRVdFRUNGQnk0V3l3cEhDWFd1WUVLLldsR0J0YlV1eWkiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIjE2OTc2OTk1OTIxNTI3IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIkx0L0dyWEFMeWQxcGo4QVkiIiwKICAgICIibW9kZSIiOiAiIjEiIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImFjY291bnRfbm8iIjogIiJhY2NvdW50X25vIiIsCiAgICAiImJpbGxfbW9udGgiIjogIiJiaWxsX21vbnRocyIiLAogICAgIiJiaWxsX3llYXIiIjogIiJiaWxsX3llYXJzIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLCJ7CiAgICAiImlzX3N0YW1wX2NvbGxlY3RlZCIiOiAiImlzX3N0YW1wX2NvbGxlY3RlZCIiLAogICAgIiJjb3JlX3RyYW5zYWN0aW9uX2lkIiI6ICIiY29yZV90cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLHRydWUsL2FwaS92MS9iaWxsLWluZm8sL2FwaS92MS9iaWxsLXBheW1lbnQsL2FwaS92MS9iaWxsLXN0YXR1cywiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iClNTTF9XQVNBX0dFTkVSQUxfQklMTCwiewogICAgIiJjb21tb24iIjogewogICAgICAgICIiU1RLLUNPREUiIjogIiJERU1PIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiV0ExNTE3NDYwMzY0MjA5MCIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiR1dGWUFpeThnNVQ5MlVJZyIiLAogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiLAogICAgICAgICIiYmlsbF90eXBlIiI6ICIiR0VORVJBTC1CSUxMIiIKICAgIH0sCiAgICAiImluZm9DaGVjayIiOiB7fSwKICAgICIicGF5QmlsbCIiOiB7CiAgICAgICAgIiJwYXltZW50X3R5cGUiIjogIiIzIiIsCiAgICAgICAgIiJjaGFubmVsX2lkIiI6ICIiNCIiCiAgICB9Cn0iLCJ7CiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIiYmlsbG5vIiI6ICIiYmlsbG5vIiIsCiAgICAiImJpbGxfdHlwZSIiOiAiImJpbGxfdHlwZSIiLAogICAgIiJhY2NvdW50X25vIiI6ICIiYWNjb3VudF9ubyIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IiwiewogICAgIiJtb2JpbGVfbm8iIjogIiJtb2JpbGVfbm8iIiwKICAgICIiYnJhbmNoX2NvZGUiIjogIiJicmFuY2hfY29kZSIiLAogICAgIiJwYXltZW50X3R5cGUiIjogIiJwYXltZW50X3R5cGUiIiwKICAgICIiY2hhbm5lbF9pZCIiOiAiImNoYW5uZWxfaWQiIiwKICAgICIicmVtYXJrcyIiOiAiInJlbWFya3MiIiwKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9Iix0cnVlLC9hcGkvdjEvYmlsbC1pbmZvLC9hcGkvdjEvYmlsbC1wYXltZW50LC9hcGkvdjEvYmlsbC1zdGF0dXMsInsKICAgICIiQVVUSC1LRVkiIjogIiJBVVRILUtFWSIiLAogICAgIiJTVEstQ09ERSIiOiAiIlNUSy1DT0RFIiIKfSIsInsKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IgpTU0xfTkVTQ09fUFJFUEFJRCwiewogICAgIiJjb21tb24iIjogewogICAgICAgICIiU1RLLUNPREUiIjogIiJERU1PIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiTkUxNjE1MTE4NjU4NTM3OSIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiUHNpbGdldFJPL3dZSWtQZyIiLAogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiLAogICAgICAgICIiYmlsbF90eXBlIiI6ICIiUFJFUEFJRCIiCiAgICB9LAogICAgIiJpbmZvQ2hlY2siIjoge30sCiAgICAiInBheUJpbGwiIjoge30KfSIsInsKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIiwKICAgICIiYmlsbF90eXBlIiI6ICIiYmlsbF90eXBlIiIKfSIsInsKICAgICIidXRpbGl0eV9iaWxsX3R5cGUiIjogIiJ1dGlsaXR5X2JpbGxfdHlwZSIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLHRydWUsL2FwaS92MS9iaWxsLWluZm8sL2FwaS92MS9iaWxsLXBheW1lbnQsL2FwaS92MS9iaWxsLXN0YXR1cywiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iClNTTF9EUERDX05FV19QT1NUUEFJRCwiewogICAgIiJjb21tb24iIjogewogICAgICAgICIiU1RLLUNPREUiIjogIiJERU1PIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiRFAxNjAzMDI2NDIyMjk2OSIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIid1FYSmFFNmM1eWRveEczSCIiLAogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiCiAgICB9LAogICAgIiJpbmZvQ2hlY2siIjogewogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiLAogICAgICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIkRQMTYwMzAyNjQyMjI5NjkiIiwKICAgICAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIndRWEphRTZjNXlkb3hHM0giIgogICAgfSwKICAgICIicGF5QmlsbCIiOiB7CiAgICAgICAgIiJtb2RlIiI6ICIiMSIiCiAgICB9Cn0iLCJ7CiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIiYWNjb3VudF9ubyIiOiAiImFjY291bnRfbm8iIiwKICAgICIicGF5X2NoYW5uZWwiIjogIiJwYXlfY2hhbm5lbCIiLAogICAgIiJiaWxsX21vbnRocyIiOiAiImJpbGxfbW9udGhzIiIsCiAgICAiImJpbGxfeWVhcnMiIjogIiJiaWxsX3llYXJzIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLCJ7CiAgICAiInBheV9jaGFubmVsIiI6ICIicGF5X2NoYW5uZWwiIiwKICAgICIiYm5rX3RyeF9pZCIiOiAiImJua190cnhfaWQiIiwKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9Iix0cnVlLCIiLCIiLCIiLCJ7CiAgICAiIkFVVEgtS0VZIiI6ICIiQVVUSC1LRVkiIiwKICAgICIiU1RLLUNPREUiIjogIiJTVEstQ09ERSIiCn0iLApTU0xfREVTQ09fUE9TVFBBSUQsInsKICAiIlNUSy1DT0RFIiI6ICIiQUJESVJFQ1QiIiwKICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiIxNjY0MzYzMzQxNTM0NyIiLAogICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiRnJGSHNSRzNqd3M3a21NViIiLAogICIiQVVUSC1LRVkiIjogIiJFV0VFQ0ZCeTRXeXdwSENYV3VZRUsuV2xHQnRiVXV5aSIiCn0iLCJ7CiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIiYmlsbG5vIiI6ICIiYmxsTm8iIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsInsKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9Iix0cnVlLC9hcGkvdjEvYmlsbC1pbmZvLC9hcGkvdjEvYmlsbC1wYXltZW50LC9hcGkvdjEvYmlsbC1zdGF0dXMsInsKICAgICIiQVVUSC1LRVkiIjogIiJBVVRILUtFWSIiLAogICAgIiJTVEstQ09ERSIiOiAiIlNUSy1DT0RFIiIKfSIsInsKICAgICIiYm5rX3RyeF9pZCIiOiAiImJua190cnhfaWQiIiwKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IgpTU0xfQkdEQ0xfREVNQU5EX05PVEUsInsKICAgICIiY29tbW9uIiI6IHsKICAgICAgICAiIlNUSy1DT0RFIiI6ICIiREVNTyIiLAogICAgICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIkJHMTU2NTA2NjAzODExNDgiIiwKICAgICAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIm1mT3h6YVRCV2wwcE04d0MiIiwKICAgICAgICAiIkFVVEgtS0VZIiI6ICIiQkQ2cEZTSWZTT0xFSWdLeXJ1NjdNZUJoSUNrUmlGbGEiIiwKICAgICAgICAiImJpbGxfdHlwZSIiOiAiIkRFTUFORC1OT1RFIiIKICAgIH0sCiAgICAiImluZm9DaGVjayIiOiB7fSwKICAgICIicGF5QmlsbCIiOiB7fQp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImN1c3RDb2RlIiI6ICIiY3VzdENvZGUiIiwKICAgICIibW9iaWxlTm8iIjogIiJtb2JpbGVObyIiLAogICAgIiJkZW1hbmROb3RlQ29kZSIiOiAiImRlbWFuZE5vdGVDb2RlIiIsCiAgICAiImJpbGxfdHlwZSIiOiAiImJpbGxfdHlwZSIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImN1c3RDb2RlIiI6ICIiY3VzdENvZGUiIiwKICAgICIibW9iaWxlTm8iIjogIiJtb2JpbGVObyIiLAogICAgIiJiYW5rTmFtZSIiOiAiImJhbmtOYW1lIiIsCiAgICAiImJyYW5jaE5hbWUiIjogIiJicmFuY2hOYW1lIiIsCiAgICAiInRvdGFsQW1vdW50IiI6ICIidG90YWxBbW91bnQiIiwKICAgICIiYmlsbF90eXBlIiI6ICIiYmlsbF90eXBlIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLHRydWUsIiIsIiIsIiIsInsKICAgICIiQVVUSC1LRVkiIjogIiJBVVRILUtFWSIiLAogICAgIiJTVEstQ09ERSIiOiAiIlNUSy1DT0RFIiIKfSIsCkJHRENMX01FVEVSRUQsInsKICAgICIiY29tbW9uIiI6IHsKICAgICAgICAiIlNUSy1DT0RFIiI6ICIiREVNTyIiLAogICAgICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIkJHMTU2NTA5MDkyNTMwMzAiIiwKICAgICAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInhkdERlZzY1SGdVakE2U1oiIiwKICAgICAgICAiIkFVVEgtS0VZIiI6ICIiQkQ2cEZTSWZTT0xFSWdLeXJ1NjdNZUJoSUNrUmlGbGEiIgogICAgfSwKICAgICIiaW5mb0NoZWNrIiI6IHsKICAgICAgICAiIkFVVEgtS0VZIiI6ICIiQkQ2cEZTSWZTT0xFSWdLeXJ1NjdNZUJoSUNrUmlGbGEiIiwKICAgICAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJCRzE1NjUwOTA5MjUzMDMwIiIsCiAgICAgICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ4ZHREZWc2NUhnVWpBNlNaIiIKICAgIH0sCiAgICAiInBheUJpbGwiIjogewogICAgICAgICIibW9kZSIiOiAiIjEiIgogICAgfQp9IiwiewogICAgIiJjb2RlIiI6ICIiY3VzdENvZGUiIiwKICAgICIibW9iaWxlTm8iIjogIiJtb2JpbGVObyIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImJpbGxfdHlwZSIiOiAiImJpbGxfdHlwZSIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IiwiewogICAgIiJtb2JpbGVObyIiOiAiIm1vYmlsZU5vIiIsCiAgICAiImJhbmtOYW1lIiI6ICIiYmFua05hbWUiIiwKICAgICIiYnJhbmNoTmFtZSIiOiAiImJyYW5jaE5hbWUiIiwKICAgICIiY3VzdENvZGUiIjogIiJjdXN0Q29kZSIiLAogICAgIiJiaWxsQW1vdW50IiI6ICIiYmlsbEFtb3VudCIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImJpbGxfdHlwZSIiOiAiImJpbGxfdHlwZSIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9Iix0cnVlLCIiLCIiLCIiLCJ7CiAgICAiIkFVVEgtS0VZIiI6ICIiQVVUSC1LRVkiIiwKICAgICIiU1RLLUNPREUiIjogIiJTVEstQ09ERSIiCn0iLApCR0RDTF9OT05fTUVURVJFRCwiewogICAgIiJjb21tb24iIjogewogICAgICAgICIiU1RLLUNPREUiIjogIiJERU1PIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiQkcxNTY1MDY2MTAyMjI5MCIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiRFZCT0RHWWEzZkp1S1ptNSIiLAogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiCiAgICB9LAogICAgIiJpbmZvQ2hlY2siIjogewogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiLAogICAgICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIkJHMTU2NTA2NjEwMjIyOTAiIiwKICAgICAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIkRWQk9ER1lhM2ZKdUtabTUiIgogICAgfSwKICAgICIicGF5QmlsbCIiOiB7CiAgICAgICAgIiJtb2RlIiI6ICIiMSIiCiAgICB9Cn0iLCJ7CiAgICAiImNvZGUiIjogIiJjb2RlIiIsCiAgICAiIm1vYmlsZU5vIiI6ICIibW9iaWxlTm8iIiwKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJiaWxsX3R5cGUiIjogIiJiaWxsX3R5cGUiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsInsKICAgICIibW9iaWxlTm8iIjogIiJtb2JpbGVObyIiLAogICAgIiJiYW5rTmFtZSIiOiAiImJhbmtOYW1lIiIsCiAgICAiImJyYW5jaE5hbWUiIjogIiJicmFuY2hOYW1lIiIsCiAgICAiImN1c3RDb2RlIiI6ICIiY3VzdENvZGUiIiwKICAgICIiYmlsbEFtb3VudCIiOiAiImJpbGxBbW91bnQiIiwKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJiaWxsX3R5cGUiIjogIiJiaWxsX3R5cGUiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfQoiLHRydWUsIiIsIiIsIiIsInsKICAgICIiQVVUSC1LRVkiIjogIiJBVVRILUtFWSIiLAogICAgIiJTVEstQ09ERSIiOiAiIlNUSy1DT0RFIiIKfSIsClNTTF9USVRBU19ERU1BTkRfTk9URSwiewogICAgIiJjb21tb24iIjogewogICAgICAgICIiU1RLLUNPREUiIjogIiJERU1PIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiVEkxNTE3NDYwMzUzNzg3NiIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiSVY1UndIekdKREJwa2hrMSIiLAogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiCiAgICB9LAogICAgIiJpbmZvQ2hlY2siIjogewogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiLAogICAgICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIlRJMTUxNzQ2MDM1Mzc4NzYiIiwKICAgICAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIklWNVJ3SHpHSkRCcGtoazEiIgogICAgfSwKICAgICIicGF5QmlsbCIiOiB7CiAgICAgICAgIiJtb2RlIiI6ICIiMSIiCiAgICB9Cn0iLCJ7CiAgICAiImludm9pY2VObyIiOiAiImludm9pY2VObyIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImJpbGxfdHlwZSIiOiAiImJpbGxfdHlwZSIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IiwiewogICAgIiJwYXltZW50SWQiIjogIiJwYXltZW50SWQiIiwKICAgICIiYmlsbF90eXBlIiI6ICIiYmlsbF90eXBlIiIsCiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsdHJ1ZSwiIiwiIiwiIiwiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwKU1NMX1RJVEFTX01FVEVSRUQsInsKICAgICIiY29tbW9uIiI6IHsKICAgICAgICAiIlNUSy1DT0RFIiI6ICIiREVNTyIiLAogICAgICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiIlRJMTUxNzQ2MDMwNzc4NDciIiwKICAgICAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiIk5uMm5DVlJ1VHBZNnhzbzUiIiwKICAgICAgICAiIkFVVEgtS0VZIiI6ICIiQkQ2cEZTSWZTT0xFSWdLeXJ1NjdNZUJoSUNrUmlGbGEiIgogICAgfSwKICAgICIiaW5mb0NoZWNrIiI6IHsKICAgICAgICAiIkFVVEgtS0VZIiI6ICIiQkQ2cEZTSWZTT0xFSWdLeXJ1NjdNZUJoSUNrUmlGbGEiIiwKICAgICAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJUSTE1MTc0NjAzMDc3ODQ3IiIsCiAgICAgICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJObjJuQ1ZSdVRwWTZ4c281IiIKICAgIH0sCiAgICAiInBheUJpbGwiIjogewogICAgICAgICIibW9kZSIiOiAiIjEiIgogICAgfQp9IiwiewogICAgIiJpbnZvaWNlTm8iIjogIiJpbnZvaWNlTm8iIiwKICAgICIiY3VzdG9tZXJDb2RlIiI6ICIiY3VzdG9tZXJDb2RlIiIsCiAgICAiInNvdXJjZVRheEFtb3VudCIiOiAiInNvdXJjZVRheEFtb3VudCIiLAogICAgIiJicmFuY2hSb3V0aW5nTm8iIjogIiJicmFuY2hSb3V0aW5nTm8iIiwKICAgICIib3BlcmF0b3IiIjogIiJvcGVyYXRvciIiLAogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImNoYWxhbk5vIiI6ICIiY2hhbGFuTm8iIiwKICAgICIiY2hhbGFuRGF0ZSIiOiAiImNoYWxhbkRhdGUiIiwKICAgICIiY2hhbGFuQmFuayIiOiAiImNoYWxhbkJhbmsiIiwKICAgICIiY2hhbGFuQnJhbmNoIiI6ICIiY2hhbGFuQnJhbmNoIiIsCiAgICAiImJpbGxfdHlwZSIiOiAiImJpbGxfdHlwZSIiLAogICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIidXRpbGl0eV9hdXRoX2tleSIiLAogICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJ1dGlsaXR5X3NlY3JldF9rZXkiIgp9IiwiewogICAgIiJwYXltZW50SWQiIjogIiJwYXltZW50SWQiIiwKICAgICIiYmlsbF90eXBlIiI6ICIiYmlsbF90eXBlIiIsCiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsdHJ1ZSwiIiwiIiwiIiwiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwKU1NMX1RJVEFTX05PTl9NRVRFUkVELCJ7CiAgICAiImNvbW1vbiIiOiB7CiAgICAgICAgIiJTVEstQ09ERSIiOiAiIkRFTU8iIiwKICAgICAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJUSTE1MTc0NjAzNDAxNzM2IiIsCiAgICAgICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJQQ1F1ZTV3WmlCaGZsdllrIiIsCiAgICAgICAgIiJBVVRILUtFWSIiOiAiIkJENnBGU0lmU09MRUlnS3lydTY3TWVCaElDa1JpRmxhIiIKICAgIH0sCiAgICAiImluZm9DaGVjayIiOiB7CiAgICAgICAgIiJBVVRILUtFWSIiOiAiIkJENnBGU0lmU09MRUlnS3lydTY3TWVCaElDa1JpRmxhIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiVEkxNTE3NDYwMzQwMTczNiIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiUENRdWU1d1ppQmhmbHZZayIiCiAgICB9LAogICAgIiJwYXlCaWxsIiI6IHsKICAgICAgICAiIm1vZGUiIjogIiIxIiIKICAgIH0KfSIsInsKICAgICIiY3VzdG9tZXIiIjogIiJjdXN0b21lciIiLAogICAgIiJhbW91bnQiIjogIiJhbW91bnQiIiwKICAgICIic3VyY2hhcmdlIiI6ICIic3VyY2hhcmdlIiIsCiAgICAiInBhcnRpY3VsYXJzIiI6ICIicGFydGljdWxhcnMiIiwKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJiaWxsX3R5cGUiIjogIiJiaWxsX3R5cGUiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsInsKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJwYXltZW50SWQiIjogIiJwYXltZW50SWQiIiwKICAgICIiYmlsbF90eXBlIiI6ICIiYmlsbF90eXBlIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLHRydWUsIiIsIiIsIiIsInsKICAgICIiQVVUSC1LRVkiIjogIiJBVVRILUtFWSIiLAogICAgIiJTVEstQ09ERSIiOiAiIlNUSy1DT0RFIiIKfSIsClNTTF9CUkVCX1BPU1RQQUlELCJ7CiAgICAiImNvbW1vbiIiOiB7CiAgICAgICAgIiJTVEstQ09ERSIiOiAiIkRFTU8iIiwKICAgICAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJCUjE2NzEzNjI5NjUxMzc0IiIsCiAgICAgICAgIiJ1dGlsaXR5X3NlY3JldF9rZXkiIjogIiJCUjE2NzEzNjI5NjUxMzc0IiIsCiAgICAgICAgIiJBVVRILUtFWSIiOiAiIkJENnBGU0lmU09MRUlnS3lydTY3TWVCaElDa1JpRmxhIiIsCiAgICAgICAgIiJwYXlfY2hhbm5lbCIiOiAiIjQiIgogICAgfSwKICAgICIiaW5mb0NoZWNrIiI6IHsKICAgIH0sCiAgICAiInBheUJpbGwiIjogewogICAgICAgICIibW9kZSIiOiAiIjEiIgogICAgfQp9IiwiewogICAgIiJ0cmFuc2FjdGlvbl9pZCIiOiAiInRyYW5zYWN0aW9uX2lkIiIsCiAgICAiImFjY291bnRfbm8iIjogIiJhY2NvdW50X25vIiIsCiAgICAiInR5cGVfb2ZfYmlsbCIiOiAiInR5cGVfb2ZfYmlsbCIiLAogICAgIiJiaWxsX3R5cGUiIjogIiJiaWxsX3R5cGUiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIsCiAgICAiImJyYW5jaFJvdXRpbmdObyIiOiAiImJyYW5jaFJvdXRpbmdObyIiCn0KIiwiewogICAgIiJ1dGlsaXR5X2JpbGxfdHlwZSIiOiAiInV0aWxpdHlfYmlsbF90eXBlIiIsCiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsdHJ1ZSwiIiwiIiwiIiwiewogICAgIiJBVVRILUtFWSIiOiAiIkFVVEgtS0VZIiIsCiAgICAiIlNUSy1DT0RFIiI6ICIiU1RLLUNPREUiIgp9IiwKU1NMX0JUQ0xfTkVXX1JFR1VMQVJfQklMTCwiewogICAgIiJjb21tb24iIjogewogICAgICAgICIiU1RLLUNPREUiIjogIiJERU1PIiIsCiAgICAgICAgIiJ1dGlsaXR5X2F1dGhfa2V5IiI6ICIiQlQxNjAwMTY1NDEzNjQ1OCIiLAogICAgICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIiMTFlb1lPaTNuZW1TUGdsdSIiLAogICAgICAgICIiQVVUSC1LRVkiIjogIiJCRDZwRlNJZlNPTEVJZ0t5cnU2N01lQmhJQ2tSaUZsYSIiLAogICAgICAgICIicGF5X2NoYW5uZWwiIjogIiI0IiIKICAgIH0sCiAgICAiImluZm9DaGVjayIiOiB7CiAgICB9LAogICAgIiJwYXlCaWxsIiI6IHsKICAgICAgICAiIm1vZGUiIjogIiIxIiIKICAgIH0KfSIsInsKICAgICIiYmlsbF9ubyIiOiAiImJpbGxfbm8iIiwKICAgICIicGhvbmVfbnVtYmVyIiI6ICIicGhvbmVfbnVtYmVyIiIsCiAgICAiImV4Y2hhbmdlX2NvZGUiIjogIiJleGNoYW5nZV9jb2RlIiIsCiAgICAiImJyYW5jaF9jb2RlIiI6ICIiYnJhbmNoX2NvZGUiIiwKICAgICIiYmlsbF90eXBlIiI6ICIiYmlsbF90eXBlIiIsCiAgICAiInRyYW5zYWN0aW9uX2lkIiI6ICIidHJhbnNhY3Rpb25faWQiIiwKICAgICIidXRpbGl0eV9hdXRoX2tleSIiOiAiInV0aWxpdHlfYXV0aF9rZXkiIiwKICAgICIidXRpbGl0eV9zZWNyZXRfa2V5IiI6ICIidXRpbGl0eV9zZWNyZXRfa2V5IiIKfSIsInsKICAgICIidHJhbnNhY3Rpb25faWQiIjogIiJ0cmFuc2FjdGlvbl9pZCIiLAogICAgIiJ1dGlsaXR5X2JpbGxfdHlwZSIiOiAiInV0aWxpdHlfYmlsbF90eXBlIiIsCiAgICAiInV0aWxpdHlfYXV0aF9rZXkiIjogIiJ1dGlsaXR5X2F1dGhfa2V5IiIsCiAgICAiInV0aWxpdHlfc2VjcmV0X2tleSIiOiAiInV0aWxpdHlfc2VjcmV0X2tleSIiCn0iLHRydWUsIiIsIiIsIiIsInsKICAgICIiQVVUSC1LRVkiIjogIiJBVVRILUtFWSIiLAogICAgIiJTVEstQ09ERSIiOiAiIlNUSy1DT0RFIiIKfSIsCgonJycKCiMgUGFyc2UgdGhlIGlucHV0IGFuZCBjcmVhdGUgcmVjb3JkcwpyZWNvcmRzID0gcGFyc2VfaW5wdXQoaW5wdXRfdGV4dCkKCiMgR2VuZXJhdGUgWE1MIG1pZ3JhdGlvbiBzY3JpcHQKeG1sX3NjcmlwdCA9IGNyZWF0ZV94bWxfbWlncmF0aW9uX3NjcmlwdChyZWNvcmRzKQoKIyBPdXRwdXQgdGhlIGdlbmVyYXRlZCBYTUwgc2NyaXB0CnByaW50KHhtbF9zY3JpcHQpCg==