From fc3b7073b73c3dfebd05bdd4600a75457ec80f7e Mon Sep 17 00:00:00 2001 From: "david.yapfest.club" Date: Sun, 30 Aug 2026 16:34:09 -0400 Subject: [PATCH] Capture D-008 root and producer sources --- decisions/d008-prereg-root-v3.json | 1 + future/d008_checker_v3/producer.py | 1029 +++++++++++++++++++++++++++ future/d008_executor_v3/producer.py | 1023 ++++++++++++++++++++++++++ 3 files changed, 2053 insertions(+) create mode 100644 decisions/d008-prereg-root-v3.json create mode 100644 future/d008_checker_v3/producer.py create mode 100644 future/d008_executor_v3/producer.py diff --git a/decisions/d008-prereg-root-v3.json b/decisions/d008-prereg-root-v3.json new file mode 100644 index 0000000000..add8d6506b --- /dev/null +++ b/decisions/d008-prereg-root-v3.json @@ -0,0 +1 @@ +{"commit_oid":"d07faf4aaf903af23a3d3892a0668cba7746de36","label":"CANONICAL_POST_COMMIT","objects":{"2da3a1df83ea2f86c7a355885e30c3cf6b1dea8e":{"data_b64":"IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJELTAwOCB2MyBTdGFnZSBBIHNlbWFudGljIGNsb3N1cmU7IHYxL3YyIGludmFsaWRhdGVkIHByZS1mcmVlemUvZXZpZGVuY2UuIiIiCmZyb20gX19mdXR1cmVfXyBpbXBvcnQgYW5ub3RhdGlvbnMKaW1wb3J0IGFyZ3BhcnNlLGFzdCxiYXNlNjQsY29weSxmdW5jdG9vbHMsaGFzaGxpYixqc29uLHN1YnByb2Nlc3Msc3lzLHRlbXBmaWxlLHVuaWNvZGVkYXRhCmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aCxQdXJlUG9zaXhQYXRoCgpjbGFzcyBNYW5pZmVzdEVycm9yKFZhbHVlRXJyb3IpOnBhc3MKVTY0PTIqKjY0LTEKQUxHRUJSQT0iVFlQRURfQlVER0VUX0FMR0VCUkEiCktJTkRTPSgiQ09OU1VNQUJMRSIsIlBFQUsiLCJSQVRFIiwiTEVBU0UiLCJTSEFSRSIpClE9ewogIlEwMSI6ImNvbXB1dGUiLCJRMDIiOiJ0b2tlbnMiLCJRMDMiOiJ0aW1lIiwiUTA0IjoiZW5lcmd5IiwiUTA1IjoicHJvdmlkZXIgY2hhcmdlIiwKICJRMDYiOiJjb250ZXh0IHN0b3JhZ2UiLCJRMDciOiJyZXRyaWV2YWwiLCJRMDgiOiJjb21wYWN0aW9uIiwiUTA5IjoidG9vbC9zZXJ2aWNlIHJlc2VydmF0aW9uIiwKICJRMTAiOiJjb25jdXJyZW50IGNoaWxkIHdvcmsiLCJRMTEiOiJmYWlsZWQvc3BlY3VsYXRpdmUgd29yayIsIlExMiI6ImV2YWx1YXRpb24vYWdncmVnYXRpb24iLAogIlExMyI6ImNhbmNlbGxhdGlvbiIsIlExNCI6ImNhY2hlL3JldXNlIiwiUTE1IjoiZGVsZWdhdGlvbiIsIlExNiI6InN1YnN0aXR1dGlvbiIsIlExNyI6ImxhdGUgcmVzdWx0In0KQjg9ewogIkwwMSI6InJlc2VydmF0aW9uIGFjcXVpc2l0aW9uL2NvbW1pdC9yZWxlYXNlIiwiTDAyIjoicGFydGlhbC9mYWlsZWQgY29uc3VtcHRpb24iLCJMMDMiOiJyZWZ1bmQvbm9ucmVmdW5kIiwKICJMMDQiOiJsZWFzZSBncmFudC9leHBpcnkvcmVuZXcvcmV2b2tlIiwiTDA1Ijoic2hhcmUvcGVhay9yYXRlIiwiTDA2IjoicGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIiwKICJMMDciOiJjb25jdXJyZW50IHJlc2VydmF0aW9uIiwiTDA4IjoiY29udGluZ2VuY3kvZXNjcm93L292ZXJydW4iLCJMMDkiOiJjYW5jZWxsYXRpb24gdGltaW5nIiwKICJMMTAiOiJhdHRyaWJ1dGlvbi9yZWNvbmNpbGlhdGlvbiIsIkwxMSI6InByb3ZpZGVyIGNoYXJnZSBkaXN0aW5jdCBmcm9tIHNlbWFudGljIGNvbnN1bXB0aW9uIiwKICJMMTIiOiJubyBhdXRvbWF0aWMgcmVmdW5kIGZvciBmYWlsdXJlLCBjYW5jZWxsYXRpb24sIGxhdGUgb3V0cHV0LCBvciBkaXNjYXJkZWQgV29ybGQgd29yayJ9CkxBV1M9KCJXSE9MRV9PQlNFUlZBVElPTl9DTE9TVVJFIiwiVFlQRURfSURFTlRJVFlfU0NPUEUiLCJEMDAzX0FVVEhPUklUWV9GSVJTVCIsIlBFUl9LSU5EX0NPTlNFUlZBVElPTiIsCiAiUEFSRU5UX1NJQkxJTkdfQ09OU0VSVkFUSU9OIiwiUkVTRVJWQVRJT05fQUNRVUlTSVRJT04iLCJDQU5DRUxMQVRJT05fUkVGVU5EIiwiUFJPVklERVJfUkVDT05DSUxJQVRJT04iLAogIkNPTVBPVU5EX0FUT01JQ0lUWSIsIlJFQ09WRVJZX1JFUExBWSIsIkFUVFJJQlVUSU9OX01PREVMX0lOREVQRU5ERU5DRSIsIkVGRkVDVF9QUk9NT1RJT05fU0VQQVJBVElPTiIsCiAiQ0FOT05JQ0FMX0RFVEVSTUlOSVNNIikKU1RBVFVTRVM9KCJBUFBMSUVEIiwiREVOWV9BVVRIT1JJVFkiLCJERU5ZX0FETUlTU0lPTiIsIlVOU1VQUE9SVEVEIiwiVU5LTk9XTl9SRUNPTkNJTEUiLCJSRVBMQVkiLCJSRUNPTkNJTEVfRVhQSVJFRCIpCkdBVEVTPSgiRVhFQ1VUT1JfSU5ERVBFTkRFTlRfUkVWSUVXIiwiQ0hFQ0tFUl9JTkRFUEVOREVOVF9SRVZJRVciLCJFVkFMVUFUT1JfUkVWSUVXIiwiUFJFX0ZSRUVaRV9TSUdOT0ZGIikKUFlUSE9OX0dSQU1NQVI9ZiJ7c3lzLnZlcnNpb25faW5mby5tYWpvcn0ue3N5cy52ZXJzaW9uX2luZm8ubWlub3J9IgpQQUNLRVRfUFJFUkVHX1NIQTI1Nj0iOTcxNDBkMWJkODFiNWE1OGQ0NWI1MDZkYTQwZmIzZGM5YWMwNzcwYjMzZDgxZWY1NmU4MGRkMmY0OTU5MGFlNCIgIyBEMDA4X0ZJWEVEX01BUktFUgpWQUxJREFUT1JfTk9STUFMSVpFRF9TSEEyNTY9IjI2MDdiNmNjZTYzZmU3YzQwOWRlZTQzMzc1YzRhNzcwMzI1MTNkN2MyM2M5MWE5ZWE3MWZmYzY2NmI0MzRlZDQiICMgRDAwOF9GSVhFRF9NQVJLRVIKRk9SQklEREVOX0lOUFVUX0tFWVM9eyJleHBlY3RlZCIsImV4cGVjdGVkX3N0YXR1cyIsInZlcmRpY3RfZXhwZWN0ZWQiLCJwYXNzIiwibGF3X3Jlc3VsdHMifQpCQVNFX0VWRU5UPXsiYWN0b3JfaWQiLCJhbW91bnQiLCJjb21taXRtZW50X2lkIiwiZGltZW5zaW9uX2lkIiwib3BlcmF0aW9uIiwib3BlcmF0aW9uX2lkIiwib3duZXJfaWQiLCJwbGFuX2lkIiwicmVzb3VyY2VfaWQiLCJ3b3JsZF9pZCJ9Ck9QX0ZJRUxEUz17IlJFU0VSVkUiOnNldCgpLCJFU0NST1ciOnNldCgpLCJBQ1FVSVJFIjp7InJlZnVuZGFibGUifSwiUkVMRUFTRSI6eyJyZWxlYXNlX2Zyb20ifSwiQ0FOQ0VMX0VGRkVDVElWRSI6c2V0KCksIlJFRlVORCI6c2V0KCksIlJFRklMTCI6c2V0KCksIkxFQVNFX0dSQU5UIjp7ImVwb2NoIiwiZXhwaXJlc19hdCJ9LCJMRUFTRV9VU0UiOnsiZXBvY2giLCJsZWFzZV9pZCJ9LCJMRUFTRV9SRVZPS0UiOnsibGVhc2VfaWQifSwiTEVBU0VfUkVORVciOnsiZXBvY2giLCJleHBpcmVzX2F0IiwibGVhc2VfaWQifSwiU0hBUkVfQUxMT0NBVEUiOnsiY2hpbGRfaWQifSwiU0hBUkVfUkVTRVJWRSI6eyJjaGlsZF9pZCJ9LCJTSEFSRV9BQ1FVSVJFIjp7ImNoaWxkX2lkIn0sIlNIQVJFX1JFVk9LRSI6eyJjaGlsZF9pZCJ9LCJQUk9WSURFUl9FU1RJTUFURSI6eyJwcmlvcl9mYWN0X2lkIiwicHJvdmlkZXJfYWNjb3VudF9pZCIsInByb3ZpZGVyX2ZhY3RfaWQifSwiUFJPVklERVJfT0JTRVJWRUQiOnsicHJpb3JfZmFjdF9pZCIsInByb3ZpZGVyX2FjY291bnRfaWQiLCJwcm92aWRlcl9mYWN0X2lkIn0sIlBST1ZJREVSX1VOS05PV04iOnsicHJpb3JfZmFjdF9pZCIsInByb3ZpZGVyX2FjY291bnRfaWQiLCJwcm92aWRlcl9mYWN0X2lkIn0sIlBST1ZJREVSX1NFVFRMRUQiOnsicHJpb3JfZmFjdF9pZCIsInByb3ZpZGVyX2FjY291bnRfaWQiLCJwcm92aWRlcl9mYWN0X2lkIn0sIlBST1ZJREVSX0NSRURJVCI6eyJwcmlvcl9mYWN0X2lkIiwicHJvdmlkZXJfYWNjb3VudF9pZCIsInByb3ZpZGVyX2ZhY3RfaWQifSwiQ0FDSEVfUkVVU0UiOnsiY2FjaGVfZnJlc2gifSwiRkFJTCI6c2V0KCksIkRFUEVOREVOQ1lfUk9MTEJBQ0siOnNldCgpLCJMQVRFX1JFU1VMVCI6c2V0KCksIldPUkxEX0RJU0NBUkQiOnNldCgpLCJDQU5DRUxfUkVRVUVTVCI6c2V0KCksIlRPTUIiOnsidGFyZ2V0X29wZXJhdGlvbl9pZCJ9LCJDT01QT1VORCI6eyJjaGlsZHJlbiJ9LCJFRkZFQ1RfQVVUSE9SSVpFIjpzZXQoKSwiUFJPTU9URSI6c2V0KCksIkNPTlZFUlQiOnsidGFyZ2V0X2RpbWVuc2lvbl9pZCJ9fQpVTlNVUFBPUlRFRF9PUFM9eyJFRkZFQ1RfQVVUSE9SSVpFIiwiUFJPTU9URSIsIkNPTlZFUlQifQpVTklUX0NPTVBBVD17InRva2VuIjp7IkNPTlNVTUFCTEUifSwid29ya2VyIjp7IlBFQUsiLCJTSEFSRSJ9LCJyZXF1ZXN0Ijp7IlJBVEUifSwidG9vbC1zZWF0Ijp7IkxFQVNFIn19ClBBUkVOVF9DT01QQVQ9KCkgIyBjbG9zZWQgY29udmVyc2lvbi1mcmVlIChjaGlsZF9raW5kLGNoaWxkX3VuaXQscGFyZW50X2tpbmQscGFyZW50X3VuaXQpIHJlbGF0aW9ucwpBVVRIX0NPTlRFWFQ9KCJncmFudF9yZWYiLCJnZW5lcmF0aW9uIiwiZXhlY3V0aW9uX2lkIiwiYWN0aXZhdGlvbl9pZCIsInZhbGlkYXRpb25faWQiLCJpbnZvY2F0aW9uX25vbmNlIiwiZnJlc2huZXNzX3JlZiIsImFjdG9yX2lkIiwiY29tbWl0bWVudF9pZCIsIndvcmxkX2lkIiwicmlnaHQiKQoKZGVmIG5vcm1hbGl6ZWRfdmFsaWRhdG9yKHJhdyk6CiBzcmM9cmF3LmRlY29kZSgidXRmLTgiLCJzdHJpY3QiKS5zcGxpdGxpbmVzKCkKIG91dD1bXQogZm9yIGxpbmUgaW4gc3JjOgogIGlmIGxpbmUuc3RhcnRzd2l0aCgiUEFDS0VUX1BSRVJFR19TSEEyNTY9Iik6b3V0LmFwcGVuZCgnUEFDS0VUX1BSRVJFR19TSEEyNTY9IkBQQUNLRVRfU0hBMjU2QCIgIyBEMDA4X0ZJWEVEX01BUktFUicpCiAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoIlZBTElEQVRPUl9OT1JNQUxJWkVEX1NIQTI1Nj0iKTpvdXQuYXBwZW5kKCdWQUxJREFUT1JfTk9STUFMSVpFRF9TSEEyNTY9IkBWQUxJREFUT1JfU0hBMjU2QCIgIyBEMDA4X0ZJWEVEX01BUktFUicpCiAgZWxzZTpvdXQuYXBwZW5kKGxpbmUpCiByZXR1cm4gKCJcbiIuam9pbihvdXQpKyJcbiIpLmVuY29kZSgpCmRlZiB2ZXJpZnlfcHJlcmVnKHBhY2tldF9yYXcsdmFsaWRhdG9yX3Jhdyk6CiBpZiBzaGEocGFja2V0X3JhdykhPVBBQ0tFVF9QUkVSRUdfU0hBMjU2IG9yIHNoYShub3JtYWxpemVkX3ZhbGlkYXRvcih2YWxpZGF0b3JfcmF3KSkhPVZBTElEQVRPUl9OT1JNQUxJWkVEX1NIQTI1NjpyYWlzZSBNYW5pZmVzdEVycm9yKCJ0cnVzdGVkIHByZXJlZyByb290IikKCiMgY2Fub25pY2FsIEpTT04KCmRlZiBwdWJsaWMoZik6CiBAZnVuY3Rvb2xzLndyYXBzKGYpCiBkZWYgdygqYSwqKmspOgogIHRyeTpyZXR1cm4gZigqYSwqKmspCiAgZXhjZXB0IE1hbmlmZXN0RXJyb3I6cmFpc2UKICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6cmFpc2UgTWFuaWZlc3RFcnJvcihmLl9fbmFtZV9fKyI6IG1hbGZvcm1lZCIpIGZyb20gZQogcmV0dXJuIHcKZGVmIF9wYWlycyh4cyk6CiBkPXt9CiBmb3Igayx2IGluIHhzOgogIGlmIGsgaW4gZDpyYWlzZSBNYW5pZmVzdEVycm9yKCJkdXBsaWNhdGUga2V5IikKICBkW2tdPXYKIHJldHVybiBkCmRlZiB3YWxrKHgscD0iJCIpOgogaWYgaXNpbnN0YW5jZSh4LGZsb2F0KTpyYWlzZSBNYW5pZmVzdEVycm9yKCJmbG9hdCAiK3ApCiBpZiBpc2luc3RhbmNlKHgsaW50KSBhbmQgbm90IGlzaW5zdGFuY2UoeCxib29sKSBhbmQgbm90IDA8PXg8PVU2NDpyYWlzZSBNYW5pZmVzdEVycm9yKCJ1NjQgIitwKQogaWYgaXNpbnN0YW5jZSh4LHN0cik6CiAgaWYgYW55KDB4RDgwMDw9b3JkKGMpPD0weERGRkYgZm9yIGMgaW4geCk6cmFpc2UgTWFuaWZlc3RFcnJvcigic3Vycm9nYXRlICIrcCkKICBpZiB1bmljb2RlZGF0YS5ub3JtYWxpemUoIk5GQyIseCkhPXg6cmFpc2UgTWFuaWZlc3RFcnJvcigiTkZDICIrcCkKIGlmIGlzaW5zdGFuY2UoeCxkaWN0KToKICBmb3Igayx2IGluIHguaXRlbXMoKToKICAgaWYgbm90IGlzaW5zdGFuY2UoayxzdHIpOnJhaXNlIE1hbmlmZXN0RXJyb3IoImtleSAiK3ApCiAgIHdhbGsoayxwKyIva2V5Iik7d2Fsayh2LHArIi8iK2spCiBlbGlmIGlzaW5zdGFuY2UoeCxsaXN0KToKICBmb3IgaSx2IGluIGVudW1lcmF0ZSh4KTp3YWxrKHYscCsiLyIrc3RyKGkpKQogZWxpZiB4IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh4LChzdHIsaW50LGJvb2wpKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJKU09OIHR5cGUgIitwKQpkZWYgY2Fub25pY2FsKHgpOndhbGsoeCk7cmV0dXJuIChqc29uLmR1bXBzKHgsZW5zdXJlX2FzY2lpPUZhbHNlLHNvcnRfa2V5cz1UcnVlLHNlcGFyYXRvcnM9KCIsIiwiOiIpLGFsbG93X25hbj1GYWxzZSkrIlxuIikuZW5jb2RlKCkKQHB1YmxpYwpkZWYgcGFyc2VfYnl0ZXMocmF3KToKIGlmIG5vdCBpc2luc3RhbmNlKHJhdyxieXRlcyk6cmFpc2UgTWFuaWZlc3RFcnJvcigiYnl0ZXMiKQogdHJ5Ong9anNvbi5sb2FkcyhyYXcuZGVjb2RlKCJ1dGYtOCIsInN0cmljdCIpLG9iamVjdF9wYWlyc19ob29rPV9wYWlycyxwYXJzZV9mbG9hdD1sYW1iZGEgXzooXyBmb3IgXyBpbiAoKSkudGhyb3coTWFuaWZlc3RFcnJvcigiZmxvYXQiKSkscGFyc2VfY29uc3RhbnQ9bGFtYmRhIF86KF8gZm9yIF8gaW4gKCkpLnRocm93KE1hbmlmZXN0RXJyb3IoImNvbnN0YW50IikpKQogZXhjZXB0IChVbmljb2RlRXJyb3IsanNvbi5KU09ORGVjb2RlRXJyb3IpIGFzIGU6cmFpc2UgTWFuaWZlc3RFcnJvcigiSlNPTiIpIGZyb20gZQogaWYgY2Fub25pY2FsKHgpIT1yYXc6cmFpc2UgTWFuaWZlc3RFcnJvcigibm9uY2Fub25pY2FsIikKIHJldHVybiB4CmRlZiBleGFjdCh4LGtzLHApOgogaWYgbm90IGlzaW5zdGFuY2UoeCxkaWN0KSBvciBzZXQoeCkhPXNldChrcyk6cmFpc2UgTWFuaWZlc3RFcnJvcigiY2xvc2VkICIrcCkKZGVmIHRleHQoeCxwKToKIGlmIG5vdCBpc2luc3RhbmNlKHgsc3RyKSBvciBub3QgeDpyYWlzZSBNYW5pZmVzdEVycm9yKCJ0ZXh0ICIrcCkKIHJldHVybiB4CmRlZiB1aW50KHgscCk6CiBpZiBub3QgaXNpbnN0YW5jZSh4LGludCkgb3IgaXNpbnN0YW5jZSh4LGJvb2wpIG9yIG5vdCAwPD14PD1VNjQ6cmFpc2UgTWFuaWZlc3RFcnJvcigidTY0ICIrcCkKIHJldHVybiB4CmRlZiBzaGEoYik6cmV0dXJuIGhhc2hsaWIuc2hhMjU2KGIpLmhleGRpZ2VzdCgpCmRlZiB2c2hhKHgpOnJldHVybiBzaGEoY2Fub25pY2FsKHgpKQpkZWYgY2xvbmUoeCk6cmV0dXJuIGNvcHkuZGVlcGNvcHkoeCkKZGVmIGFydChraW5kLHJhdyk6cmV0dXJuIHsiYnl0ZV9sZW5ndGgiOmxlbihyYXcpLCJraW5kIjpraW5kLCJzaGEyNTYiOnNoYShyYXcpfQpkZWYgZGlnZXN0KHgscCk6CiB0ZXh0KHgscCkKIGlmIGxlbih4KSE9NjQgb3IgYW55KGMgbm90IGluICIwMTIzNDU2Nzg5YWJjZGVmIiBmb3IgYyBpbiB4KTpyYWlzZSBNYW5pZmVzdEVycm9yKCJkaWdlc3QgIitwKQpkZWYgaW5kZXgoeHMsayxwKToKIGQ9e30KIGZvciB4IGluIHhzOgogIGlmIG5vdCBpc2luc3RhbmNlKHgsZGljdCkgb3IgayBub3QgaW4geDp0ZXh0KE5vbmUscCkKICB0ZXh0KHhba10scCkKICBpZiB4W2tdIGluIGQ6cmFpc2UgTWFuaWZlc3RFcnJvcigiZHVwbGljYXRlICIrcCkKICBkW3hba11dPXgKIHJldHVybiBkCgpkZWYgZGltKGRpZCxraW5kLHVuaXQsc2NvcGU9IkdMT0JBTCIsb3duZXI9IkFDVE9SLUEiLHBhcmVudD1Ob25lKToKIGJhc2U9eyJkaW1lbnNpb25faWQiOmRpZCwia2luZCI6a2luZCwib3duZXJfaWQiOm93bmVyLCJwYXJlbnRfYnVkZ2V0X2lkIjpwYXJlbnQsInNjb3BlIjpzY29wZSwidW5pdF9pZCI6dW5pdH0KIGlmIGtpbmQ9PSJDT05TVU1BQkxFIjpiYXNlWyJzdGF0ZSJdPXsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9CiBlbGlmIGtpbmQ9PSJQRUFLIjpiYXNlWyJzdGF0ZSJdPXsiY2FwIjoxMCwiY3VycmVudCI6MCwiaGlnaF93YXRlciI6MCwicmVzZXJ2ZWQiOjB9CiBlbGlmIGtpbmQ9PSJSQVRFIjpiYXNlWyJzdGF0ZSJdPXsiYXZhaWxhYmxlIjoxMCwiY2FwIjoxMCwibGFzdF9yZWZpbGxfYXQiOjAsInJlZmlsbCI6NSwicmVzZXJ2ZWQiOjAsIndpbmRvdyI6MTB9CiBlbGlmIGtpbmQ9PSJMRUFTRSI6YmFzZVsic3RhdGUiXT17ImFjdGl2ZSI6W10sImNhcGFjaXR5IjoyLCJleHBpcmVkIjpbXX0KIGVsaWYga2luZD09IlNIQVJFIjpiYXNlWyJzdGF0ZSJdPXsiY2FwYWNpdHkiOjEwLCJjaGlsZHJlbiI6W10sInJldm9rZWRfY2hpbGRyZW4iOltdfQogcmV0dXJuIGJhc2UKZGVmIGJhc2Vfc3RhdGUoa2luZHM9Tm9uZSk6CiBraW5kcz1raW5kcyBvciBLSU5EUwogaWRzPXsiQ09OU1VNQUJMRSI6IkQtU1RPQ0siLCJQRUFLIjoiRC1QRUFLIiwiUkFURSI6IkQtUkFURSIsIkxFQVNFIjoiRC1MRUFTRSIsIlNIQVJFIjoiRC1TSEFSRSJ9CiB1bml0cz17IkNPTlNVTUFCTEUiOiJ0b2tlbiIsIlBFQUsiOiJ3b3JrZXIiLCJSQVRFIjoicmVxdWVzdCIsIkxFQVNFIjoidG9vbC1zZWF0IiwiU0hBUkUiOiJ3b3JrZXIifQogcmV0dXJuIHsiZGltZW5zaW9ucyI6W2RpbShpZHNba10sayx1bml0c1trXSkgZm9yIGsgaW4ga2luZHNdLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7InBsYW5faWQiOiJQTEFOLTEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W119CmRlZiBhdXRoKHRhZz0iMSIsYWxsb3c9VHJ1ZSk6CiByZXR1cm4geyJhY3RpdmF0aW9uX2lkIjoiQUNULSIrdGFnLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0iK3RhZywiZnJlc2huZXNzX3JlZiI6IkZSRVNILSIrdGFnLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1BIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLSIrdGFnLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtIit0YWcsInZlcmRpY3QiOiJBTExPVyIgaWYgYWxsb3cgZWxzZSAiREVOWSIsIndvcmxkX2lkIjoiV09STEQtQSJ9CmRlZiBldihvcCxkaW1lbnNpb249IkQtU1RPQ0siLGFtb3VudD0xLHRhZz0iMSIsKiprdyk6CiB4PXsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjphbW91bnQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOmRpbWVuc2lvbiwib3BlcmF0aW9uIjpvcCwib3BlcmF0aW9uX2lkIjoiT1AtIit0YWcsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9O3gudXBkYXRlKGt3KTtyZXR1cm4geApkZWYgcGhhc2UoZXZlbnQsdGFnPSIxIixhbGxvdz1UcnVlLGZhdWx0PSJOT05FIik6CiByZXR1cm4geyJhdXRob3JpdHkiOmF1dGgodGFnLGFsbG93KSwiZXZlbnQiOmV2ZW50LCJmYXVsdCI6ZmF1bHQsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0KCmRlZiBjYXNlKGNpZCxmYW1pbHkscGhhc2VzLGtpbmRzPU5vbmUsbXV0PU5vbmUpOgogcz1iYXNlX3N0YXRlKGtpbmRzKQogaWYgbXV0Om11dChzKQogcmV0dXJuIHsiZmFtaWx5IjpmYW1pbHksImlkIjpjaWQsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjpzLCJwaGFzZXMiOnBoYXNlc319CgpkZWYgY29ycHVzKCk6CiBvdXQ9W10KIGRlZiBhZGQoY2lkLGZhbSxldmVudHMsa2luZHM9Tm9uZSxtdXQ9Tm9uZSk6CiAgcGhhc2VzPVtdCiAgZm9yIGksZSBpbiBlbnVtZXJhdGUoZXZlbnRzKToKICAgaWYgaXNpbnN0YW5jZShlLGRpY3QpIGFuZCAia2luZCIgaW4gZTpwaGFzZXMuYXBwZW5kKGUpCiAgIGVsc2U6cGhhc2VzLmFwcGVuZChwaGFzZShlLHN0cihsZW4ob3V0KSsxKSsiLSIrc3RyKGkpKSkKICBvdXQuYXBwZW5kKGNhc2UoY2lkLGZhbSxwaGFzZXMsa2luZHMsbXV0KSkKIGFkZCgiY29uc3VtYWJsZS1yZXNlcnZlLWNvbW1pdCIsIkYwMV9DT05TVU1BQkxFIixbZXYoIlJFU0VSVkUiLGFtb3VudD0zMCx0YWc9ImMxIiksZXYoIkFDUVVJUkUiLGFtb3VudD0yMCx0YWc9ImMyIiksZXYoIlJFTEVBU0UiLGFtb3VudD0xMCx0YWc9ImMzIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJ3b3JsZC1kaXNjYXJkLXNwZW5kIiwiRjAxX0NPTlNVTUFCTEUiLFtldigiUkVTRVJWRSIsYW1vdW50PTEwLHRhZz0id2QxIiksZXYoIkFDUVVJUkUiLGFtb3VudD0xMCx0YWc9IndkMiIpLGV2KCJXT1JMRF9ESVNDQVJEIixhbW91bnQ9MCx0YWc9IndkMyIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgiaG9sZC1jYW5jZWwtdW51c2VkIiwiRjAxX0NPTlNVTUFCTEUiLFtldigiUkVTRVJWRSIsYW1vdW50PTEyLHRhZz0iaGMxIiksZXYoIkNBTkNFTF9SRVFVRVNUIixhbW91bnQ9MCx0YWc9ImhjMiIpLGV2KCJDQU5DRUxfRUZGRUNUSVZFIixhbW91bnQ9MTIsdGFnPSJoYzMiKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoInJlZnVuZC1jb25zdW1lZC1leHBsaWNpdCIsIkYwMV9DT05TVU1BQkxFIixbZXYoIlJFU0VSVkUiLGFtb3VudD05LHRhZz0icmYxIiksZXYoIkFDUVVJUkUiLGFtb3VudD05LHRhZz0icmYyIixyZWZ1bmRhYmxlPVRydWUpLGV2KCJSRUZVTkQiLGFtb3VudD00LHRhZz0icmYzIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJwZWFrLWN1cnJlbnQtaGlnaHdhdGVyIiwiRjAyX1BFQUsiLFtldigiUkVTRVJWRSIsZGltZW5zaW9uPSJELVBFQUsiLGFtb3VudD03LHRhZz0icDEiKSxldigiQUNRVUlSRSIsZGltZW5zaW9uPSJELVBFQUsiLGFtb3VudD03LHRhZz0icDIiKSxldigiUkVMRUFTRSIsZGltZW5zaW9uPSJELVBFQUsiLGFtb3VudD03LHRhZz0icDMiKV0sWyJQRUFLIl0pCiBhZGQoInBlYWstb3Zlci1jYXAiLCJGMDJfUEVBSyIsW2V2KCJSRVNFUlZFIixkaW1lbnNpb249IkQtUEVBSyIsYW1vdW50PTExLHRhZz0icDQiKV0sWyJQRUFLIl0pCiBhZGQoImV4Y2x1c2l2ZS1mb3JrLXJlc2VydmF0aW9ucyIsIkYwMl9QRUFLIixbZXYoIlJFU0VSVkUiLGRpbWVuc2lvbj0iRC1QRUFLIixhbW91bnQ9Nix0YWc9IngxIiksZXYoIlJFU0VSVkUiLGRpbWVuc2lvbj0iRC1QRUFLIixhbW91bnQ9Nix0YWc9IngyIix3b3JsZF9pZD0iV09STEQtQiIpXSxbIlBFQUsiXSkKIGFkZCgicmF0ZS1jYXBwZWQtcmVmaWxsIiwiRjAzX1JBVEUiLFtldigiUkVTRVJWRSIsZGltZW5zaW9uPSJELVJBVEUiLGFtb3VudD04LHRhZz0icjEiKSxldigiQUNRVUlSRSIsZGltZW5zaW9uPSJELVJBVEUiLGFtb3VudD04LHRhZz0icjIiKSxwaGFzZShldigiUkVGSUxMIixkaW1lbnNpb249IkQtUkFURSIsYW1vdW50PTAsdGFnPSJyMyIpLCJyMyIpXSxbIlJBVEUiXSkKIG91dFstMV1bImlucHV0cyJdWyJwaGFzZXMiXVstMV1bImxvZ2ljYWxfbm93Il09MjUKIGFkZCgicmF0ZS12cy1zdG9jay1uby1jb252ZXJzaW9uIiwiRjAzX1JBVEUiLFtldigiUkVTRVJWRSIsZGltZW5zaW9uPSJELVJBVEUiLGFtb3VudD0xMSx0YWc9InI0IildLFsiQ09OU1VNQUJMRSIsIlJBVEUiXSkKIGFkZCgicmF0ZS13aW5kb3ctbm90LWVsYXBzZWQiLCJGMDNfUkFURSIsW2V2KCJBQ1FVSVJFIixkaW1lbnNpb249IkQtUkFURSIsYW1vdW50PTksdGFnPSJyNSIpLGV2KCJSRUZJTEwiLGRpbWVuc2lvbj0iRC1SQVRFIixhbW91bnQ9MCx0YWc9InI2IildLFsiUkFURSJdKQogYWRkKCJsZWFzZS1leHBpcnkiLCJGMDRfTEVBU0UiLFtldigiTEVBU0VfR1JBTlQiLGRpbWVuc2lvbj0iRC1MRUFTRSIsYW1vdW50PTEsdGFnPSJsMSIsZXBvY2g9MSxleHBpcmVzX2F0PTE1KSxwaGFzZShldigiTEVBU0VfVVNFIixkaW1lbnNpb249IkQtTEVBU0UiLGFtb3VudD0xLHRhZz0ibDIiLGxlYXNlX2lkPSJPUC1sMSIsZXBvY2g9MSksImwyIildLFsiTEVBU0UiXSkKIG91dFstMV1bImlucHV0cyJdWyJwaGFzZXMiXVstMV1bImxvZ2ljYWxfbm93Il09MTYKIGFkZCgibGVhc2UtcmV2b2tlLWFmdGVyLXVzZSIsIkYwNF9MRUFTRSIsW2V2KCJMRUFTRV9HUkFOVCIsZGltZW5zaW9uPSJELUxFQVNFIixhbW91bnQ9MSx0YWc9ImwzIixlcG9jaD0xLGV4cGlyZXNfYXQ9MzApLGV2KCJMRUFTRV9VU0UiLGRpbWVuc2lvbj0iRC1MRUFTRSIsYW1vdW50PTEsdGFnPSJsNCIsbGVhc2VfaWQ9Ik9QLWwzIixlcG9jaD0xKSxldigiTEVBU0VfUkVWT0tFIixkaW1lbnNpb249IkQtTEVBU0UiLGFtb3VudD0wLHRhZz0ibDUiLGxlYXNlX2lkPSJPUC1sMyIpXSxbIkxFQVNFIl0pCiBhZGQoImxlYXNlLXJlbmV3LWVwb2NoIiwiRjA0X0xFQVNFIixbZXYoIkxFQVNFX0dSQU5UIixkaW1lbnNpb249IkQtTEVBU0UiLGFtb3VudD0xLHRhZz0ibDYiLGVwb2NoPTEsZXhwaXJlc19hdD0yMCksZXYoIkxFQVNFX1JFTkVXIixkaW1lbnNpb249IkQtTEVBU0UiLGFtb3VudD0wLHRhZz0ibDciLGxlYXNlX2lkPSJPUC1sNiIsZXBvY2g9MixleHBpcmVzX2F0PTQwKV0sWyJMRUFTRSJdKQogYWRkKCJzaGFyZS1zaWJsaW5nLW92ZXJzdWJzY3JpcHRpb24iLCJGMDVfU0hBUkUiLFtldigiU0hBUkVfQUxMT0NBVEUiLGRpbWVuc2lvbj0iRC1TSEFSRSIsYW1vdW50PTYsdGFnPSJzMSIsY2hpbGRfaWQ9IkIxIiksZXYoIlNIQVJFX0FMTE9DQVRFIixkaW1lbnNpb249IkQtU0hBUkUiLGFtb3VudD02LHRhZz0iczIiLGNoaWxkX2lkPSJCMiIpXSxbIlNIQVJFIl0pCiBhZGQoInNoYXJlLXBhcmVudC1yZXZva2UiLCJGMDVfU0hBUkUiLFtldigiU0hBUkVfQUxMT0NBVEUiLGRpbWVuc2lvbj0iRC1TSEFSRSIsYW1vdW50PTYsdGFnPSJzMyIsY2hpbGRfaWQ9IkIxIiksZXYoIlNIQVJFX1JFU0VSVkUiLGRpbWVuc2lvbj0iRC1TSEFSRSIsYW1vdW50PTQsdGFnPSJzNCIsY2hpbGRfaWQ9IkIxIiksZXYoIlNIQVJFX1JFVk9LRSIsZGltZW5zaW9uPSJELVNIQVJFIixhbW91bnQ9MCx0YWc9InM1IixjaGlsZF9pZD0iQjEiKV0sWyJTSEFSRSJdKQogYWRkKCJzaGFyZS1jaGlsZC11c2UiLCJGMDVfU0hBUkUiLFtldigiU0hBUkVfQUxMT0NBVEUiLGRpbWVuc2lvbj0iRC1TSEFSRSIsYW1vdW50PTYsdGFnPSJzNiIsY2hpbGRfaWQ9IkIxIiksZXYoIlNIQVJFX1JFU0VSVkUiLGRpbWVuc2lvbj0iRC1TSEFSRSIsYW1vdW50PTQsdGFnPSJzNyIsY2hpbGRfaWQ9IkIxIiksZXYoIlNIQVJFX0FDUVVJUkUiLGRpbWVuc2lvbj0iRC1TSEFSRSIsYW1vdW50PTMsdGFnPSJzOCIsY2hpbGRfaWQ9IkIxIildLFsiU0hBUkUiXSkKIGFkZCgiY29udGluZ2VuY3ktb3ZlcnJ1bi1kZW5pZWQiLCJGMDZfQ09OVElOR0VOQ1kiLFtldigiUkVTRVJWRSIsYW1vdW50PTk1LHRhZz0ibzEiKSxldigiQUNRVUlSRSIsYW1vdW50PTEwNSx0YWc9Im8yIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJjb250aW5nZW5jeS1lc2Nyb3ctZXhwbGljaXQiLCJGMDZfQ09OVElOR0VOQ1kiLFtldigiUkVTRVJWRSIsYW1vdW50PTk1LHRhZz0ibzMiKSxldigiRVNDUk9XIixhbW91bnQ9NSx0YWc9Im80IiksZXYoIkFDUVVJUkUiLGFtb3VudD0xMDAsdGFnPSJvNSIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgicHJvdmlkZXItZXN0aW1hdGUtaW52b2ljZS1jcmVkaXQiLCJGMDdfUFJPVklERVIiLFtldigiUFJPVklERVJfRVNUSU1BVEUiLGFtb3VudD0xMix0YWc9InYxIixwcm92aWRlcl9mYWN0X2lkPSJQRjEiKSxldigiUFJPVklERVJfT0JTRVJWRUQiLGFtb3VudD0xMyx0YWc9InYyIixwcm92aWRlcl9mYWN0X2lkPSJQRjEiKSxldigiUFJPVklERVJfU0VUVExFRCIsYW1vdW50PTEzLHRhZz0idjMiLHByb3ZpZGVyX2ZhY3RfaWQ9IlBGMSIpLGV2KCJQUk9WSURFUl9DUkVESVQiLGFtb3VudD0yLHRhZz0idjQiLHByb3ZpZGVyX2ZhY3RfaWQ9IlBGMSIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgicHJvdmlkZXItdW5rbm93biIsIkYwN19QUk9WSURFUiIsW2V2KCJQUk9WSURFUl9FU1RJTUFURSIsYW1vdW50PTEyLHRhZz0idjUiLHByb3ZpZGVyX2ZhY3RfaWQ9IlBGMiIpLGV2KCJQUk9WSURFUl9VTktOT1dOIixhbW91bnQ9MCx0YWc9InY2Iixwcm92aWRlcl9mYWN0X2lkPSJQRjIiKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoImxvc3QtcmVzcG9uc2UtcmV0cnkiLCJGMDhfUkVDT1ZFUlkiLFtwaGFzZShldigiUkVTRVJWRSIsYW1vdW50PTgsdGFnPSJycjEiKSwicnIxIixmYXVsdD0iQUZURVJfQ09NTUlUX0JFRk9SRV9SRVNQT05TRSIpLHsia2luZCI6IlJFTE9BRCJ9LHBoYXNlKGV2KCJSRVNFUlZFIixhbW91bnQ9OCx0YWc9InJyMSIpLCJycjIiKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoInJldHJ5LWJlZm9yZS1jb21taXQiLCJGMDhfUkVDT1ZFUlkiLFtwaGFzZShldigiUkVTRVJWRSIsYW1vdW50PTgsdGFnPSJycjMiKSwicnIzIixmYXVsdD0iQkVGT1JFX0NPTU1JVCIpLHsia2luZCI6IlJFTE9BRCJ9LHBoYXNlKGV2KCJSRVNFUlZFIixhbW91bnQ9OCx0YWc9InJyMyIpLCJycjQiKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoInJldGFpbmVkLXRvbWItZXhwaXJ5IiwiRjA4X1JFQ09WRVJZIixbZXYoIlJFU0VSVkUiLGFtb3VudD04LHRhZz0icnI1IikscGhhc2UoZXYoIlRPTUIiLGFtb3VudD0wLHRhZz0icnI2Iix0YXJnZXRfb3BlcmF0aW9uX2lkPSJPUC1ycjUiKSwicnI2IikscGhhc2UoZXYoIlJFU0VSVkUiLGFtb3VudD04LHRhZz0icnI1IiksInJyNyIpXSxbIkNPTlNVTUFCTEUiXSkKIG91dFstMV1bImlucHV0cyJdWyJwaGFzZXMiXVstMV1bImxvZ2ljYWxfbm93Il09NTAKIGFkZCgic3BlY3VsYXRpdmUtbG9zZXItcmV2ZXJzaWJsZSIsIkYwOV9TUEVDVUxBVElPTiIsW2V2KCJSRVNFUlZFIixhbW91bnQ9MTAsdGFnPSJzcDEiKSxldigiUkVMRUFTRSIsYW1vdW50PTEwLHRhZz0ic3AyIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJzcGVjdWxhdGl2ZS1sb3Nlci1pcnJldmVyc2libGUiLCJGMDlfU1BFQ1VMQVRJT04iLFtldigiUkVTRVJWRSIsYW1vdW50PTEwLHRhZz0ic3AzIiksZXYoIkFDUVVJUkUiLGFtb3VudD0xMCx0YWc9InNwNCIpLGV2KCJGQUlMIixhbW91bnQ9MCx0YWc9InNwNSIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgiZXZhbHVhdG9yLWNvc3QiLCJGMDlfU1BFQ1VMQVRJT04iLFtldigiUkVTRVJWRSIsYW1vdW50PTQsdGFnPSJzcDYiKSxldigiQUNRVUlSRSIsYW1vdW50PTQsdGFnPSJzcDciKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoImRlcGVuZGVuY3ktcm9sbGJhY2siLCJGMDlfU1BFQ1VMQVRJT04iLFtldigiUkVTRVJWRSIsYW1vdW50PTYsdGFnPSJzcDgiKSxldigiQUNRVUlSRSIsYW1vdW50PTYsdGFnPSJzcDkiKSxldigiREVQRU5ERU5DWV9ST0xMQkFDSyIsYW1vdW50PTAsdGFnPSJzcDEwIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJmcmVzaC1jYWNoZS1yZXVzZSIsIkYxMF9DQUNIRSIsW2V2KCJDQUNIRV9SRVVTRSIsYW1vdW50PTAsdGFnPSJjYTEiLGNhY2hlX2ZyZXNoPVRydWUpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgic3RhbGUtY2FjaGUtcmVjb21wdXRlIiwiRjEwX0NBQ0hFIixbZXYoIkNBQ0hFX1JFVVNFIixhbW91bnQ9MCx0YWc9ImNhMiIsY2FjaGVfZnJlc2g9RmFsc2UpLGV2KCJSRVNFUlZFIixhbW91bnQ9Myx0YWc9ImNhMyIpLGV2KCJBQ1FVSVJFIixhbW91bnQ9Myx0YWc9ImNhNCIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgiZGVsZWdhdGlvbi1hdHRyaWJ1dGlvbiIsIkYxMV9BVFRSSUJVVElPTiIsW2V2KCJSRVNFUlZFIixhbW91bnQ9NSx0YWc9ImExIixhY3Rvcl9pZD0iQUNUT1ItQ0hJTEQiLGNvbW1pdG1lbnRfaWQ9IkNPTU1JVE1FTlQtQ0hJTEQiKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoIm1vZGVsLXN1YnN0aXR1dGlvbiIsIkYxMV9BVFRSSUJVVElPTiIsW2V2KCJSRVNFUlZFIixhbW91bnQ9NSx0YWc9ImEyIixyZXNvdXJjZV9pZD0iTU9ERUwtQSIpLGV2KCJSRUxFQVNFIixhbW91bnQ9NSx0YWc9ImEzIixyZXNvdXJjZV9pZD0iTU9ERUwtQSIpLGV2KCJSRVNFUlZFIixhbW91bnQ9NSx0YWc9ImE0IixyZXNvdXJjZV9pZD0iTU9ERUwtQiIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgidG9vbC1zdWJzdGl0dXRpb24iLCJGMTFfQVRUUklCVVRJT04iLFtldigiTEVBU0VfR1JBTlQiLGRpbWVuc2lvbj0iRC1MRUFTRSIsYW1vdW50PTEsdGFnPSJhNSIsZXBvY2g9MSxleHBpcmVzX2F0PTMwLHJlc291cmNlX2lkPSJUT09MLUIiKV0sWyJMRUFTRSJdKQogYWRkKCJsYXRlLXJlc3VsdC1uby1yZWZ1bmQiLCJGMTJfTEFURV9DQU5DRUwiLFtldigiUkVTRVJWRSIsYW1vdW50PTcsdGFnPSJ0MSIpLGV2KCJBQ1FVSVJFIixhbW91bnQ9Nyx0YWc9InQyIiksZXYoIkxBVEVfUkVTVUxUIixhbW91bnQ9MCx0YWc9InQzIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJjYW5jZWwtcmVxdWVzdC1iZWZvcmUtZWZmZWN0aXZlIiwiRjEyX0xBVEVfQ0FOQ0VMIixbZXYoIlJFU0VSVkUiLGFtb3VudD03LHRhZz0idDQiKSxldigiQ0FOQ0VMX1JFUVVFU1QiLGFtb3VudD0wLHRhZz0idDUiKSxldigiQUNRVUlSRSIsYW1vdW50PTcsdGFnPSJ0NiIpLGV2KCJDQU5DRUxfRUZGRUNUSVZFIixhbW91bnQ9MCx0YWc9InQ3IildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJjb21wb3VuZC1hbGwtb3Itbm9uZSIsIkYxM19DT01QT1VORCIsW2V2KCJDT01QT1VORCIsYW1vdW50PTAsdGFnPSJtMSIsY2hpbGRyZW49W2V2KCJSRVNFUlZFIixhbW91bnQ9NCx0YWc9Im0xYSIpLGV2KCJSRVNFUlZFIixkaW1lbnNpb249IkQtUEVBSyIsYW1vdW50PTQsdGFnPSJtMWIiKV0pXSxbIkNPTlNVTUFCTEUiLCJQRUFLIl0pCiBhZGQoImNvbXBvdW5kLW9uZS1kZW5pZWQiLCJGMTNfQ09NUE9VTkQiLFtldigiQ09NUE9VTkQiLGFtb3VudD0wLHRhZz0ibTIiLGNoaWxkcmVuPVtldigiUkVTRVJWRSIsYW1vdW50PTQsdGFnPSJtMmEiKSxldigiUkVTRVJWRSIsZGltZW5zaW9uPSJELVBFQUsiLGFtb3VudD0xNCx0YWc9Im0yYiIpXSldLFsiQ09OU1VNQUJMRSIsIlBFQUsiXSkKIGFkZCgiYXV0aG9yaXR5LWRlbmlhbC1uby1kZWx0YSIsIkYxNF9BVVRIT1JJVFkiLFtwaGFzZShldigiUkVTRVJWRSIsYW1vdW50PTQsdGFnPSJkMSIpLCJkMSIsYWxsb3c9RmFsc2UpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgiZ2xvYmFsLXdvcmxkLXNjb3BlLWNyb3NzaW5nIiwiRjE0X0FVVEhPUklUWSIsW2V2KCJSRVNFUlZFIixhbW91bnQ9NCx0YWc9ImQyIix3b3JsZF9pZD0iV09STEQtQiIpXSxbIkNPTlNVTUFCTEUiXSkKIGFkZCgiZWZmZWN0LXNlcGFyYXRpb24iLCJGMTVfU0VQQVJBVElPTiIsW2V2KCJFRkZFQ1RfQVVUSE9SSVpFIixhbW91bnQ9MCx0YWc9ImUxIildLFsiQ09OU1VNQUJMRSJdKQogYWRkKCJwcm9tb3Rpb24tc2VwYXJhdGlvbiIsIkYxNV9TRVBBUkFUSU9OIixbZXYoIlBST01PVEUiLGFtb3VudD0wLHRhZz0iZTIiKV0sWyJDT05TVU1BQkxFIl0pCiBhZGQoInVuc3VwcG9ydGVkLWNyb3NzLWtpbmQiLCJGMTZfVU5TVVBQT1JURUQiLFtldigiQ09OVkVSVCIsYW1vdW50PTUsdGFnPSJ1MSIsdGFyZ2V0X2RpbWVuc2lvbl9pZD0iRC1QRUFLIildLFsiQ09OU1VNQUJMRSIsIlBFQUsiXSkKIHJldHVybiBvdXQKCmRlZiBjb3JwdXNfdjIoKToKIGNzPWNvcnB1cygpCiBmb3IgYyBpbiBjczoKICBzPWNbImlucHV0cyJdWyJpbml0aWFsX3N0YXRlIl07c1sid29ybGRzIl09W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV0KICBmb3IgZCBpbiBzWyJkaW1lbnNpb25zIl06CiAgIGRbInNjb3BlIl09IkdMT0JBTCIKICAgaWYgZFsia2luZCJdPT0iQ09OU1VNQUJMRSI6ZFsic3RhdGUiXVsiaXNzdWVkIl09ZFsic3RhdGUiXVsiZnJlZSJdK2RbInN0YXRlIl1bInJlc2VydmVkIl0rZFsic3RhdGUiXVsiY29uc3VtZWQiXStkWyJzdGF0ZSJdWyJleHBpcmVkIl0rZFsic3RhdGUiXVsidW5rbm93bl9kaXNwdXRlZCJdCiAgIGVsaWYgZFsia2luZCJdPT0iTEVBU0UiOmRbInN0YXRlIl1bImhpc3RvcnkiXT1bXQogICBlbGlmIGRbImtpbmQiXT09IlNIQVJFIjpkWyJzdGF0ZSJdWyJyZXZva2VkX2hpc3RvcnkiXT1bXTtkWyJzdGF0ZSJdLnBvcCgicmV2b2tlZF9jaGlsZHJlbiIsTm9uZSkKICBkaW1zPXtkWyJkaW1lbnNpb25faWQiXTpkIGZvciBkIGluIHNbImRpbWVuc2lvbnMiXX07c1sicmVzb3VyY2VfYmluZGluZ19wbGFucyJdPVtdO3Byb3ZpZGVyX3ByZXZpb3VzPXt9CiAgZGVmIGJpbmQoZSxhKToKICAgZVsib3duZXJfaWQiXT1kaW1zLmdldChlWyJkaW1lbnNpb25faWQiXSxuZXh0KGl0ZXIoZGltcy52YWx1ZXMoKSkpKVsib3duZXJfaWQiXTtlWyJwbGFuX2lkIl09IlBMQU4tIitlWyJvcGVyYXRpb25faWQiXQogICBhWyJncmFudF9yZWYiXT0iR1JBTlQtIithWyJleGVjdXRpb25faWQiXTthWyJoYW5kb2ZmIl09e2s6YVtrXSBmb3IgayBpbiBBVVRIX0NPTlRFWFR9CiAgIGlmIGVbIm9wZXJhdGlvbiJdPT0iQUNRVUlSRSIgYW5kICJyZWZ1bmRhYmxlIiBub3QgaW4gZTplWyJyZWZ1bmRhYmxlIl09RmFsc2UKICAgaWYgZVsib3BlcmF0aW9uIl0uc3RhcnRzd2l0aCgiUFJPVklERVJfIik6CiAgICByb290PWVbInByb3ZpZGVyX2ZhY3RfaWQiXTtzdGFnZT1lWyJvcGVyYXRpb24iXS5yZW1vdmVwcmVmaXgoIlBST1ZJREVSXyIpO2VbInByb3ZpZGVyX2ZhY3RfaWQiXT1yb290KyItIitzdGFnZTtlWyJwcm92aWRlcl9hY2NvdW50X2lkIl09IlBST1ZJREVSLUEiO2VbInByaW9yX2ZhY3RfaWQiXT1wcm92aWRlcl9wcmV2aW91cy5nZXQocm9vdCk7cHJvdmlkZXJfcHJldmlvdXNbcm9vdF09ZVsicHJvdmlkZXJfZmFjdF9pZCJdCiAgIHBsYW49eyJjb21taXRtZW50X2lkIjplWyJjb21taXRtZW50X2lkIl0sImRpbWVuc2lvbl9pZCI6ZVsiZGltZW5zaW9uX2lkIl0sIm93bmVyX2lkIjplWyJvd25lcl9pZCJdLCJwbGFuX2lkIjplWyJwbGFuX2lkIl0sInJlc291cmNlX2lkIjplWyJyZXNvdXJjZV9pZCJdLCJ3b3JsZF9pZCI6ZVsid29ybGRfaWQiXX0KICAgaWYgcGxhbiBub3QgaW4gc1sicmVzb3VyY2VfYmluZGluZ19wbGFucyJdOnNbInJlc291cmNlX2JpbmRpbmdfcGxhbnMiXS5hcHBlbmQocGxhbikKICAgaWYgZVsib3BlcmF0aW9uIl09PSJDT01QT1VORCI6CiAgICB3cmFwcGVkPVtdCiAgICBmb3IgY2hpbGQgaW4gZVsiY2hpbGRyZW4iXToKICAgICBjYT1jbG9uZShhKTtjYVsiYWN0b3JfaWQiXT1jaGlsZFsiYWN0b3JfaWQiXTtjYVsiY29tbWl0bWVudF9pZCJdPWNoaWxkWyJjb21taXRtZW50X2lkIl07Y2FbIndvcmxkX2lkIl09Y2hpbGRbIndvcmxkX2lkIl07Y2FbImFjdGl2YXRpb25faWQiXSs9Ii0iK2NoaWxkWyJvcGVyYXRpb25faWQiXTtjYVsiZXhlY3V0aW9uX2lkIl0rPSItIitjaGlsZFsib3BlcmF0aW9uX2lkIl07Y2FbInZhbGlkYXRpb25faWQiXSs9Ii0iK2NoaWxkWyJvcGVyYXRpb25faWQiXTtjYVsiaW52b2NhdGlvbl9ub25jZSJdKz0iLSIrY2hpbGRbIm9wZXJhdGlvbl9pZCJdO2NhWyJmcmVzaG5lc3NfcmVmIl0rPSItIitjaGlsZFsib3BlcmF0aW9uX2lkIl07Y2EucG9wKCJoYW5kb2ZmIixOb25lKTtiaW5kKGNoaWxkLGNhKTt3cmFwcGVkLmFwcGVuZCh7ImF1dGhvcml0eSI6Y2EsImV2ZW50IjpjaGlsZH0pCiAgICBlWyJjaGlsZHJlbiJdPXdyYXBwZWQKICBmb3IgcGggaW4gY1siaW5wdXRzIl1bInBoYXNlcyJdOgogICBpZiBwaC5nZXQoImtpbmQiKT09IkFQUExZIjoKICAgIGlmIHBoWyJldmVudCJdWyJvcGVyYXRpb24iXT09IlJFTEVBU0UiOnBoWyJldmVudCJdWyJyZWxlYXNlX2Zyb20iXT0iQ1VSUkVOVCIgaWYgcGhbImV2ZW50Il1bImRpbWVuc2lvbl9pZCJdPT0iRC1QRUFLIiBlbHNlICJSRVNFUlZFRCIKICAgIGJpbmQocGhbImV2ZW50Il0scGhbImF1dGhvcml0eSJdKQogIyByZXZpZXctYmxvY2sgcmVwcm9kdWNlcnMKIGlucD1jbG9uZShuZXh0KHhbImlucHV0cyJdIGZvciB4IGluIGNzIGlmIHhbImlkIl09PSJjb21wb3VuZC1hbGwtb3Itbm9uZSIpKTtpbnBbInBoYXNlcyJdWzBdWyJldmVudCJdWyJjaGlsZHJlbiJdWzFdWyJldmVudCJdWyJvcGVyYXRpb25faWQiXT1pbnBbInBoYXNlcyJdWzBdWyJldmVudCJdWyJjaGlsZHJlbiJdWzBdWyJldmVudCJdWyJvcGVyYXRpb25faWQiXTtjcy5hcHBlbmQoeyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6ImNvbXBvdW5kLWR1cGxpY2F0ZS1jaGlsZCIsImlucHV0cyI6aW5wfSkKIGlucD1jbG9uZShuZXh0KHhbImlucHV0cyJdIGZvciB4IGluIGNzIGlmIHhbImlkIl09PSJjb21wb3VuZC1hbGwtb3Itbm9uZSIpKTtpbnBbInBoYXNlcyJdWzBdWyJldmVudCJdWyJjaGlsZHJlbiJdWzFdWyJhdXRob3JpdHkiXVsiYWN0b3JfaWQiXT0iQVRUQUNLRVIiO2NzLmFwcGVuZCh7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoiY29tcG91bmQtYXR0YWNrZXItY2hpbGQiLCJpbnB1dHMiOmlucH0pCiBpbnA9Y2xvbmUobmV4dCh4WyJpbnB1dHMiXSBmb3IgeCBpbiBjcyBpZiB4WyJpZCJdPT0iYXV0aG9yaXR5LWRlbmlhbC1uby1kZWx0YSIpKTtpbnBbInBoYXNlcyJdWzBdWyJmYXVsdCJdPSJBRlRFUl9DT01NSVRfQkVGT1JFX1JFU1BPTlNFIjtjcy5hcHBlbmQoeyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6ImRlbmllZC1hZnRlci1mYXVsdCIsImlucHV0cyI6aW5wfSkKIGlucD1jbG9uZShuZXh0KHhbImlucHV0cyJdIGZvciB4IGluIGNzIGlmIHhbImlkIl09PSJhdXRob3JpdHktZGVuaWFsLW5vLWRlbHRhIikpO2lucFsicGhhc2VzIl1bMF1bImZhdWx0Il09IkJFRk9SRV9DT01NSVQiO2NzLmFwcGVuZCh7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoiZGVuaWVkLWJlZm9yZS1mYXVsdCIsImlucHV0cyI6aW5wfSkKIGRlZiBhdHRhY2sobmFtZSxiYXNlLG11dCk6CiAgeD1jbG9uZShuZXh0KGNbImlucHV0cyJdIGZvciBjIGluIGNzIGlmIGNbImlkIl09PWJhc2UpKTttdXQoeCk7Y3MuYXBwZW5kKHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOm5hbWUsImlucHV0cyI6eH0pCiBhdHRhY2soImhhbmRvZmYtZ2VuZXJhdGlvbi1taXNtYXRjaCIsImF1dGhvcml0eS1kZW5pYWwtbm8tZGVsdGEiLGxhbWJkYSB4Oih4WyJwaGFzZXMiXVswXVsiYXV0aG9yaXR5Il0uX19zZXRpdGVtX18oInZlcmRpY3QiLCJBTExPVyIpLHhbInBoYXNlcyJdWzBdWyJhdXRob3JpdHkiXVsiaGFuZG9mZiJdLl9fc2V0aXRlbV9fKCJnZW5lcmF0aW9uIiwyKSkpCiBhdHRhY2soImZyZXNobmVzcy1yZXBlYXQiLCJjb25zdW1hYmxlLXJlc2VydmUtY29tbWl0IixsYW1iZGEgeDp4WyJwaGFzZXMiXVsxXVsiYXV0aG9yaXR5Il0uX19zZXRpdGVtX18oImZyZXNobmVzc19yZWYiLHhbInBoYXNlcyJdWzBdWyJhdXRob3JpdHkiXVsiZnJlc2huZXNzX3JlZiJdKSkKIGF0dGFjaygicmVwbGF5LWJpbmRpbmctbWlzbWF0Y2giLCJsb3N0LXJlc3BvbnNlLXJldHJ5IixsYW1iZGEgeDp4WyJwaGFzZXMiXVsyXVsiZXZlbnQiXS5fX3NldGl0ZW1fXygiYW1vdW50Iiw5KSkKIGF0dGFjaygicGVhay1yZWxlYXNlLWVudW0taW52YWxpZCIsInBlYWstY3VycmVudC1oaWdod2F0ZXIiLGxhbWJkYSB4OnhbInBoYXNlcyJdWzJdWyJldmVudCJdLl9fc2V0aXRlbV9fKCJyZWxlYXNlX2Zyb20iLCJGUkVFIikpCiBhdHRhY2soImxlYXNlLWdyYW50LWV4cGlyZWQiLCJsZWFzZS1yZW5ldy1lcG9jaCIsbGFtYmRhIHg6eFsicGhhc2VzIl1bMF1bImV2ZW50Il0uX19zZXRpdGVtX18oImV4cGlyZXNfYXQiLDEwKSkKIGF0dGFjaygibGVhc2UtZXBvY2gtc2tpcCIsImxlYXNlLXJlbmV3LWVwb2NoIixsYW1iZGEgeDp4WyJwaGFzZXMiXVsxXVsiZXZlbnQiXS5fX3NldGl0ZW1fXygiZXBvY2giLDMpKQogYXR0YWNrKCJzaGFyZS1jaGlsZC1yZW1pbnQiLCJzaGFyZS1wYXJlbnQtcmV2b2tlIixsYW1iZGEgeDp4WyJwaGFzZXMiXS5hcHBlbmQoY2xvbmUoeFsicGhhc2VzIl1bMF0pfHsibG9naWNhbF9ub3ciOjExfSkpCiBhdHRhY2soInByb3ZpZGVyLWZvcmsiLCJwcm92aWRlci1lc3RpbWF0ZS1pbnZvaWNlLWNyZWRpdCIsbGFtYmRhIHg6eFsicGhhc2VzIl1bMl1bImV2ZW50Il0uX19zZXRpdGVtX18oInByaW9yX2ZhY3RfaWQiLHhbInBoYXNlcyJdWzBdWyJldmVudCJdWyJwcm92aWRlcl9mYWN0X2lkIl0pKQogYXR0YWNrKCJwcm92aWRlci1hY2NvdW50LXN3aXRjaCIsInByb3ZpZGVyLWVzdGltYXRlLWludm9pY2UtY3JlZGl0IixsYW1iZGEgeDp4WyJwaGFzZXMiXVsxXVsiZXZlbnQiXS5fX3NldGl0ZW1fXygicHJvdmlkZXJfYWNjb3VudF9pZCIsIk9USEVSIikpCiBhdHRhY2soInByb3ZpZGVyLWNyZWRpdC1vdmVyYm91bmQiLCJwcm92aWRlci1lc3RpbWF0ZS1pbnZvaWNlLWNyZWRpdCIsbGFtYmRhIHg6eFsicGhhc2VzIl1bM11bImV2ZW50Il0uX19zZXRpdGVtX18oImFtb3VudCIsOTkpKQogYXR0YWNrKCJkaW1lbnNpb24tcGFyZW50LWN5Y2xlIiwicmF0ZS12cy1zdG9jay1uby1jb252ZXJzaW9uIixsYW1iZGEgeDooeFsiaW5pdGlhbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMF0uX19zZXRpdGVtX18oInBhcmVudF9idWRnZXRfaWQiLHhbImluaXRpYWxfc3RhdGUiXVsiZGltZW5zaW9ucyJdWzFdWyJkaW1lbnNpb25faWQiXSkseFsiaW5pdGlhbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMV0uX19zZXRpdGVtX18oInBhcmVudF9idWRnZXRfaWQiLHhbImluaXRpYWxfc3RhdGUiXVsiZGltZW5zaW9ucyJdWzBdWyJkaW1lbnNpb25faWQiXSkpKQogYXR0YWNrKCJ1bml0LWtpbmQtaW5jb21wYXRpYmxlIiwicmF0ZS12cy1zdG9jay1uby1jb252ZXJzaW9uIixsYW1iZGEgeDp4WyJpbml0aWFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXVsxXS5fX3NldGl0ZW1fXygidW5pdF9pZCIsInRva2VuIikpCiBhdHRhY2soImxlYXNlLWVwb2NoLXplcm8iLCJsZWFzZS1yZW5ldy1lcG9jaCIsbGFtYmRhIHg6eFsicGhhc2VzIl1bMF1bImV2ZW50Il0uX19zZXRpdGVtX18oImVwb2NoIiwwKSkKIGF0dGFjaygicmF0ZS1sYXN0LXJlZmlsbC1yZWdyZXNzaW9uIiwicmF0ZS13aW5kb3ctbm90LWVsYXBzZWQiLGxhbWJkYSB4OnhbImluaXRpYWxfc3RhdGUiXVsiZGltZW5zaW9ucyJdWzBdWyJzdGF0ZSJdLl9fc2V0aXRlbV9fKCJsYXN0X3JlZmlsbF9hdCIsMTEpKQogYXR0YWNrKCJwcm92aWRlci1vcGVyYXRpb24tY29sbGlzaW9uIiwicHJvdmlkZXItZXN0aW1hdGUtaW52b2ljZS1jcmVkaXQiLGxhbWJkYSB4OnhbInBoYXNlcyJdWzFdWyJldmVudCJdLl9fc2V0aXRlbV9fKCJvcGVyYXRpb25faWQiLHhbInBoYXNlcyJdWzBdWyJldmVudCJdWyJvcGVyYXRpb25faWQiXSkpCiBkZWYgcHJvdmlkZXJfcmVzb2x1dGlvbih4LGRpcmVjdD1GYWxzZSk6CiAgdW5rbm93bj14WyJwaGFzZXMiXVsxXTt1bmtub3duWyJldmVudCJdWyJhbW91bnQiXT05O29ic2VydmVkPWNsb25lKHVua25vd24pO29ic2VydmVkWyJldmVudCJdWyJvcGVyYXRpb24iXT0iUFJPVklERVJfU0VUVExFRCIgaWYgZGlyZWN0IGVsc2UgIlBST1ZJREVSX09CU0VSVkVEIjtvYnNlcnZlZFsiZXZlbnQiXVsib3BlcmF0aW9uX2lkIl09Ik9QLXY3IjtvYnNlcnZlZFsiZXZlbnQiXVsicHJvdmlkZXJfZmFjdF9pZCJdPSJQRjItIisoIlNFVFRMRUQiIGlmIGRpcmVjdCBlbHNlICJPQlNFUlZFRCIpO29ic2VydmVkWyJldmVudCJdWyJwcmlvcl9mYWN0X2lkIl09dW5rbm93blsiZXZlbnQiXVsicHJvdmlkZXJfZmFjdF9pZCJdCiAgZm9yIGsgaW4gKCJncmFudF9yZWYiLCJleGVjdXRpb25faWQiLCJhY3RpdmF0aW9uX2lkIiwidmFsaWRhdGlvbl9pZCIsImludm9jYXRpb25fbm9uY2UiLCJmcmVzaG5lc3NfcmVmIik6b2JzZXJ2ZWRbImF1dGhvcml0eSJdW2tdKz0iLUVWSURFTkNFIgogIG9ic2VydmVkWyJhdXRob3JpdHkiXVsiaGFuZG9mZiJdPXtrOm9ic2VydmVkWyJhdXRob3JpdHkiXVtrXSBmb3IgayBpbiBBVVRIX0NPTlRFWFR9O3hbInBoYXNlcyJdLmFwcGVuZChvYnNlcnZlZCkKICBpZiBub3QgZGlyZWN0OgogICBzZXR0bGVkPWNsb25lKG9ic2VydmVkKTtzZXR0bGVkWyJldmVudCJdWyJvcGVyYXRpb24iXT0iUFJPVklERVJfU0VUVExFRCI7c2V0dGxlZFsiZXZlbnQiXVsib3BlcmF0aW9uX2lkIl09Ik9QLXY4IjtzZXR0bGVkWyJldmVudCJdWyJwcm92aWRlcl9mYWN0X2lkIl09IlBGMi1TRVRUTEVEIjtzZXR0bGVkWyJldmVudCJdWyJwcmlvcl9mYWN0X2lkIl09b2JzZXJ2ZWRbImV2ZW50Il1bInByb3ZpZGVyX2ZhY3RfaWQiXQogICBmb3IgayBpbiAoImdyYW50X3JlZiIsImV4ZWN1dGlvbl9pZCIsImFjdGl2YXRpb25faWQiLCJ2YWxpZGF0aW9uX2lkIiwiaW52b2NhdGlvbl9ub25jZSIsImZyZXNobmVzc19yZWYiKTpzZXR0bGVkWyJhdXRob3JpdHkiXVtrXSs9Ii1TRVRUTEUiCiAgIHNldHRsZWRbImF1dGhvcml0eSJdWyJoYW5kb2ZmIl09e2s6c2V0dGxlZFsiYXV0aG9yaXR5Il1ba10gZm9yIGsgaW4gQVVUSF9DT05URVhUfTt4WyJwaGFzZXMiXS5hcHBlbmQoc2V0dGxlZCkKIGF0dGFjaygicHJvdmlkZXItdW5rbm93bi1vYnNlcnZlZC1zZXR0bGVkIiwicHJvdmlkZXItdW5rbm93biIsbGFtYmRhIHg6cHJvdmlkZXJfcmVzb2x1dGlvbih4LEZhbHNlKSkKIGF0dGFjaygicHJvdmlkZXItdW5rbm93bi1kaXJlY3Qtc2V0dGxlIiwicHJvdmlkZXItdW5rbm93biIsbGFtYmRhIHg6cHJvdmlkZXJfcmVzb2x1dGlvbih4LFRydWUpKQogYXR0YWNrKCJuZXN0ZWQtY29tcG91bmQiLCJjb21wb3VuZC1hbGwtb3Itbm9uZSIsbGFtYmRhIHg6eFsicGhhc2VzIl1bMF1bImV2ZW50Il1bImNoaWxkcmVuIl1bMF0uX19zZXRpdGVtX18oImV2ZW50IixjbG9uZSh4WyJwaGFzZXMiXVswXVsiZXZlbnQiXSkpKQogZGVmIHVzZWRfcmV2b2tlKHgpOgogIGFjcXVpcmU9Y2xvbmUoeFsicGhhc2VzIl1bMV0pO2FjcXVpcmVbImV2ZW50Il1bIm9wZXJhdGlvbiJdPSJTSEFSRV9BQ1FVSVJFIjthY3F1aXJlWyJldmVudCJdWyJvcGVyYXRpb25faWQiXT0iT1AtczRhIjthY3F1aXJlWyJldmVudCJdWyJhbW91bnQiXT00CiAgZm9yIGsgaW4gKCJncmFudF9yZWYiLCJleGVjdXRpb25faWQiLCJhY3RpdmF0aW9uX2lkIiwidmFsaWRhdGlvbl9pZCIsImludm9jYXRpb25fbm9uY2UiLCJmcmVzaG5lc3NfcmVmIik6YWNxdWlyZVsiYXV0aG9yaXR5Il1ba10rPSItVVNFIgogIGFjcXVpcmVbImF1dGhvcml0eSJdWyJoYW5kb2ZmIl09e2s6YWNxdWlyZVsiYXV0aG9yaXR5Il1ba10gZm9yIGsgaW4gQVVUSF9DT05URVhUfTt4WyJwaGFzZXMiXS5pbnNlcnQoMixhY3F1aXJlKQogIHJlYWxsb2NhdGU9Y2xvbmUoeFsicGhhc2VzIl1bMF0pO3JlYWxsb2NhdGVbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdPSJPUC1zNWEiO3JlYWxsb2NhdGVbImV2ZW50Il1bImNoaWxkX2lkIl09IkIyIjtyZWFsbG9jYXRlWyJldmVudCJdWyJhbW91bnQiXT02CiAgZm9yIGsgaW4gKCJncmFudF9yZWYiLCJleGVjdXRpb25faWQiLCJhY3RpdmF0aW9uX2lkIiwidmFsaWRhdGlvbl9pZCIsImludm9jYXRpb25fbm9uY2UiLCJmcmVzaG5lc3NfcmVmIik6cmVhbGxvY2F0ZVsiYXV0aG9yaXR5Il1ba10rPSItUkVBTExPQyIKICByZWFsbG9jYXRlWyJhdXRob3JpdHkiXVsiaGFuZG9mZiJdPXtrOnJlYWxsb2NhdGVbImF1dGhvcml0eSJdW2tdIGZvciBrIGluIEFVVEhfQ09OVEVYVH07eFsicGhhc2VzIl0uYXBwZW5kKHJlYWxsb2NhdGUpCiBhdHRhY2soInNoYXJlLXVzZWQtcmV2b2tlLXJlYWxsb2NhdGUiLCJzaGFyZS1wYXJlbnQtcmV2b2tlIix1c2VkX3Jldm9rZSkKIGRlZiBleGFjdF9yZXRyeShuYW1lLGJhc2UscGhhc2VfaW5kZXg9MCk6CiAgeD1jbG9uZShuZXh0KGNbImlucHV0cyJdIGZvciBjIGluIGNzIGlmIGNbImlkIl09PWJhc2UpKTtmaXJzdD1jbG9uZSh4WyJwaGFzZXMiXVtwaGFzZV9pbmRleF0pO2ZpcnN0WyJmYXVsdCJdPSJBRlRFUl9DT01NSVRfQkVGT1JFX1JFU1BPTlNFIjt4WyJwaGFzZXMiXT1bZmlyc3QseyJraW5kIjoiUkVMT0FEIn0sY2xvbmUoZmlyc3QpXTtjcy5hcHBlbmQoeyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6bmFtZSwiaW5wdXRzIjp4fSkKIGV4YWN0X3JldHJ5KCJwcm92aWRlci1hZnRlci1yZWxvYWQtcmVwbGF5IiwicHJvdmlkZXItZXN0aW1hdGUtaW52b2ljZS1jcmVkaXQiKQogZXhhY3RfcmV0cnkoInNoYXJlLWFmdGVyLXJlbG9hZC1yZXBsYXkiLCJzaGFyZS1jaGlsZC11c2UiKQogZXhhY3RfcmV0cnkoImxlYXNlLWFmdGVyLXJlbG9hZC1yZXBsYXkiLCJsZWFzZS1yZW5ldy1lcG9jaCIpCiBleGFjdF9yZXRyeSgiY29tcG91bmQtYWZ0ZXItcmVsb2FkLXJlcGxheSIsImNvbXBvdW5kLWFsbC1vci1ub25lIikKIGF0dGFjaygiY29tcG91bmQtcGFydGlhbC1jbGFpbS1yZXVzZSIsImNvbXBvdW5kLWFsbC1vci1ub25lIixsYW1iZGEgeDp4WyJwaGFzZXMiXS5hcHBlbmQoY2xvbmUoeFsicGhhc2VzIl1bMF1bImV2ZW50Il1bImNoaWxkcmVuIl1bMF0pfHsiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjExfSkpCiByZXR1cm4gY3MKClFfU0VNPXsiUTAxIjoiY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5IiwiUTAyIjoidG9rZW4gc3RvY2sgYW5kIGlycmV2ZXJzaWJsZSBnZW5lcmF0aW9uIHVzZSIsIlEwMyI6InRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93cyIsIlEwNCI6ImVuZXJneSBzdG9jayBhbmQgbWV0ZXJlZCBpcnJldmVyc2libGUgdXNlIiwiUTA1IjoicHJvdmlkZXIgYWNjb3VudCBlc3RpbWF0ZS10by1zZXR0bGVtZW50IGZhY3RzIiwiUTA2IjoiY29udGV4dC1zdG9yYWdlIHN0b2NrLCByZXNlcnZhdGlvbiwgZXZpY3Rpb24gYW5kIHJldXNlIiwiUTA3IjoicmV0cmlldmFsIHJlcXVlc3QgcmF0ZSwgcmVzZXJ2ZWQgc2VydmljZSBhbmQgZGVsaXZlcmVkIHVzZSIsIlEwOCI6ImNvbXBhY3Rpb24gd29yayBzdG9jaywgZmFpbGVkIHdvcmsgYW5kIG91dHB1dCByZXVzZSIsIlEwOSI6InRvb2wvc2VydmljZSBsZWFzZSBwbHVzIHJlc2VydmVkIGludm9jYXRpb24gY2FwYWNpdHkiLCJRMTAiOiJjaGlsZC13b3JrIHNoYXJlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbnQgcGVhayBvY2N1cGFuY3kiLCJRMTEiOiJmYWlsZWQvc3BlY3VsYXRpdmUgcmVzZXJ2YXRpb24gYW5kIGluY3VycmVkIG5vbnJlZnVuZCIsIlExMiI6ImV2YWx1YXRpb24vYWdncmVnYXRpb24gcmVzZXJ2YXRpb24gYW5kIGNoaWxkIGF0dHJpYnV0aW9uIiwiUTEzIjoiY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHJlbGVhc2UgYW5kIGluY3VycmVkIHVzZSIsIlExNCI6ImNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGUiLCJRMTUiOiJkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uIiwiUTE2Ijoic3Vic3RpdHV0aW9uIHJlbGVhc2UvcmVhY3F1aXJlIHdpdGggcmVzb3VyY2UgYmluZGluZyIsIlExNyI6ImxhdGUtcmVzdWx0IGluY3VycmVkIHdvcmsgYW5kIG5vIGF1dG9tYXRpYyByZWZ1bmQifQpMX1NFTT17IkwwMSI6InJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiIsIkwwMiI6InBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSIsIkwwMyI6InJlZnVuZGFibGUvbm9ucmVmdW5kYWJsZSBwYXJ0aXRpb24gZmFsc2lmaWVkIGJ5IGltcGxpY2l0IHJlZnVuZCIsIkwwNCI6ImxlYXNlIGdyYW50L29jY3VwYW5jeS9leHBpcnkvZXBvY2gvcmV2b2tlIGxpZmVjeWNsZSBmYWxzaWZpZWQgYnkgc3RhbGUgYXV0aG9yaXR5IiwiTDA1Ijoic2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MiLCJMMDYiOiJwYXJlbnQtY2hpbGQvc2libGluZyBjb25zZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IHJlbWludCBvciBvdmVyc3Vic2NyaXB0aW9uIiwiTDA3IjoiY29uY3VycmVudCByZXNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgYWRtaXR0aW5nIG92ZXJsYXBwaW5nIGNhcGFjaXR5IGFib3ZlIGNhcCIsIkwwOCI6ImVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyIsIkwwOSI6ImNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSB0aW1pbmcgZmFsc2lmaWVkIGJ5IHByZW1hdHVyZSByZWZ1bmQiLCJMMTAiOiJhY3Rvci9jb21taXQvd29ybGQvcmVzb3VyY2UgYXR0cmlidXRpb24gYW5kIHJlY29uY2lsaWF0aW9uIGZhbHNpZmllZCBieSBqb2luIG1pc21hdGNoIiwiTDExIjoicHJvdmlkZXIgY2hhcmdlIGZhY3RzIGRpc3RpbmN0IGZyb20gc2VtYW50aWMgY29uc3VtcHRpb24gZmFsc2lmaWVkIGJ5IGVxdWl2YWxlbmNlIiwiTDEyIjoiZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0KTl9BPXsiTDA0Ijp7IlEwMSIsIlEwMiIsIlEwNCIsIlEwNSIsIlEwNiIsIlEwOCIsIlExMSIsIlExMiIsIlExNCJ9LCJMMDYiOnsiUTAyIiwiUTA0IiwiUTA1IiwiUTA2IiwiUTA3IiwiUTA4IiwiUTE0In0sIkwxMSI6c2V0KCl9CkwxMV9ESVNUSU5DVElPTj17cTpmIntxfS9MMTEgQVBQTElDQUJMRToge1FfU0VNW3FdfSBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciIgZm9yIHEgaW4gUX0KZGVmIGI4X21hdHJpeCgpOgogY2VsbHM9W10KIGZvciBxIGluIFE6CiAgZm9yIGwgaW4gQjg6CiAgIGFwcGxpY2FibGU9cSBub3QgaW4gTl9BLmdldChsLHNldCgpKQogICBpZiBsPT0iTDExIjpyZWFzb249TDExX0RJU1RJTkNUSU9OW3FdCiAgIGVsc2U6cmVhc29uPShmIntxfS97bH0gQVBQTElDQUJMRToge1FfU0VNW3FdfTsge0xfU0VNW2xdfSIgaWYgYXBwbGljYWJsZSBlbHNlIGYie3F9L3tsfSBOX0EgcmVwcmVzZW50YXRpb24tbmV1dHJhbDoge1FfU0VNW3FdfSBoYXMgbm8ge0I4W2xdfSBzdGF0ZSBvciBsaWZlY3ljbGU7IG5vIHN0b3JhZ2UsIHNjaGVkdWxlciwgb3IgbWVjaGFuaXNtIGluZmVyZW5jZSIpCiAgIGNlbGxzLmFwcGVuZCh7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIgaWYgYXBwbGljYWJsZSBlbHNlICJOX0EiLCJsYXciOmwsInF1YW50aXR5IjpxLCJyZWFzb24iOnJlYXNvbn0pCiByZXR1cm4gY2VsbHMKCmRlZiBldmlkZW5jZV9kYWdfc3BlYygpOgogZWRnZXM9ewogICJST09UIjpbXSwiSVgiOlsiUk9PVCJdLCJJQyI6WyJST09UIl0sIklSWCI6WyJST09UIl0sIklSQyI6WyJST09UIl0sIklSViI6WyJST09UIl0sIklSUCI6WyJST09UIl0sCiAgIlJYIjpbIklYIiwiSVJYIl0sIlJDIjpbIklDIiwiSVJDIl0sIlJWIjpbIlJPT1QiLCJJUlYiXSwiSVIiOlsiSVgiLCJJQyIsIlJYIiwiUkMiLCJSViJdLAogICJSUCI6WyJJUiIsIklSUCJdLCJQRiI6WyJJUiIsIlJQIiwiUk9PVCJdLCJGIjpbIlBGIiwiSVIiLCJJWCIsIklDIiwiUk9PVCJdLAogICJPMSI6WyJGIiwiSVgiXSwiTzIiOlsiRiIsIklDIl0sIlYiOlsiRiIsIklSIiwiTzEiLCJPMiJdLCJFIjpbIlYiLCJGIiwiUEYiLCJJUiIsIk8xIiwiTzIiXX0KIHJldHVybiB7ImVkZ2VzIjpbeyJmcm9tIjphLCJ0byI6Yn0gZm9yIGEgaW4gc29ydGVkKGVkZ2VzKSBmb3IgYiBpbiBlZGdlc1thXV0sIm5vZGVzIjpbeyJpZCI6eCwia2luZCI6eyJST09UIjoiUFJFUkVHX1JPT1QiLCJJWCI6IlBST0RVQ0VSX0lERU5USVRZIiwiSUMiOiJQUk9EVUNFUl9JREVOVElUWSIsIklSWCI6IlJFVklFV0VSX0lERU5USVRZIiwiSVJDIjoiUkVWSUVXRVJfSURFTlRJVFkiLCJJUlYiOiJSRVZJRVdFUl9JREVOVElUWSIsIklSUCI6IlJFVklFV0VSX0lERU5USVRZIiwiUlgiOiJSRVZJRVciLCJSQyI6IlJFVklFVyIsIlJWIjoiUkVWSUVXIiwiSVIiOiJJTkRFUEVOREVOQ0VfUkVQT1JUIiwiUlAiOiJSRVZJRVciLCJQRiI6IlBSRUZSRUVaRSIsIkYiOiJGUkVFWkUiLCJPMSI6Ik9CU0VSVkFUSU9OIiwiTzIiOiJPQlNFUlZBVElPTiIsIlYiOiJWQUxJREFUSU9OIiwiRSI6IkVWSURFTkNFIn1beF19IGZvciB4IGluIHNvcnRlZChlZGdlcyldLCJyb290cyI6WyJST09UIl19CmRlZiBtYW5pZmVzdF9zcGVjKCk6CiBjcz1jb3JwdXNfdjIoKQogcmV0dXJuIHsiYWxnZWJyYSI6eyJpZCI6QUxHRUJSQSwibGF3X2tpbmRzIjpsaXN0KEtJTkRTKSwicGFyZW50X2NvbXBhdGliaWxpdHkiOltdLCJyZXByZXNlbnRhdGlvbl9uZXV0cmFsIjpUcnVlfSwiYjgiOnsibGF3cyI6QjgsIm1hdHJpeCI6YjhfbWF0cml4KCksInF1YW50aXRpZXMiOlF9LCJib3VuZGFyeSI6eyJub25jbGFpbXMiOlsiQlVER0VUX0dSQU5UU19DQVBBQklMSVRZIiwiQlVER0VUX0FDQ0VQVFNfUkVTVUxUUyIsIkJVREdFVF9BVVRIT1JJWkVTX0VGRkVDVFMiLCJJTVBMSUNJVF9DT05WRVJTSU9OIiwiU0NBTEFSX0NPTExBUFNFIiwiUFJPVklERVJfQ0hBUkdFX0VRVUlWQUxFTkNFIiwiQVVUT01BVElDX1JFRlVORCIsIkQwMDlfTElGRUNZQ0xFIiwiTUVDSEFOSVNNX09SX1BMQUNFTUVOVCJdLCJzY29wZV9ydWxlIjoiR0xPQkFMX0xFREdFUl9BQ1FVSVNJVElPTl9DSEFSR0VfRkFDVFNfU0VQQVJBVEVfRlJPTV9XT1JMRF9SRVNPVVJDRV9CSU5ESU5HX1BMQU5TIn0sImJ1ZGdldCI6eyJlbmdpbmVlcl9ob3Vyc19jYXAiOjk2LCJmYW1pbHlfY291bnQiOmxlbih7Y1siZmFtaWx5Il0gZm9yIGMgaW4gY3N9KSwibGF3X2NvdW50IjpsZW4oTEFXUyksInByb2plY3Rpb25fY291bnQiOjYsInJhd19zdWJjYXNlX2NvdW50IjpsZW4oY3MpLCJyaXNrX3RpZXIiOiJGVUxMIiwic3RvcF9kYXRlIjoiMjAyNi0wOC0zMCJ9LCJjYW5vbmljYWxpemF0aW9uIjp7ImR1cGxpY2F0ZV9rZXlzIjoiUkVKRUNUIiwiZW5jb2RpbmciOiJVVEYtOCIsImxheW91dCI6IlNPUlRFRF9DT01QQUNUX1RFUk1JTkFMX0xGIiwibm9ybWFsaXphdGlvbiI6Ik5GQyIsIm51bWJlcnMiOiJVNjRfTk9fRkxPQVQiLCJzdXJyb2dhdGVzIjoiUkVKRUNUIn0sImNhc2VzIjpjcywiZGVjaXNpb24iOnsiZnJvemVuIjpGYWxzZSwiaWQiOiJELTAwOCIsInN0YXR1cyI6Ik9QRU4ifSwiaGFybmVzc19jb21wbGV0aW9uIjp7ImJ5dGVfbGVuZ3RoIjo2MDcxLCJwYXRoIjoiZGVjaXNpb25zL2FnZW50LW5hdGl2ZS1oYXJuZXNzLWNvbXBsZXRpb24tdjEuanNvbiIsInNoYTI1NiI6ImQ3NjJjOWM1MDQwNDA2M2M0MWQ3YjBmM2ZmYTMxMTIyNjdkYTRmYzUwZDIyM2RjYzlhOTgxNTcwNWRhOWYyOWYifSwiaW5kZXBlbmRlbmNlIjp7ImRlY2lzaXZlX3ByaW1hcnlfaGVscGVycyI6WyJhcHBseV9sZWFmIiwiY2xhc3NpZnlfZXZlbnQiLCJldmVudF9qb2luIiwiYXV0aG9yaXR5X2N1cnJlbnQiLCJkZXJpdmUiXSwiaW5kZXBlbmRlbnRfcGF0aCI6Im9yYWNsZV9vYnNlcnZhdGlvbiBhbmQgbGF3LXNwZWNpZmljIHJlbGF0aW9ucyBkbyBub3QgY2FsbCBkZWNpc2l2ZSBwcmltYXJ5IGhlbHBlcnMifSwiaW52YWxpZGF0aW9uIjoiVjFfVjJfSU5WQUxJREFURURfUFJFX0ZSRUVaRV9FVklERU5DRSIsImxhd3MiOmxpc3QoTEFXUyksInByb3ZlbmFuY2UiOnsiYXJ0aWZhY3RfYmFzZW5hbWUiOiJkMDA4LWJ1ZGdldC1tYW5pZmVzdC12MS5qc29uIiwiZGFnIjpldmlkZW5jZV9kYWdfc3BlYygpLCJwcmVyZWdfcm9vdF9zY2hlbWEiOiJEMDA4LVBSRVJFRy1ST09ULTMiLCJzdGFnZSI6IkNfUFJFUkVHSVNUUkFUSU9OIiwic3RhdHVzIjoiTk9fUk9PVF9PUl9FVklERU5DRV9ZRVQifSwicHJvdmVuYW5jZV9xdWFsaWZpZWQiOkZhbHNlLCJwcm92ZW5hbmNlX3N0YXR1cyI6IlNUQUdFX0NfUFJFUkVHSVNURVJFRF9OT19BQ1RVQUxfUk9PVF9PUl9FVklERU5DRSIsInB5dGhvbl9ncmFtbWFyIjpQWVRIT05fR1JBTU1BUiwic2NoZW1hIjoiRDAwOC1CVURHRVQtTUFOSUZFU1QtMyIsInNlbWFudGljX2xvY2tzIjp7Im9fc2VtYW50aWNfYm9keSI6eyJieXRlX2xlbmd0aCI6NDcwMzIwLCJtYW5pZmVzdF9zaGEyNTZfZmllbGQiOiJOT1JNQUxJWkVEX1RPX0BNQU5JRkVTVF9TSEEyNTZAIiwic2NoZW1hIjoiRDAwOC1PLVNFTUFOVElDLUJPRFktTE9DSy0xIiwic2hhMjU2IjoiMTgyMmQxNmI4MDIwZjhlMmFmZTE4ZjYyZWI4ZGM5ZjNhZjNjODEyMjczYTBkMDJkZDgwNjdjOWMwOTQwMTllNiIsInNoYXBlIjoiY2Fub25pY2FsIHNlbWFudGljX2JvZHkgb2JqZWN0IHdpdGggcmVhbCBtYW5pZmVzdF9zaGEyNTYgcmVwbGFjZWQgYnkgQE1BTklGRVNUX1NIQTI1NkAifSwic3RhZ2VfYl9zZW1hbnRpY19wcm9qZWN0aW9uIjp7ImFjY2VwdGVkX2NvdW50Ijo2MCwiYnl0ZV9sZW5ndGgiOjQ2NjQwNCwicmF3X2NvdW50Ijo2OSwic2NoZW1hIjoiRDAwOC1TVEFHRS1CLVNFTUFOVElDLVBST0pFQ1RJT04tMSIsInNoYTI1NiI6IjVlZDkxYTg5NjQ1M2E1ZGVjMTM5ZTFhNmNmOGUyMmYxYWU5MTEzNzAyMmRmOWRiNTljZjlkYTEyMzc5ZDA1NWIiLCJzaGFwZSI6Im9yZGVyZWQgY2FzZSBsaXN0OyBhY2NlcHRlZD17Y2FzZV9pZCxpbnB1dF9zaGEyNTYsY2xhc3NpZmljYXRpb24sbGF3cyxvYnNlcnZhdGlvbn07IHN0cnVjdHVyYWw9e2Nhc2VfaWQsaW5wdXRfc2hhMjU2LGNsYXNzaWZpY2F0aW9ufSIsInN0YWdlX2IiOiJQQVNTIiwic3RydWN0dXJhbF9yZWplY3RfY291bnQiOjl9fSwic2VtYW50aWNfc3RhZ2UiOiJCX1BBU1MifQoKIyBjbG9zZWQgcmF3IHN0YXRlIGFuZCBwcmltYXJ5IHRyYW5zaXRpb24gcGF0aAoKZGVmIHZhbGlkYXRlX2RpbWVuc2lvbihkKToKIGV4YWN0KGQseyJkaW1lbnNpb25faWQiLCJraW5kIiwib3duZXJfaWQiLCJwYXJlbnRfYnVkZ2V0X2lkIiwic2NvcGUiLCJzdGF0ZSIsInVuaXRfaWQifSwiZGltZW5zaW9uIik7W3RleHQoZFtrXSxrKSBmb3IgayBpbiAoImRpbWVuc2lvbl9pZCIsImtpbmQiLCJvd25lcl9pZCIsInNjb3BlIiwidW5pdF9pZCIpXQogaWYgZFsia2luZCJdIG5vdCBpbiBLSU5EUyBvciBkWyJzY29wZSJdIT0iR0xPQkFMIiBvciBkWyJ1bml0X2lkIl0gbm90IGluIFVOSVRfQ09NUEFUIG9yIGRbImtpbmQiXSBub3QgaW4gVU5JVF9DT01QQVRbZFsidW5pdF9pZCJdXTpyYWlzZSBNYW5pZmVzdEVycm9yKCJkaW1lbnNpb24ga2luZC91bml0L3Njb3BlIikKIGlmIGRbInBhcmVudF9idWRnZXRfaWQiXSBpcyBub3QgTm9uZTp0ZXh0KGRbInBhcmVudF9idWRnZXRfaWQiXSwicGFyZW50IikKIHM9ZFsic3RhdGUiXQogaWYgZFsia2luZCJdPT0iQ09OU1VNQUJMRSI6CiAgZXhhY3Qocyx7ImNvbnN1bWVkIiwiZXhwaXJlZCIsImZyZWUiLCJpc3N1ZWQiLCJub25yZWZ1bmRhYmxlIiwicmVmdW5kYWJsZSIsInJlc2VydmVkIiwidW5rbm93bl9kaXNwdXRlZCJ9LCJjb25zdW1hYmxlIik7W3VpbnQodixrKSBmb3Igayx2IGluIHMuaXRlbXMoKV0KICBpZiBzWyJmcmVlIl0rc1sicmVzZXJ2ZWQiXStzWyJjb25zdW1lZCJdK3NbImV4cGlyZWQiXStzWyJ1bmtub3duX2Rpc3B1dGVkIl0hPXNbImlzc3VlZCJdIG9yIHNbInJlZnVuZGFibGUiXStzWyJub25yZWZ1bmRhYmxlIl0hPXNbImNvbnN1bWVkIl06cmFpc2UgTWFuaWZlc3RFcnJvcigiaXNzdWVkIGNvbnNlcnZhdGlvbiIpCiBlbGlmIGRbImtpbmQiXT09IlBFQUsiOgogIGV4YWN0KHMseyJjYXAiLCJjdXJyZW50IiwiaGlnaF93YXRlciIsInJlc2VydmVkIn0sInBlYWsiKTtbdWludCh2LGspIGZvciBrLHYgaW4gcy5pdGVtcygpXQogIGlmIHNbImN1cnJlbnQiXStzWyJyZXNlcnZlZCJdPnNbImNhcCJdIG9yIHNbImhpZ2hfd2F0ZXIiXTxzWyJjdXJyZW50Il06cmFpc2UgTWFuaWZlc3RFcnJvcigicGVhayBjb25zZXJ2YXRpb24iKQogZWxpZiBkWyJraW5kIl09PSJSQVRFIjoKICBleGFjdChzLHsiYXZhaWxhYmxlIiwiY2FwIiwibGFzdF9yZWZpbGxfYXQiLCJyZWZpbGwiLCJyZXNlcnZlZCIsIndpbmRvdyJ9LCJyYXRlIik7W3VpbnQodixrKSBmb3Igayx2IGluIHMuaXRlbXMoKV0KICBpZiBub3Qgc1sid2luZG93Il0gb3Igc1siYXZhaWxhYmxlIl0+c1siY2FwIl0gb3Igc1sicmVzZXJ2ZWQiXT5zWyJhdmFpbGFibGUiXTpyYWlzZSBNYW5pZmVzdEVycm9yKCJyYXRlIGNvbnNlcnZhdGlvbiIpCiBlbGlmIGRbImtpbmQiXT09IkxFQVNFIjoKICBleGFjdChzLHsiYWN0aXZlIiwiY2FwYWNpdHkiLCJleHBpcmVkIiwiaGlzdG9yeSJ9LCJsZWFzZSBzdGF0ZSIpO3VpbnQoc1siY2FwYWNpdHkiXSwiY2FwYWNpdHkiKQogIGlkcz1bXQogIGZvciB4IGluIHNbImFjdGl2ZSJdOmV4YWN0KHgseyJlcG9jaCIsImV4cGlyZXNfYXQiLCJsZWFzZV9pZCIsInVzZXMifSwiYWN0aXZlIGxlYXNlIik7W3VpbnQoeFtrXSxrKSBmb3IgayBpbiAoImVwb2NoIiwiZXhwaXJlc19hdCIsInVzZXMiKV07dGV4dCh4WyJsZWFzZV9pZCJdLCJsZWFzZSIpO2lkcy5hcHBlbmQoeFsibGVhc2VfaWQiXSkKICBmb3IgeCBpbiBzWyJoaXN0b3J5Il06ZXhhY3QoeCx7ImVuZCIsImVwb2NoIiwiZXhwaXJlc19hdCIsImxlYXNlX2lkIiwidXNlcyJ9LCJsZWFzZSBoaXN0b3J5Iik7W3VpbnQoeFtrXSxrKSBmb3IgayBpbiAoImVwb2NoIiwiZXhwaXJlc19hdCIsInVzZXMiKV07dGV4dCh4WyJsZWFzZV9pZCJdLCJsZWFzZSIpO2lkcy5hcHBlbmQoeFsibGVhc2VfaWQiXSkKICBmb3IgeCBpbiBzWyJleHBpcmVkIl06dGV4dCh4LCJleHBpcmVkIGxlYXNlIikKICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKSBvciBsZW4oc1siYWN0aXZlIl0pPnNbImNhcGFjaXR5Il0gb3IgYW55KHhbImVuZCJdIG5vdCBpbiAoIkVYUElSRUQiLCJSRVZPS0VEIikgZm9yIHggaW4gc1siaGlzdG9yeSJdKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJsZWFzZSBpbnZlbnRvcnkiKQogZWxzZToKICBleGFjdChzLHsiY2FwYWNpdHkiLCJjaGlsZHJlbiIsInJldm9rZWRfaGlzdG9yeSJ9LCJzaGFyZSBzdGF0ZSIpO3VpbnQoc1siY2FwYWNpdHkiXSwiY2FwYWNpdHkiKTtpZHM9W10KICBmb3IgeCBpbiBzWyJjaGlsZHJlbiJdOmV4YWN0KHgseyJhbGxvY2F0ZWQiLCJjaGlsZF9pZCIsInJlc2VydmVkIiwidXNlZCJ9LCJzaGFyZSBjaGlsZCIpO1t1aW50KHhba10saykgZm9yIGsgaW4gKCJhbGxvY2F0ZWQiLCJyZXNlcnZlZCIsInVzZWQiKV07dGV4dCh4WyJjaGlsZF9pZCJdLCJjaGlsZCIpO2lkcy5hcHBlbmQoeFsiY2hpbGRfaWQiXSkKICBmb3IgeCBpbiBzWyJyZXZva2VkX2hpc3RvcnkiXTpleGFjdCh4LHsiYWxsb2NhdGVkIiwiY2hpbGRfaWQiLCJyZXNlcnZlZCIsInVzZWQifSwic2hhcmUgaGlzdG9yeSIpO1t1aW50KHhba10saykgZm9yIGsgaW4gKCJhbGxvY2F0ZWQiLCJyZXNlcnZlZCIsInVzZWQiKV07dGV4dCh4WyJjaGlsZF9pZCJdLCJjaGlsZCIpO2lkcy5hcHBlbmQoeFsiY2hpbGRfaWQiXSkKICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKSBvciBzdW0oeFsiYWxsb2NhdGVkIl0gZm9yIHggaW4gc1siY2hpbGRyZW4iXSkrc3VtKHhbInVzZWQiXSBmb3IgeCBpbiBzWyJyZXZva2VkX2hpc3RvcnkiXSk+c1siY2FwYWNpdHkiXSBvciBhbnkoeFsicmVzZXJ2ZWQiXSt4WyJ1c2VkIl0+eFsiYWxsb2NhdGVkIl0gZm9yIHggaW4gc1siY2hpbGRyZW4iXSk6cmFpc2UgTWFuaWZlc3RFcnJvcigic2hhcmUgaW52ZW50b3J5IikKZGVmIHZhbGlkYXRlX3Byb3ZpZGVyX2ZhY3RzKHhzKToKIGZhY3RzPWluZGV4KHhzLCJmYWN0X2lkIiwicHJvdmlkZXIgZmFjdCIpO29wcz1zZXQoKTtzdWNjPXt9CiBmb3IgZiBpbiB4czoKICBleGFjdChmLHsiYW1vdW50IiwiZmFjdF9pZCIsIm9wZXJhdGlvbl9pZCIsInByaW9yX2ZhY3RfaWQiLCJwcm92aWRlcl9hY2NvdW50X2lkIiwic3RhZ2UifSwicHJvdmlkZXIgZmFjdCIpO3VpbnQoZlsiYW1vdW50Il0sImFtb3VudCIpO1t0ZXh0KGZba10saykgZm9yIGsgaW4gKCJmYWN0X2lkIiwib3BlcmF0aW9uX2lkIiwicHJvdmlkZXJfYWNjb3VudF9pZCIsInN0YWdlIildCiAgaWYgZlsib3BlcmF0aW9uX2lkIl0gaW4gb3BzIG9yIGZbInN0YWdlIl0gbm90IGluICgiRVNUSU1BVEUiLCJPQlNFUlZFRCIsIlVOS05PV04iLCJTRVRUTEVEIiwiQ1JFRElUIik6cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvdmlkZXIgaWRlbnRpdHkvc3RhZ2UiKQogIG9wcy5hZGQoZlsib3BlcmF0aW9uX2lkIl0pO3ByaW9yPWZbInByaW9yX2ZhY3RfaWQiXQogIGlmIHByaW9yIGlzIE5vbmU6CiAgIGlmIGZbInN0YWdlIl0hPSJFU1RJTUFURSI6cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvdmlkZXIgcm9vdCIpCiAgZWxzZToKICAgaWYgcHJpb3Igbm90IGluIGZhY3RzIG9yIHByaW9yIGluIHN1Y2M6cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvdmlkZXIgcHJpb3IvZm9yayIpCiAgIG9sZD1mYWN0c1twcmlvcl07c3VjY1twcmlvcl09ZlsiZmFjdF9pZCJdCiAgIGlmIG9sZFsicHJvdmlkZXJfYWNjb3VudF9pZCJdIT1mWyJwcm92aWRlcl9hY2NvdW50X2lkIl06cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvdmlkZXIgYWNjb3VudCBjb250aW51aXR5IikKICAgbGVnYWw9KG9sZFsic3RhZ2UiXT09IkVTVElNQVRFIiBhbmQgZlsic3RhZ2UiXSBpbiAoIk9CU0VSVkVEIiwiVU5LTk9XTiIpKSBvciAob2xkWyJzdGFnZSJdPT0iVU5LTk9XTiIgYW5kIGZbInN0YWdlIl09PSJPQlNFUlZFRCIgYW5kIGZbImFtb3VudCJdPD1vbGRbImFtb3VudCJdKSBvciAob2xkWyJzdGFnZSJdPT0iT0JTRVJWRUQiIGFuZCBmWyJzdGFnZSJdPT0iU0VUVExFRCIgYW5kIGZbImFtb3VudCJdPT1vbGRbImFtb3VudCJdKSBvciAob2xkWyJzdGFnZSJdIGluICgiU0VUVExFRCIsIkNSRURJVCIpIGFuZCBmWyJzdGFnZSJdPT0iQ1JFRElUIikKICAgaWYgbm90IGxlZ2FsOnJhaXNlIE1hbmlmZXN0RXJyb3IoInByb3ZpZGVyIGxpZmVjeWNsZSIpCiBmb3IgZiBpbiB4czoKICBpZiBmWyJzdGFnZSJdPT0iVU5LTk9XTiIgYW5kIGZbImZhY3RfaWQiXSBub3QgaW4gc3VjYzpjb250aW51ZQogIGlmIGZbInN0YWdlIl09PSJDUkVESVQiOgogICBjaGFpbj1bXTt4PWYKICAgd2hpbGUgeFsicHJpb3JfZmFjdF9pZCJdIGlzIG5vdCBOb25lOmNoYWluLmFwcGVuZCh4KTt4PWZhY3RzW3hbInByaW9yX2ZhY3RfaWQiXV0KICAgc2V0dGxlZD1uZXh0KCh6IGZvciB6IGluIHJldmVyc2VkKGNoYWluK1t4XSkgaWYgelsic3RhZ2UiXT09IlNFVFRMRUQiKSxOb25lKQogICBpZiBzZXR0bGVkIGlzIE5vbmUgb3Igc3VtKHpbImFtb3VudCJdIGZvciB6IGluIGNoYWluIGlmIHpbInN0YWdlIl09PSJDUkVESVQiKT5zZXR0bGVkWyJhbW91bnQiXTpyYWlzZSBNYW5pZmVzdEVycm9yKCJwcm92aWRlciBjcmVkaXQgYm91bmQiKQpkZWYgZGltZW5zaW9uX2NhcGFjaXR5KGQpOgogcz1kWyJzdGF0ZSJdO3JldHVybiBzWyJpc3N1ZWQiXSBpZiBkWyJraW5kIl09PSJDT05TVU1BQkxFIiBlbHNlIHNbImNhcCJdIGlmIGRbImtpbmQiXSBpbiAoIlBFQUsiLCJSQVRFIikgZWxzZSBzWyJjYXBhY2l0eSJdCmRlZiBwYXJlbnRfcmVsYXRpb24oY2hpbGQscGFyZW50KToKIHJlbGF0aW9uPShjaGlsZFsia2luZCJdLGNoaWxkWyJ1bml0X2lkIl0scGFyZW50WyJraW5kIl0scGFyZW50WyJ1bml0X2lkIl0pCiByZXR1cm4gY2hpbGRbIm93bmVyX2lkIl09PXBhcmVudFsib3duZXJfaWQiXSBhbmQgKChjaGlsZFsia2luZCJdLGNoaWxkWyJ1bml0X2lkIl0pPT0ocGFyZW50WyJraW5kIl0scGFyZW50WyJ1bml0X2lkIl0pIG9yIHJlbGF0aW9uIGluIFBBUkVOVF9DT01QQVQpIGFuZCBkaW1lbnNpb25fY2FwYWNpdHkoY2hpbGQpPD1kaW1lbnNpb25fY2FwYWNpdHkocGFyZW50KQpkZWYgdmFsaWRhdGVfc3RhdGUocyxub3c9Tm9uZSxpbml0aWFsPUZhbHNlKToKIGV4YWN0KHMseyJkaW1lbnNpb25zIiwicHJvdmlkZXJfZmFjdHMiLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIiwicmV0YWluZWQiLCJ0b21ic3RvbmVzIiwid29ybGRzIn0sInN0YXRlIik7ZGltcz1pbmRleChzWyJkaW1lbnNpb25zIl0sImRpbWVuc2lvbl9pZCIsImRpbWVuc2lvbiIpCiBpZiBpbml0aWFsIGFuZCAoc1sicmV0YWluZWQiXSBvciBzWyJ0b21ic3RvbmVzIl0pOnJhaXNlIE1hbmlmZXN0RXJyb3IoImluaXRpYWwgcmVjb3ZlcnkgaW52ZW50b3J5IGZvcmJpZGRlbiIpCiBmb3IgZCBpbiBzWyJkaW1lbnNpb25zIl06dmFsaWRhdGVfZGltZW5zaW9uKGQpCiBmb3IgZCBpbiBzWyJkaW1lbnNpb25zIl06CiAgc2Vlbj1zZXQoKTtwPWRbInBhcmVudF9idWRnZXRfaWQiXQogIGlmIHAgaXMgbm90IE5vbmUgYW5kIChwIG5vdCBpbiBkaW1zIG9yIG5vdCBwYXJlbnRfcmVsYXRpb24oZCxkaW1zW3BdKSk6cmFpc2UgTWFuaWZlc3RFcnJvcigidHlwZWQgcGFyZW50IHJlbGF0aW9uIikKICB3aGlsZSBwIGlzIG5vdCBOb25lOgogICBpZiBwIG5vdCBpbiBkaW1zIG9yIHAgaW4gc2VlbjpyYWlzZSBNYW5pZmVzdEVycm9yKCJkaW1lbnNpb24gcGFyZW50L2N5Y2xlIikKICAgc2Vlbi5hZGQocCk7cD1kaW1zW3BdWyJwYXJlbnRfYnVkZ2V0X2lkIl0KIGZvciBwYXJlbnQgaW4gc1siZGltZW5zaW9ucyJdOgogIGNoaWxkcmVuPVtkIGZvciBkIGluIHNbImRpbWVuc2lvbnMiXSBpZiBkWyJwYXJlbnRfYnVkZ2V0X2lkIl09PXBhcmVudFsiZGltZW5zaW9uX2lkIl1dCiAgaWYgc3VtKGRpbWVuc2lvbl9jYXBhY2l0eShkKSBmb3IgZCBpbiBjaGlsZHJlbik+ZGltZW5zaW9uX2NhcGFjaXR5KHBhcmVudCk6cmFpc2UgTWFuaWZlc3RFcnJvcigicGFyZW50IGRlbGVnYXRlZCBjYXBhY2l0eSIpCiB3b3JsZHM9aW5kZXgoc1sid29ybGRzIl0sIndvcmxkX2lkIiwid29ybGQiKQogZm9yIHcgaW4gc1sid29ybGRzIl06ZXhhY3Qodyx7IndvcmxkX2lkIn0sIndvcmxkIik7dGV4dCh3WyJ3b3JsZF9pZCJdLCJ3b3JsZCBpZCIpCiBwbGFucz1pbmRleChzWyJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIl0sInBsYW5faWQiLCJwbGFuIikKIGZvciBwIGluIHNbInJlc291cmNlX2JpbmRpbmdfcGxhbnMiXToKICBleGFjdChwLHsiY29tbWl0bWVudF9pZCIsImRpbWVuc2lvbl9pZCIsIm93bmVyX2lkIiwicGxhbl9pZCIsInJlc291cmNlX2lkIiwid29ybGRfaWQifSwicGxhbiIpO1t0ZXh0KHBba10saykgZm9yIGsgaW4gcF0KICBpZiBwWyJkaW1lbnNpb25faWQiXSBub3QgaW4gZGltcyBvciBwWyJ3b3JsZF9pZCJdIG5vdCBpbiB3b3JsZHMgb3IgcFsib3duZXJfaWQiXSE9ZGltc1twWyJkaW1lbnNpb25faWQiXV1bIm93bmVyX2lkIl06cmFpc2UgTWFuaWZlc3RFcnJvcigicGxhbiBqb2luIikKIHZhbGlkYXRlX3Byb3ZpZGVyX2ZhY3RzKHNbInByb3ZpZGVyX2ZhY3RzIl0pCiBmb3IgciBpbiBzWyJyZXRhaW5lZCJdOgogIGV4YWN0KHIseyJhdHRlbXB0ZWRfYXQiLCJiaW5kaW5nX3NoYTI1NiIsImNhdXNhbF9vcGVyYXRpb25faWQiLCJjbGFpbWVkX2lkcyIsImV4cGlyZXNfYXQiLCJvcGVyYXRpb25faWQiLCJvdXRjb21lIn0sInJldGFpbmVkIik7ZGlnZXN0KHJbImJpbmRpbmdfc2hhMjU2Il0sImJpbmRpbmciKTtbdWludChyW2tdLGspIGZvciBrIGluICgiYXR0ZW1wdGVkX2F0IiwiZXhwaXJlc19hdCIpXTtbdGV4dChyW2tdLGspIGZvciBrIGluICgiY2F1c2FsX29wZXJhdGlvbl9pZCIsIm9wZXJhdGlvbl9pZCIsIm91dGNvbWUiKV0KICBpZiBub3QgaXNpbnN0YW5jZShyWyJjbGFpbWVkX2lkcyJdLGxpc3QpIG9yIHJbImNsYWltZWRfaWRzIl0hPXNvcnRlZChzZXQoclsiY2xhaW1lZF9pZHMiXSkpIG9yIHJbIm9wZXJhdGlvbl9pZCJdIG5vdCBpbiByWyJjbGFpbWVkX2lkcyJdOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJldGFpbmVkIGNsYWltZWQgaWRzIikKICBmb3IgeCBpbiByWyJjbGFpbWVkX2lkcyJdOnRleHQoeCwiY2xhaW1lZCBpZCIpCiBmb3IgdCBpbiBzWyJ0b21ic3RvbmVzIl06CiAgZXhhY3QodCx7ImJpbmRpbmdfc2hhMjU2IiwiY2F1c2FsX29wZXJhdGlvbl9pZCIsImNsYWltZWRfaWRzIiwib3BlcmF0aW9uX2lkIiwib3V0Y29tZSIsInJldGlyZWRfYXQifSwidG9tYiIpO2RpZ2VzdCh0WyJiaW5kaW5nX3NoYTI1NiJdLCJiaW5kaW5nIik7dWludCh0WyJyZXRpcmVkX2F0Il0sInJldGlyZWQiKTtbdGV4dCh0W2tdLGspIGZvciBrIGluICgiY2F1c2FsX29wZXJhdGlvbl9pZCIsIm9wZXJhdGlvbl9pZCIsIm91dGNvbWUiKV0KICBpZiBub3QgaXNpbnN0YW5jZSh0WyJjbGFpbWVkX2lkcyJdLGxpc3QpIG9yIHRbImNsYWltZWRfaWRzIl0hPXNvcnRlZChzZXQodFsiY2xhaW1lZF9pZHMiXSkpIG9yIHRbIm9wZXJhdGlvbl9pZCJdIG5vdCBpbiB0WyJjbGFpbWVkX2lkcyJdOnJhaXNlIE1hbmlmZXN0RXJyb3IoInRvbWIgY2xhaW1lZCBpZHMiKQogIGZvciB4IGluIHRbImNsYWltZWRfaWRzIl06dGV4dCh4LCJjbGFpbWVkIGlkIikKIHJvcHM9W3hbIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIHNbInJldGFpbmVkIl1dO3RvcHM9W3hbIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIHNbInRvbWJzdG9uZXMiXV0KIGlmIGxlbihyb3BzKSE9bGVuKHNldChyb3BzKSkgb3IgbGVuKHRvcHMpIT1sZW4oc2V0KHRvcHMpKSBvciBzZXQocm9wcykmc2V0KHRvcHMpIG9yIChub3cgaXMgbm90IE5vbmUgYW5kIGFueSh0WyJyZXRpcmVkX2F0Il0+bm93IGZvciB0IGluIHNbInRvbWJzdG9uZXMiXSkpOnJhaXNlIE1hbmlmZXN0RXJyb3IoIm9wZXJhdGlvbiBpbnZlbnRvcnkvdGltZSIpCiByZXR1cm4gZGltcyxwbGFucyx3b3JsZHMKZGVmIHZhbGlkYXRlX2F1dGhvcml0eShhKToKIGV4YWN0KGEsc2V0KEFVVEhfQ09OVEVYVCl8eyJoYW5kb2ZmIiwidmVyZGljdCJ9LCJhdXRob3JpdHkiKTtleGFjdChhWyJoYW5kb2ZmIl0sc2V0KEFVVEhfQ09OVEVYVCksImhhbmRvZmYiKQogZm9yIGsgaW4gQVVUSF9DT05URVhUOnVpbnQoYVtrXSxrKSBpZiBrPT0iZ2VuZXJhdGlvbiIgZWxzZSB0ZXh0KGFba10saykKIGZvciBrIGluIEFVVEhfQ09OVEVYVDp1aW50KGFbImhhbmRvZmYiXVtrXSxrKSBpZiBrPT0iZ2VuZXJhdGlvbiIgZWxzZSB0ZXh0KGFbImhhbmRvZmYiXVtrXSxrKQogaWYgYVsidmVyZGljdCJdIG5vdCBpbiAoIkFMTE9XIiwiREVOWSIpOnJhaXNlIE1hbmlmZXN0RXJyb3IoImF1dGhvcml0eSB2ZXJkaWN0IikKZGVmIHZhbGlkYXRlX2V2ZW50KGUpOgogaWYgbm90IGlzaW5zdGFuY2UoZSxkaWN0KSBvciBlLmdldCgib3BlcmF0aW9uIikgbm90IGluIE9QX0ZJRUxEUyBvciBzZXQoZSkhPUJBU0VfRVZFTlR8T1BfRklFTERTW2VbIm9wZXJhdGlvbiJdXSBvciBGT1JCSURERU5fSU5QVVRfS0VZUyZzZXQoZSk6cmFpc2UgTWFuaWZlc3RFcnJvcigiZXZlbnQgc2hhcGUvZW51bSIpCiBmb3IgayBpbiBCQVNFX0VWRU5ULXsiYW1vdW50In06dGV4dChlW2tdLGspCiB1aW50KGVbImFtb3VudCJdLCJhbW91bnQiKTtvcD1lWyJvcGVyYXRpb24iXQogaWYgb3A9PSJDT01QT1VORCI6CiAgaWYgbm90IGlzaW5zdGFuY2UoZVsiY2hpbGRyZW4iXSxsaXN0KSBvciBub3QgZVsiY2hpbGRyZW4iXTpyYWlzZSBNYW5pZmVzdEVycm9yKCJjb21wb3VuZCBzaGFwZSIpCiAgZm9yIHggaW4gZVsiY2hpbGRyZW4iXTpleGFjdCh4LHsiYXV0aG9yaXR5IiwiZXZlbnQifSwiY2hpbGQiKTt2YWxpZGF0ZV9hdXRob3JpdHkoeFsiYXV0aG9yaXR5Il0pO3ZhbGlkYXRlX2V2ZW50KHhbImV2ZW50Il0pCiAgaWRzPVtlWyJvcGVyYXRpb25faWQiXV0rW3hbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIGVbImNoaWxkcmVuIl1dCiAgaWYgbGVuKGlkcykhPWxlbihzZXQoaWRzKSk6cmFpc2UgTWFuaWZlc3RFcnJvcigiY29tcG91bmQgb3BlcmF0aW9uIGlkZW50aXR5IikKIGVsaWYgb3A9PSJSRUxFQVNFIiBhbmQgZVsicmVsZWFzZV9mcm9tIl0gbm90IGluICgiUkVTRVJWRUQiLCJDVVJSRU5UIik6cmFpc2UgTWFuaWZlc3RFcnJvcigicmVsZWFzZV9mcm9tIikKIGVsc2U6CiAgZm9yIGsgaW4gT1BfRklFTERTW29wXToKICAgaWYgayBpbiAoInJlZnVuZGFibGUiLCJjYWNoZV9mcmVzaCIpIGFuZCBub3QgaXNpbnN0YW5jZShlW2tdLGJvb2wpOnJhaXNlIE1hbmlmZXN0RXJyb3IoImV2ZW50IGJvb2wiKQogICBlbGlmIGsgaW4gKCJlcG9jaCIsImV4cGlyZXNfYXQiKTp1aW50KGVba10saykKICAgZWxpZiBrIG5vdCBpbiAoInByaW9yX2ZhY3RfaWQiLCkgYW5kIGsgbm90IGluICgicmVmdW5kYWJsZSIsImNhY2hlX2ZyZXNoIik6dGV4dChlW2tdLGspCiAgaWYgInByaW9yX2ZhY3RfaWQiIGluIGUgYW5kIGVbInByaW9yX2ZhY3RfaWQiXSBpcyBub3QgTm9uZTp0ZXh0KGVbInByaW9yX2ZhY3RfaWQiXSwicHJpb3IiKQpkZWYgZXZlbnRfYmluZGluZyhlKTpyZXR1cm4gdnNoYShlKQpkZWYgY2xhaW1lZF9pZHMoZSk6CiBpZHM9e2VbIm9wZXJhdGlvbl9pZCJdfTtvcD1lWyJvcGVyYXRpb24iXQogaWYgb3Auc3RhcnRzd2l0aCgiUFJPVklERVJfIik6aWRzLmFkZChlWyJwcm92aWRlcl9mYWN0X2lkIl0pCiBpZiBvcD09IlNIQVJFX0FMTE9DQVRFIjppZHMuYWRkKGVbImNoaWxkX2lkIl0pCiBpZiBvcD09IkxFQVNFX0dSQU5UIjppZHMuYWRkKGVbIm9wZXJhdGlvbl9pZCJdKQogaWYgb3A9PSJDT01QT1VORCI6CiAgZm9yIGNoaWxkIGluIGVbImNoaWxkcmVuIl06CiAgIGlmIGNoaWxkWyJldmVudCJdWyJvcGVyYXRpb24iXT09IkNPTVBPVU5EIjpyYWlzZSBNYW5pZmVzdEVycm9yKCJuZXN0ZWQgY29tcG91bmQgZm9yYmlkZGVuIikKICAgaWRzLnVwZGF0ZShjbGFpbWVkX2lkcyhjaGlsZFsiZXZlbnQiXSkpCiByZXR1cm4gc29ydGVkKGlkcykKZGVmIHZhbGlkYXRlX3RyYWNlX25hbWVzcGFjZXMoaW5wdXRzKToKICIiIkV4YWN0IG91dGVyIHJlcGxheSBpcyByZXNvbHZlZCBiZWZvcmUgY2xhaW1zIGFyZSB0cmVhdGVkIGFzIG5ldy4iIiIKIG93bmVycz17fTthdHRlbXB0cz17fQogZGVmIGluaXRpYWxfY2xhaW0oeCk6CiAgdGV4dCh4LCJpbml0aWFsIGNsYWltIikKICBpZiB4IGluIG93bmVyczpyYWlzZSBNYW5pZmVzdEVycm9yKCJnbG9iYWwgaWRlbnRpdHkgY29sbGlzaW9uIikKICBvd25lcnNbeF09IklOSVRJQUwiCiBmb3IgZiBpbiBpbnB1dHNbImluaXRpYWxfc3RhdGUiXVsicHJvdmlkZXJfZmFjdHMiXTppbml0aWFsX2NsYWltKGZbIm9wZXJhdGlvbl9pZCJdKTtpbml0aWFsX2NsYWltKGZbImZhY3RfaWQiXSkKIGZvciBkIGluIGlucHV0c1siaW5pdGlhbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl06CiAgaWYgZFsia2luZCJdPT0iU0hBUkUiOgogICBmb3IgeCBpbiBkWyJzdGF0ZSJdWyJjaGlsZHJlbiJdK2RbInN0YXRlIl1bInJldm9rZWRfaGlzdG9yeSJdOmluaXRpYWxfY2xhaW0oeFsiY2hpbGRfaWQiXSkKICBpZiBkWyJraW5kIl09PSJMRUFTRSI6CiAgIGZvciB4IGluIGRbInN0YXRlIl1bImFjdGl2ZSJdK2RbInN0YXRlIl1bImhpc3RvcnkiXTppbml0aWFsX2NsYWltKHhbImxlYXNlX2lkIl0pCiBmb3IgcGggaW4gaW5wdXRzWyJwaGFzZXMiXToKICBpZiBwaD09eyJraW5kIjoiUkVMT0FEIn06Y29udGludWUKICBlPXBoWyJldmVudCJdO29pZD1lWyJvcGVyYXRpb25faWQiXTtiaW5kaW5nPWV2ZW50X2JpbmRpbmcoZSk7Y2xhaW1zPWNsYWltZWRfaWRzKGUpO29sZD1hdHRlbXB0cy5nZXQob2lkKQogIGlmIG9sZCBpcyBub3QgTm9uZToKICAgaWYgb2xkIT0oYmluZGluZyxjbGFpbXMpOnJhaXNlIE1hbmlmZXN0RXJyb3IoImNoYW5nZWQgb3IgcGFydGlhbCByZXBsYXkgYmluZGluZyIpCiAgIGNvbnRpbnVlCiAgaWYgYW55KHggaW4gb3duZXJzIGZvciB4IGluIGNsYWltcyk6cmFpc2UgTWFuaWZlc3RFcnJvcigiY3Jvc3Mtb3BlcmF0aW9uIGNsYWltZWQgaWRlbnRpdHkgcmV1c2UiKQogIGF0dGVtcHRzW29pZF09KGJpbmRpbmcsY2xhaW1zKQogIGZvciB4IGluIGNsYWltczpvd25lcnNbeF09b2lkCmRlZiBhdXRob3JpdHlfY3VycmVudChhLGUpOnJldHVybiBhWyJ2ZXJkaWN0Il09PSJBTExPVyIgYW5kIGFbInJpZ2h0Il09PSJVU0VfQlVER0VUIiBhbmQgYWxsKGFba109PWFbImhhbmRvZmYiXVtrXSBmb3IgayBpbiBBVVRIX0NPTlRFWFQpIGFuZCAoYVsiYWN0b3JfaWQiXSxhWyJjb21taXRtZW50X2lkIl0sYVsid29ybGRfaWQiXSk9PShlWyJhY3Rvcl9pZCJdLGVbImNvbW1pdG1lbnRfaWQiXSxlWyJ3b3JsZF9pZCJdKQpkZWYgZXZlbnRfam9pbihzdGF0ZSxlKToKIGRpbXMscGxhbnMsd29ybGRzPXZhbGlkYXRlX3N0YXRlKHN0YXRlKTtwPXBsYW5zLmdldChlWyJwbGFuX2lkIl0pO2Q9ZGltcy5nZXQoZVsiZGltZW5zaW9uX2lkIl0pCiByZXR1cm4gZCBpcyBub3QgTm9uZSBhbmQgZVsid29ybGRfaWQiXSBpbiB3b3JsZHMgYW5kIHAgaXMgbm90IE5vbmUgYW5kIChwWyJkaW1lbnNpb25faWQiXSxwWyJ3b3JsZF9pZCJdLHBbInJlc291cmNlX2lkIl0scFsib3duZXJfaWQiXSxwWyJjb21taXRtZW50X2lkIl0pPT0oZVsiZGltZW5zaW9uX2lkIl0sZVsid29ybGRfaWQiXSxlWyJyZXNvdXJjZV9pZCJdLGVbIm93bmVyX2lkIl0sZVsiY29tbWl0bWVudF9pZCJdKSBhbmQgZVsib3duZXJfaWQiXT09ZFsib3duZXJfaWQiXQpkZWYgcmV0YWluKHN0YXRlLGUsc3RhdHVzLG5vdyxjYXVzYWw9Tm9uZSxjbGFpbXM9Tm9uZSk6c3RhdGVbInJldGFpbmVkIl0uYXBwZW5kKHsiYXR0ZW1wdGVkX2F0Ijpub3csImJpbmRpbmdfc2hhMjU2IjpldmVudF9iaW5kaW5nKGUpLCJjYXVzYWxfb3BlcmF0aW9uX2lkIjpjYXVzYWwgb3IgZVsib3BlcmF0aW9uX2lkIl0sImNsYWltZWRfaWRzIjpjbGFpbXMgb3IgY2xhaW1lZF9pZHMoZSksImV4cGlyZXNfYXQiOm5vdysyMCwib3BlcmF0aW9uX2lkIjplWyJvcGVyYXRpb25faWQiXSwib3V0Y29tZSI6c3RhdHVzfSkKZGVmIGxlYXNlX2V4cGlyZShzLG5vdyk6CiBmb3IgeCBpbiBsaXN0KHNbImFjdGl2ZSJdKToKICBpZiBub3c+PXhbImV4cGlyZXNfYXQiXTpzWyJhY3RpdmUiXS5yZW1vdmUoeCk7c1siZXhwaXJlZCJdLmFwcGVuZCh4WyJsZWFzZV9pZCJdKTtzWyJoaXN0b3J5Il0uYXBwZW5kKHsqKngsImVuZCI6IkVYUElSRUQifSkKZGVmIHByb3ZpZGVyX2FwcGx5KHN0YXRlLGUpOgogc3RhZ2U9ZVsib3BlcmF0aW9uIl0ucmVtb3ZlcHJlZml4KCJQUk9WSURFUl8iKTthY2NvdW50PWVbInByb3ZpZGVyX2FjY291bnRfaWQiXTtwcmlvcj1lWyJwcmlvcl9mYWN0X2lkIl07ZmFjdHM9e3hbImZhY3RfaWQiXTp4IGZvciB4IGluIHN0YXRlWyJwcm92aWRlcl9mYWN0cyJdfTtvbGQ9ZmFjdHMuZ2V0KHByaW9yKSBpZiBwcmlvciBpcyBub3QgTm9uZSBlbHNlIE5vbmU7c3VjY2Vzc29ycz17eFsicHJpb3JfZmFjdF9pZCJdIGZvciB4IGluIHN0YXRlWyJwcm92aWRlcl9mYWN0cyJdIGlmIHhbInByaW9yX2ZhY3RfaWQiXSBpcyBub3QgTm9uZX0KIGlmIGVbInByb3ZpZGVyX2ZhY3RfaWQiXSBpbiBmYWN0cyBvciBhbnkoeFsib3BlcmF0aW9uX2lkIl09PWVbIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIHN0YXRlWyJwcm92aWRlcl9mYWN0cyJdKSBvciBwcmlvciBpbiBzdWNjZXNzb3JzOnJldHVybiAiREVOWV9BRE1JU1NJT04iCiBsZWdhbD1zdGFnZT09IkVTVElNQVRFIiBhbmQgcHJpb3IgaXMgTm9uZQogaWYgb2xkIGlzIG5vdCBOb25lIGFuZCBvbGRbInByb3ZpZGVyX2FjY291bnRfaWQiXT09YWNjb3VudDoKICBsZWdhbHw9b2xkWyJzdGFnZSJdPT0iRVNUSU1BVEUiIGFuZCBzdGFnZSBpbiAoIk9CU0VSVkVEIiwiVU5LTk9XTiIpCiAgbGVnYWx8PW9sZFsic3RhZ2UiXT09IlVOS05PV04iIGFuZCBzdGFnZT09Ik9CU0VSVkVEIiBhbmQgZVsiYW1vdW50Il08PW9sZFsiYW1vdW50Il0KICBsZWdhbHw9b2xkWyJzdGFnZSJdPT0iT0JTRVJWRUQiIGFuZCBzdGFnZT09IlNFVFRMRUQiIGFuZCBlWyJhbW91bnQiXT09b2xkWyJhbW91bnQiXQogIGxlZ2FsfD1vbGRbInN0YWdlIl0gaW4gKCJTRVRUTEVEIiwiQ1JFRElUIikgYW5kIHN0YWdlPT0iQ1JFRElUIgogaWYgbm90IGxlZ2FsOnJldHVybiAiREVOWV9BRE1JU1NJT04iCiBpZiBzdGFnZT09IkNSRURJVCI6CiAgeD1vbGQ7Y3JlZGl0cz1lWyJhbW91bnQiXQogIHdoaWxlIHggYW5kIHhbInN0YWdlIl09PSJDUkVESVQiOmNyZWRpdHMrPXhbImFtb3VudCJdO3g9ZmFjdHMuZ2V0KHhbInByaW9yX2ZhY3RfaWQiXSkKICBpZiB4IGlzIE5vbmUgb3IgeFsic3RhZ2UiXSE9IlNFVFRMRUQiIG9yIGNyZWRpdHM+eFsiYW1vdW50Il06cmV0dXJuICJERU5ZX0FETUlTU0lPTiIKIHN0YXRlWyJwcm92aWRlcl9mYWN0cyJdLmFwcGVuZCh7ImFtb3VudCI6ZVsiYW1vdW50Il0sImZhY3RfaWQiOmVbInByb3ZpZGVyX2ZhY3RfaWQiXSwib3BlcmF0aW9uX2lkIjplWyJvcGVyYXRpb25faWQiXSwicHJpb3JfZmFjdF9pZCI6cHJpb3IsInByb3ZpZGVyX2FjY291bnRfaWQiOmFjY291bnQsInN0YWdlIjpzdGFnZX0pO3JldHVybiAiVU5LTk9XTl9SRUNPTkNJTEUiIGlmIHN0YWdlPT0iVU5LTk9XTiIgZWxzZSAiQVBQTElFRCIKZGVmIGFwcGx5X2xlYWYoc3RhdGUsZSxub3cpOgogc3RhdGU9Y2xvbmUoc3RhdGUpO2Q9bmV4dCgoeCBmb3IgeCBpbiBzdGF0ZVsiZGltZW5zaW9ucyJdIGlmIHhbImRpbWVuc2lvbl9pZCJdPT1lWyJkaW1lbnNpb25faWQiXSksTm9uZSk7b3A9ZVsib3BlcmF0aW9uIl07YT1lWyJhbW91bnQiXQogaWYgb3AgaW4gVU5TVVBQT1JURURfT1BTOnJldHVybiAiVU5TVVBQT1JURUQiLHN0YXRlCiBpZiBvcD09IlRPTUIiOgogIHI9bmV4dCgoeCBmb3IgeCBpbiBzdGF0ZVsicmV0YWluZWQiXSBpZiB4WyJvcGVyYXRpb25faWQiXT09ZS5nZXQoInRhcmdldF9vcGVyYXRpb25faWQiKSksTm9uZSkKICBpZiByIGlzIE5vbmU6cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKICBzdGF0ZVsicmV0YWluZWQiXS5yZW1vdmUocik7c3RhdGVbInRvbWJzdG9uZXMiXS5hcHBlbmQoeyJiaW5kaW5nX3NoYTI1NiI6clsiYmluZGluZ19zaGEyNTYiXSwiY2F1c2FsX29wZXJhdGlvbl9pZCI6ZVsib3BlcmF0aW9uX2lkIl0sImNsYWltZWRfaWRzIjpyWyJjbGFpbWVkX2lkcyJdLCJvcGVyYXRpb25faWQiOnJbIm9wZXJhdGlvbl9pZCJdLCJvdXRjb21lIjpyWyJvdXRjb21lIl0sInJldGlyZWRfYXQiOm5vd30pO3JldGFpbihzdGF0ZSxlLCJBUFBMSUVEIixub3cpO3JldHVybiAiQVBQTElFRCIsc3RhdGUKIGlmIG9wLnN0YXJ0c3dpdGgoIlBST1ZJREVSXyIpOgogIHN0YXR1cz1wcm92aWRlcl9hcHBseShzdGF0ZSxlKQogIGlmIHN0YXR1cyBpbiAoIkFQUExJRUQiLCJVTktOT1dOX1JFQ09OQ0lMRSIpOnJldGFpbihzdGF0ZSxlLHN0YXR1cyxub3cpCiAgcmV0dXJuIHN0YXR1cyxzdGF0ZQogaWYgb3AgaW4gKCJDQUNIRV9SRVVTRSIsIkZBSUwiLCJERVBFTkRFTkNZX1JPTExCQUNLIiwiTEFURV9SRVNVTFQiLCJXT1JMRF9ESVNDQVJEIiwiQ0FOQ0VMX1JFUVVFU1QiKToKICByZXRhaW4oc3RhdGUsZSwiQVBQTElFRCIsbm93KTtyZXR1cm4gIkFQUExJRUQiLHN0YXRlCiBpZiBkIGlzIE5vbmU6cmV0dXJuICJVTlNVUFBPUlRFRCIsc3RhdGUKIHM9ZFsic3RhdGUiXQogaWYgZFsia2luZCJdPT0iQ09OU1VNQUJMRSI6CiAgaWYgb3AgaW4gKCJSRVNFUlZFIiwiRVNDUk9XIik6CiAgIGlmIHNbImZyZWUiXTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIHNbImZyZWUiXS09YTtzWyJyZXNlcnZlZCJdKz1hCiAgZWxpZiBvcD09IkFDUVVJUkUiOgogICBleHRyYT1tYXgoMCxhLXNbInJlc2VydmVkIl0pCiAgIGlmIHNbImZyZWUiXTxleHRyYTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixzdGF0ZQogICBzWyJyZXNlcnZlZCJdLT1taW4oYSxzWyJyZXNlcnZlZCJdKTtzWyJmcmVlIl0tPWV4dHJhO3NbImNvbnN1bWVkIl0rPWE7c1sicmVmdW5kYWJsZSIgaWYgZS5nZXQoInJlZnVuZGFibGUiLEZhbHNlKSBlbHNlICJub25yZWZ1bmRhYmxlIl0rPWEKICBlbGlmIG9wIGluICgiUkVMRUFTRSIsIkNBTkNFTF9FRkZFQ1RJVkUiKToKICAgaWYgc1sicmVzZXJ2ZWQiXTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIHNbInJlc2VydmVkIl0tPWE7c1siZnJlZSJdKz1hCiAgZWxpZiBvcD09IlJFRlVORCI6CiAgIGlmIHNbInJlZnVuZGFibGUiXTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIHNbInJlZnVuZGFibGUiXS09YTtzWyJjb25zdW1lZCJdLT1hO3NbImZyZWUiXSs9YQogIGVsc2U6cmV0dXJuICJVTlNVUFBPUlRFRCIsc3RhdGUKIGVsaWYgZFsia2luZCJdPT0iUEVBSyI6CiAgaWYgb3A9PSJSRVNFUlZFIjoKICAgaWYgc1siY3VycmVudCJdK3NbInJlc2VydmVkIl0rYT5zWyJjYXAiXTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixzdGF0ZQogICBzWyJyZXNlcnZlZCJdKz1hCiAgZWxpZiBvcD09IkFDUVVJUkUiOgogICBpZiBzWyJyZXNlcnZlZCJdPGE6cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKICAgc1sicmVzZXJ2ZWQiXS09YTtzWyJjdXJyZW50Il0rPWE7c1siaGlnaF93YXRlciJdPW1heChzWyJoaWdoX3dhdGVyIl0sc1siY3VycmVudCJdKQogIGVsaWYgb3A9PSJSRUxFQVNFIjoKICAgYnVja2V0PWUuZ2V0KCJyZWxlYXNlX2Zyb20iLCJDVVJSRU5UIik7a2V5PSJyZXNlcnZlZCIgaWYgYnVja2V0PT0iUkVTRVJWRUQiIGVsc2UgImN1cnJlbnQiCiAgIGlmIHNba2V5XTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIHNba2V5XS09YQogIGVsc2U6cmV0dXJuICJVTlNVUFBPUlRFRCIsc3RhdGUKIGVsaWYgZFsia2luZCJdPT0iUkFURSI6CiAgaWYgbm93PHNbImxhc3RfcmVmaWxsX2F0Il06cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKICBpZiBvcD09IlJFRklMTCI6CiAgIHdpbmRvd3M9KG5vdy1zWyJsYXN0X3JlZmlsbF9hdCJdKS8vc1sid2luZG93Il0KICAgaWYgd2luZG93czpzWyJhdmFpbGFibGUiXT1taW4oc1siY2FwIl0sc1siYXZhaWxhYmxlIl0rd2luZG93cypzWyJyZWZpbGwiXSk7c1sibGFzdF9yZWZpbGxfYXQiXSs9d2luZG93cypzWyJ3aW5kb3ciXQogIGVsaWYgb3A9PSJSRVNFUlZFIjoKICAgaWYgc1siYXZhaWxhYmxlIl0tc1sicmVzZXJ2ZWQiXTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIHNbInJlc2VydmVkIl0rPWEKICBlbGlmIG9wPT0iQUNRVUlSRSI6CiAgIGlmIHNbInJlc2VydmVkIl0+PWE6c1sicmVzZXJ2ZWQiXS09YTtzWyJhdmFpbGFibGUiXS09YQogICBlbGlmIHNbImF2YWlsYWJsZSJdLXNbInJlc2VydmVkIl0+PWE6c1siYXZhaWxhYmxlIl0tPWEKICAgZWxzZTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixzdGF0ZQogIGVsaWYgb3A9PSJSRUxFQVNFIjoKICAgaWYgc1sicmVzZXJ2ZWQiXTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIHNbInJlc2VydmVkIl0tPWEKICBlbHNlOnJldHVybiAiVU5TVVBQT1JURUQiLHN0YXRlCiBlbGlmIGRbImtpbmQiXT09IkxFQVNFIjoKICBsZWFzZV9leHBpcmUocyxub3cpCiAgaWYgb3A9PSJMRUFTRV9HUkFOVCI6CiAgIGlmIGVbImVwb2NoIl0hPTEgb3IgZVsiZXhwaXJlc19hdCJdPD1ub3cgb3IgbGVuKHNbImFjdGl2ZSJdKT49c1siY2FwYWNpdHkiXSBvciBhbnkoZVsib3BlcmF0aW9uX2lkIl09PXhbImxlYXNlX2lkIl0gZm9yIHggaW4gc1siYWN0aXZlIl0rc1siaGlzdG9yeSJdKTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixzdGF0ZQogICBzWyJhY3RpdmUiXS5hcHBlbmQoeyJlcG9jaCI6MSwiZXhwaXJlc19hdCI6ZVsiZXhwaXJlc19hdCJdLCJsZWFzZV9pZCI6ZVsib3BlcmF0aW9uX2lkIl0sInVzZXMiOjB9KQogIGVsc2U6CiAgIGxlYXNlPW5leHQoKHggZm9yIHggaW4gc1siYWN0aXZlIl0gaWYgeFsibGVhc2VfaWQiXT09ZS5nZXQoImxlYXNlX2lkIikpLE5vbmUpCiAgIGlmIGxlYXNlIGlzIE5vbmU6cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKICAgaWYgb3A9PSJMRUFTRV9VU0UiOgogICAgaWYgZVsiZXBvY2giXSE9bGVhc2VbImVwb2NoIl06cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKICAgIGxlYXNlWyJ1c2VzIl0rPTEKICAgZWxpZiBvcD09IkxFQVNFX1JFVk9LRSI6c1siYWN0aXZlIl0ucmVtb3ZlKGxlYXNlKTtzWyJoaXN0b3J5Il0uYXBwZW5kKHsqKmxlYXNlLCJlbmQiOiJSRVZPS0VEIn0pCiAgIGVsaWYgb3A9PSJMRUFTRV9SRU5FVyI6CiAgICBpZiBlWyJlcG9jaCJdIT1sZWFzZVsiZXBvY2giXSsxIG9yIGVbImV4cGlyZXNfYXQiXTw9bWF4KG5vdyxsZWFzZVsiZXhwaXJlc19hdCJdKTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixzdGF0ZQogICAgbGVhc2VbImVwb2NoIl09ZVsiZXBvY2giXTtsZWFzZVsiZXhwaXJlc19hdCJdPWVbImV4cGlyZXNfYXQiXQogICBlbHNlOnJldHVybiAiVU5TVVBQT1JURUQiLHN0YXRlCiBlbHNlOgogIGNoaWxkPW5leHQoKHggZm9yIHggaW4gc1siY2hpbGRyZW4iXSBpZiB4WyJjaGlsZF9pZCJdPT1lLmdldCgiY2hpbGRfaWQiKSksTm9uZSk7aGlzdG9yaWNhbD1zdW0oeFsidXNlZCJdIGZvciB4IGluIHNbInJldm9rZWRfaGlzdG9yeSJdKQogIGlmIG9wPT0iU0hBUkVfQUxMT0NBVEUiOgogICBpZiBhbnkoZVsiY2hpbGRfaWQiXT09eFsiY2hpbGRfaWQiXSBmb3IgeCBpbiBzWyJjaGlsZHJlbiJdK3NbInJldm9rZWRfaGlzdG9yeSJdKSBvciBzdW0oeFsiYWxsb2NhdGVkIl0gZm9yIHggaW4gc1siY2hpbGRyZW4iXSkraGlzdG9yaWNhbCthPnNbImNhcGFjaXR5Il06cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKICAgc1siY2hpbGRyZW4iXS5hcHBlbmQoeyJhbGxvY2F0ZWQiOmEsImNoaWxkX2lkIjplWyJjaGlsZF9pZCJdLCJyZXNlcnZlZCI6MCwidXNlZCI6MH0pCiAgZWxpZiBjaGlsZCBpcyBOb25lOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgZWxpZiBvcD09IlNIQVJFX1JFU0VSVkUiOgogICBpZiBjaGlsZFsidXNlZCJdK2NoaWxkWyJyZXNlcnZlZCJdK2E+Y2hpbGRbImFsbG9jYXRlZCJdOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIGNoaWxkWyJyZXNlcnZlZCJdKz1hCiAgZWxpZiBvcD09IlNIQVJFX0FDUVVJUkUiOgogICBpZiBjaGlsZFsicmVzZXJ2ZWQiXTxhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgIGNoaWxkWyJyZXNlcnZlZCJdLT1hO2NoaWxkWyJ1c2VkIl0rPWEKICBlbGlmIG9wPT0iU0hBUkVfUkVWT0tFIjpzWyJjaGlsZHJlbiJdLnJlbW92ZShjaGlsZCk7c1sicmV2b2tlZF9oaXN0b3J5Il0uYXBwZW5kKHsiYWxsb2NhdGVkIjpjaGlsZFsiYWxsb2NhdGVkIl0sImNoaWxkX2lkIjpjaGlsZFsiY2hpbGRfaWQiXSwicmVzZXJ2ZWQiOmNoaWxkWyJyZXNlcnZlZCJdLCJ1c2VkIjpjaGlsZFsidXNlZCJdfSkKICBlbHNlOnJldHVybiAiVU5TVVBQT1JURUQiLHN0YXRlCiByZXRhaW4oc3RhdGUsZSwiQVBQTElFRCIsbm93KTtyZXR1cm4gIkFQUExJRUQiLHN0YXRlCmRlZiBjbGFzc2lmeV9ldmVudChzdGF0ZSxwaGFzZSk6CiBhPXBoYXNlWyJhdXRob3JpdHkiXTtlPXBoYXNlWyJldmVudCJdO25vdz1waGFzZVsibG9naWNhbF9ub3ciXTtvbGQ9bmV4dCgoeCBmb3IgeCBpbiBzdGF0ZVsicmV0YWluZWQiXStzdGF0ZVsidG9tYnN0b25lcyJdIGlmIHhbIm9wZXJhdGlvbl9pZCJdPT1lWyJvcGVyYXRpb25faWQiXSksTm9uZSkKIGlmIG9sZDpyZXR1cm4gKCgiUkVQTEFZIiBpZiBvbGQgaW4gc3RhdGVbInJldGFpbmVkIl0gYW5kIG5vdzxvbGRbImV4cGlyZXNfYXQiXSBlbHNlICJSRUNPTkNJTEVfRVhQSVJFRCIpIGlmIG9sZFsiYmluZGluZ19zaGEyNTYiXT09ZXZlbnRfYmluZGluZyhlKSBhbmQgb2xkWyJjbGFpbWVkX2lkcyJdPT1jbGFpbWVkX2lkcyhlKSBlbHNlICJERU5ZX0FETUlTU0lPTiIpLHN0YXRlCiBpZiBub3QgYXV0aG9yaXR5X2N1cnJlbnQoYSxlKTpyZXR1cm4gIkRFTllfQVVUSE9SSVRZIixzdGF0ZQogaWYgbm90IGV2ZW50X2pvaW4oc3RhdGUsZSk6cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsc3RhdGUKIGlmIGVbIm9wZXJhdGlvbiJdPT0iQ09NUE9VTkQiOgogIGlkcz1bZVsib3BlcmF0aW9uX2lkIl1dK1t4WyJldmVudCJdWyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdXTtpbnZlbnRvcnk9e3hbIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIHN0YXRlWyJyZXRhaW5lZCJdK3N0YXRlWyJ0b21ic3RvbmVzIl19CiAgaWYgbGVuKGlkcykhPWxlbihzZXQoaWRzKSkgb3IgaW52ZW50b3J5JnNldChpZHMpOnJldHVybiAiREVOWV9BRE1JU1NJT04iLHN0YXRlCiAgdHJpYWw9Y2xvbmUoc3RhdGUpO291dGNvbWVzPVtdCiAgZm9yIGNoaWxkIGluIGVbImNoaWxkcmVuIl06CiAgIGNlPWNoaWxkWyJldmVudCJdCiAgIGlmIG5vdCBhdXRob3JpdHlfY3VycmVudChjaGlsZFsiYXV0aG9yaXR5Il0sY2UpOmNoaWxkX3N0YXR1cz0iREVOWV9BVVRIT1JJVFkiCiAgIGVsaWYgbm90IGV2ZW50X2pvaW4odHJpYWwsY2UpOmNoaWxkX3N0YXR1cz0iREVOWV9BRE1JU1NJT04iCiAgIGVsc2U6Y2hpbGRfc3RhdHVzLHRyaWFsMj1hcHBseV9sZWFmKHRyaWFsLGNlLG5vdyk7dHJpYWw9dHJpYWwyIGlmIGNoaWxkX3N0YXR1cz09IkFQUExJRUQiIGVsc2UgdHJpYWwKICAgb3V0Y29tZXMuYXBwZW5kKGNoaWxkX3N0YXR1cykKICBzdGF0dXM9IkFQUExJRUQiIGlmIGFsbCh4PT0iQVBQTElFRCIgZm9yIHggaW4gb3V0Y29tZXMpIGVsc2UgIkRFTllfQURNSVNTSU9OIjtvdXQ9dHJpYWwgaWYgc3RhdHVzPT0iQVBQTElFRCIgZWxzZSBjbG9uZShzdGF0ZSk7Y2hpbGRfaWRzPXt4WyJldmVudCJdWyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdfTtvdXRbInJldGFpbmVkIl09W3ggZm9yIHggaW4gb3V0WyJyZXRhaW5lZCJdIGlmIHhbIm9wZXJhdGlvbl9pZCJdIG5vdCBpbiBjaGlsZF9pZHNdCiAgY2xhaW1zPWNsYWltZWRfaWRzKGUpCiAgZm9yIGNoaWxkLGNoaWxkX3N0YXR1cyBpbiB6aXAoZVsiY2hpbGRyZW4iXSxvdXRjb21lcyk6cmV0YWluKG91dCxjaGlsZFsiZXZlbnQiXSxjaGlsZF9zdGF0dXMsbm93LGVbIm9wZXJhdGlvbl9pZCJdLGNsYWltcykKICByZXRhaW4ob3V0LGUsc3RhdHVzLG5vdyxjbGFpbXM9Y2xhaW1zKTtyZXR1cm4gc3RhdHVzLG91dAogcmV0dXJuIGFwcGx5X2xlYWYoc3RhdGUsZSxub3cpCkBwdWJsaWMKZGVmIGRlcml2ZShpbnB1dHMpOgogZXhhY3QoaW5wdXRzLHsiaW5pdGlhbF9zdGF0ZSIsInBoYXNlcyJ9LCJpbnB1dHMiKTt2YWxpZGF0ZV9zdGF0ZShpbnB1dHNbImluaXRpYWxfc3RhdGUiXSwwLGluaXRpYWw9VHJ1ZSk7dmFsaWRhdGVfdHJhY2VfbmFtZXNwYWNlcyhpbnB1dHMpO3N0YXRlPWNsb25lKGlucHV0c1siaW5pdGlhbF9zdGF0ZSJdKTtyb3dzPVtdO2xhc3Rfbm93PTA7ZnJlc2g9e2s6c2V0KCkgZm9yIGsgaW4gKCJncmFudF9yZWYiLCJleGVjdXRpb25faWQiLCJhY3RpdmF0aW9uX2lkIiwidmFsaWRhdGlvbl9pZCIsImludm9jYXRpb25fbm9uY2UiLCJmcmVzaG5lc3NfcmVmIil9CiBpZiBub3QgaXNpbnN0YW5jZShpbnB1dHNbInBoYXNlcyJdLGxpc3QpIG9yIG5vdCBpbnB1dHNbInBoYXNlcyJdOnJhaXNlIE1hbmlmZXN0RXJyb3IoInBoYXNlcyIpCiBmb3IgcGggaW4gaW5wdXRzWyJwaGFzZXMiXToKICBiZWZvcmU9Y2xvbmUoc3RhdGUpCiAgaWYgcGg9PXsia2luZCI6IlJFTE9BRCJ9OnN0YXRlPXBhcnNlX2J5dGVzKGNhbm9uaWNhbChzdGF0ZSkpO3Jvd3MuYXBwZW5kKHsiYWZ0ZXIiOmNsb25lKHN0YXRlKSwiYmVmb3JlIjpiZWZvcmUsImRlbHRhX2FwcGxpZWQiOkZhbHNlLCJraW5kIjoiUkVMT0FEIiwicmVzcG9uc2VfdmlzaWJsZSI6VHJ1ZSwic3RhdHVzIjpOb25lfSk7Y29udGludWUKICBleGFjdChwaCx7ImF1dGhvcml0eSIsImV2ZW50IiwiZmF1bHQiLCJraW5kIiwibG9naWNhbF9ub3cifSwicGhhc2UiKTt2YWxpZGF0ZV9hdXRob3JpdHkocGhbImF1dGhvcml0eSJdKTt2YWxpZGF0ZV9ldmVudChwaFsiZXZlbnQiXSk7dWludChwaFsibG9naWNhbF9ub3ciXSwibm93IikKICBpZiBwaFsibG9naWNhbF9ub3ciXTxsYXN0X25vdzpyYWlzZSBNYW5pZmVzdEVycm9yKCJub25tb25vdG9uaWMgdGltZSIpCiAgbGFzdF9ub3c9cGhbImxvZ2ljYWxfbm93Il0KICBpZiBwaFsia2luZCJdIT0iQVBQTFkiIG9yIHBoWyJmYXVsdCJdIG5vdCBpbiAoIk5PTkUiLCJCRUZPUkVfQ09NTUlUIiwiQUZURVJfQ09NTUlUX0JFRk9SRV9SRVNQT05TRSIpOnJhaXNlIE1hbmlmZXN0RXJyb3IoInBoYXNlIGVudW0iKQogIGV4aXN0aW5nPW5leHQoKHggZm9yIHggaW4gc3RhdGVbInJldGFpbmVkIl0rc3RhdGVbInRvbWJzdG9uZXMiXSBpZiB4WyJvcGVyYXRpb25faWQiXT09cGhbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdKSxOb25lKQogIGlmIGV4aXN0aW5nIGlzIE5vbmU6CiAgIGF1dGhvcml0aWVzPVtwaFsiYXV0aG9yaXR5Il1dKyhbeFsiYXV0aG9yaXR5Il0gZm9yIHggaW4gcGhbImV2ZW50Il0uZ2V0KCJjaGlsZHJlbiIsW10pXSBpZiBwaFsiZXZlbnQiXVsib3BlcmF0aW9uIl09PSJDT01QT1VORCIgZWxzZSBbXSkKICAgZm9yIGEgaW4gYXV0aG9yaXRpZXM6CiAgICBmb3IgayBpbiBmcmVzaDoKICAgICBpZiBhW2tdIGluIGZyZXNoW2tdOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJlcGVhdGVkIGZyZXNobmVzcyBuYW1lc3BhY2UgIitrKQogICAgIGZyZXNoW2tdLmFkZChhW2tdKQogIHN0YXR1cyxhZnRlcj1jbGFzc2lmeV9ldmVudChzdGF0ZSxwaCkKICBmaXJzdD1ub3QgYW55KHhbIm9wZXJhdGlvbl9pZCJdPT1waFsiZXZlbnQiXVsib3BlcmF0aW9uX2lkIl0gZm9yIHggaW4gYmVmb3JlWyJyZXRhaW5lZCJdK2JlZm9yZVsidG9tYnN0b25lcyJdKQogIGlmIHBoWyJmYXVsdCJdPT0iQkVGT1JFX0NPTU1JVCIgYW5kIGZpcnN0IGFuZCBzdGF0dXMhPSJERU5ZX0FVVEhPUklUWSI6CiAgIGFmdGVyPWNsb25lKGJlZm9yZSk7cmV0YWluKGFmdGVyLHBoWyJldmVudCJdLCJCRUZPUkVfQ09NTUlUIixwaFsibG9naWNhbF9ub3ciXSk7c3RhdHVzPSJCRUZPUkVfQ09NTUlUIgogIGVsaWYgZmlyc3QgYW5kIHBoWyJldmVudCJdWyJvcGVyYXRpb24iXSE9IkNPTVBPVU5EIiBhbmQgbm90IGFueSh4WyJvcGVyYXRpb25faWQiXT09cGhbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIGFmdGVyWyJyZXRhaW5lZCJdKTpyZXRhaW4oYWZ0ZXIscGhbImV2ZW50Il0sc3RhdHVzLHBoWyJsb2dpY2FsX25vdyJdKQogIHZpc2libGU9cGhbImZhdWx0Il0gbm90IGluICgiQkVGT1JFX0NPTU1JVCIsIkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiKSBvciBzdGF0dXM9PSJERU5ZX0FVVEhPUklUWSIKICB2YWxpZGF0ZV9zdGF0ZShhZnRlcixwaFsibG9naWNhbF9ub3ciXSk7c3RhdGU9YWZ0ZXI7cm93cy5hcHBlbmQoeyJhZnRlciI6Y2xvbmUoc3RhdGUpLCJiZWZvcmUiOmJlZm9yZSwiZGVsdGFfYXBwbGllZCI6YWZ0ZXIhPWJlZm9yZSwia2luZCI6IkFQUExZIiwicmVzcG9uc2VfdmlzaWJsZSI6dmlzaWJsZSwic3RhdHVzIjpzdGF0dXN9KQogcmV0dXJuIHsiZmluYWxfc3RhdGUiOnN0YXRlLCJpbnB1dF9zaGEyNTYiOnZzaGEoaW5wdXRzKSwicGhhc2VzIjpyb3dzfQoKIyBJbmRlcGVuZGVudCB3aG9sZS1zdGF0ZSByZXBsYXkgYW5kIGxhdyByZWxhdGlvbnMgc2hhcmUgb25seSBjYW5vbmljYWwgcHJpbWl0aXZlcyBhbmQgcmF3IHZhbGlkYXRvcnMuCmRlZiBvcmFjbGVfc3RlcChpbWFnZSxldmVudCxub3cpOgogIiIiSW5kZXBlbmRlbnQgZXF1YXRpb25zOiBubyBwcmltYXJ5IGNsYXNzaWZpZXIvYXBwbGllci9oZWxwZXIgY2FsbHMuIiIiCiBvdXQ9Y2xvbmUoaW1hZ2UpO29wPWV2ZW50WyJvcGVyYXRpb24iXTtuPWV2ZW50WyJhbW91bnQiXTtkcz17eFsiZGltZW5zaW9uX2lkIl06eCBmb3IgeCBpbiBvdXRbImRpbWVuc2lvbnMiXX07ZD1kcy5nZXQoZXZlbnRbImRpbWVuc2lvbl9pZCJdKQogZGVmIGtlZXAoc3RhdHVzKToKICBpZiBzdGF0dXM9PSJBUFBMSUVEIjpvdXRbInJldGFpbmVkIl0uYXBwZW5kKHsiYXR0ZW1wdGVkX2F0Ijpub3csImJpbmRpbmdfc2hhMjU2Ijp2c2hhKGV2ZW50KSwiY2F1c2FsX29wZXJhdGlvbl9pZCI6ZXZlbnRbIm9wZXJhdGlvbl9pZCJdLCJjbGFpbWVkX2lkcyI6Y2xhaW1lZF9pZHMoZXZlbnQpLCJleHBpcmVzX2F0Ijpub3crMjAsIm9wZXJhdGlvbl9pZCI6ZXZlbnRbIm9wZXJhdGlvbl9pZCJdLCJvdXRjb21lIjoiQVBQTElFRCJ9KQogIHJldHVybiBzdGF0dXMsb3V0CiBpZiBvcCBpbiBVTlNVUFBPUlRFRF9PUFM6cmV0dXJuICJVTlNVUFBPUlRFRCIsaW1hZ2UKIGlmIG9wPT0iQ09NUE9VTkQiOgogIHRyaWFsPWNsb25lKGltYWdlKQogIGZvciBjaGlsZCBpbiBldmVudC5nZXQoImNoaWxkcmVuIixbXSk6CiAgIHN0YXR1cyx0cmlhbD1vcmFjbGVfc3RlcCh0cmlhbCxjaGlsZCxub3cpCiAgIGlmIHN0YXR1cyE9IkFQUExJRUQiOnJldHVybiBzdGF0dXMsaW1hZ2UKICB0cmlhbFsicmV0YWluZWQiXS5hcHBlbmQoeyJhdHRlbXB0ZWRfYXQiOm5vdywiYmluZGluZ19zaGEyNTYiOnZzaGEoZXZlbnQpLCJjYXVzYWxfb3BlcmF0aW9uX2lkIjpldmVudFsib3BlcmF0aW9uX2lkIl0sImNsYWltZWRfaWRzIjpjbGFpbWVkX2lkcyhldmVudCksImV4cGlyZXNfYXQiOm5vdysyMCwib3BlcmF0aW9uX2lkIjpldmVudFsib3BlcmF0aW9uX2lkIl0sIm91dGNvbWUiOiJBUFBMSUVEIn0pO3JldHVybiAiQVBQTElFRCIsdHJpYWwKIGlmIG9wPT0iVE9NQiI6CiAgb2xkPW5leHQoKHggZm9yIHggaW4gb3V0WyJyZXRhaW5lZCJdIGlmIHhbIm9wZXJhdGlvbl9pZCJdPT1ldmVudC5nZXQoInRhcmdldF9vcGVyYXRpb25faWQiKSksTm9uZSkKICBpZiBvbGQgaXMgTm9uZTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixpbWFnZQogIG91dFsicmV0YWluZWQiXS5yZW1vdmUob2xkKTtvdXRbInRvbWJzdG9uZXMiXS5hcHBlbmQoeyJiaW5kaW5nX3NoYTI1NiI6b2xkWyJiaW5kaW5nX3NoYTI1NiJdLCJjYXVzYWxfb3BlcmF0aW9uX2lkIjpldmVudFsib3BlcmF0aW9uX2lkIl0sImNsYWltZWRfaWRzIjpvbGRbImNsYWltZWRfaWRzIl0sIm9wZXJhdGlvbl9pZCI6b2xkWyJvcGVyYXRpb25faWQiXSwib3V0Y29tZSI6b2xkWyJvdXRjb21lIl0sInJldGlyZWRfYXQiOm5vd30pO291dFsicmV0YWluZWQiXS5hcHBlbmQoeyJhdHRlbXB0ZWRfYXQiOm5vdywiYmluZGluZ19zaGEyNTYiOnZzaGEoZXZlbnQpLCJjYXVzYWxfb3BlcmF0aW9uX2lkIjpldmVudFsib3BlcmF0aW9uX2lkIl0sImNsYWltZWRfaWRzIjpjbGFpbWVkX2lkcyhldmVudCksImV4cGlyZXNfYXQiOm5vdysyMCwib3BlcmF0aW9uX2lkIjpldmVudFsib3BlcmF0aW9uX2lkIl0sIm91dGNvbWUiOiJBUFBMSUVEIn0pO3JldHVybiAiQVBQTElFRCIsb3V0CiBpZiBvcC5zdGFydHN3aXRoKCJQUk9WSURFUl8iKToKICBzdGFnZT1vcFs5Ol07cHJpb3I9ZXZlbnRbInByaW9yX2ZhY3RfaWQiXTtmYWN0cz17eFsiZmFjdF9pZCJdOnggZm9yIHggaW4gb3V0WyJwcm92aWRlcl9mYWN0cyJdfTtvbGQ9ZmFjdHMuZ2V0KHByaW9yKTtzdWNjZXNzb3JzPXt4WyJwcmlvcl9mYWN0X2lkIl0gZm9yIHggaW4gb3V0WyJwcm92aWRlcl9mYWN0cyJdIGlmIHhbInByaW9yX2ZhY3RfaWQiXSBpcyBub3QgTm9uZX0KICBpZiBldmVudFsicHJvdmlkZXJfZmFjdF9pZCJdIGluIGZhY3RzIG9yIGFueSh4WyJvcGVyYXRpb25faWQiXT09ZXZlbnRbIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIG91dFsicHJvdmlkZXJfZmFjdHMiXSkgb3IgcHJpb3IgaW4gc3VjY2Vzc29yczpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixpbWFnZQogIGxlZ2FsPXN0YWdlPT0iRVNUSU1BVEUiIGFuZCBwcmlvciBpcyBOb25lCiAgaWYgb2xkIGlzIG5vdCBOb25lIGFuZCBvbGRbInByb3ZpZGVyX2FjY291bnRfaWQiXT09ZXZlbnRbInByb3ZpZGVyX2FjY291bnRfaWQiXToKICAgbGVnYWx8PW9sZFsic3RhZ2UiXT09IkVTVElNQVRFIiBhbmQgc3RhZ2UgaW4gKCJPQlNFUlZFRCIsIlVOS05PV04iKTtsZWdhbHw9b2xkWyJzdGFnZSJdPT0iVU5LTk9XTiIgYW5kIHN0YWdlPT0iT0JTRVJWRUQiIGFuZCBuPD1vbGRbImFtb3VudCJdO2xlZ2FsfD1vbGRbInN0YWdlIl09PSJPQlNFUlZFRCIgYW5kIHN0YWdlPT0iU0VUVExFRCIgYW5kIG49PW9sZFsiYW1vdW50Il07bGVnYWx8PW9sZFsic3RhZ2UiXSBpbiAoIlNFVFRMRUQiLCJDUkVESVQiKSBhbmQgc3RhZ2U9PSJDUkVESVQiCiAgaWYgbm90IGxlZ2FsOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgaWYgc3RhZ2U9PSJDUkVESVQiOgogICB4PW9sZDtjcmVkaXRzPW4KICAgd2hpbGUgeCBhbmQgeFsic3RhZ2UiXT09IkNSRURJVCI6Y3JlZGl0cys9eFsiYW1vdW50Il07eD1mYWN0cy5nZXQoeFsicHJpb3JfZmFjdF9pZCJdKQogICBpZiB4IGlzIE5vbmUgb3IgeFsic3RhZ2UiXSE9IlNFVFRMRUQiIG9yIGNyZWRpdHM+eFsiYW1vdW50Il06cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICBvdXRbInByb3ZpZGVyX2ZhY3RzIl0uYXBwZW5kKHsiYW1vdW50IjpuLCJmYWN0X2lkIjpldmVudFsicHJvdmlkZXJfZmFjdF9pZCJdLCJvcGVyYXRpb25faWQiOmV2ZW50WyJvcGVyYXRpb25faWQiXSwicHJpb3JfZmFjdF9pZCI6cHJpb3IsInByb3ZpZGVyX2FjY291bnRfaWQiOmV2ZW50WyJwcm92aWRlcl9hY2NvdW50X2lkIl0sInN0YWdlIjpzdGFnZX0pO3N0YXR1cz0iVU5LTk9XTl9SRUNPTkNJTEUiIGlmIHN0YWdlPT0iVU5LTk9XTiIgZWxzZSAiQVBQTElFRCI7b3V0WyJyZXRhaW5lZCJdLmFwcGVuZCh7ImF0dGVtcHRlZF9hdCI6bm93LCJiaW5kaW5nX3NoYTI1NiI6dnNoYShldmVudCksImNhdXNhbF9vcGVyYXRpb25faWQiOmV2ZW50WyJvcGVyYXRpb25faWQiXSwiY2xhaW1lZF9pZHMiOmNsYWltZWRfaWRzKGV2ZW50KSwiZXhwaXJlc19hdCI6bm93KzIwLCJvcGVyYXRpb25faWQiOmV2ZW50WyJvcGVyYXRpb25faWQiXSwib3V0Y29tZSI6c3RhdHVzfSk7cmV0dXJuIHN0YXR1cyxvdXQKIGlmIG9wIGluICgiQ0FDSEVfUkVVU0UiLCJGQUlMIiwiREVQRU5ERU5DWV9ST0xMQkFDSyIsIkxBVEVfUkVTVUxUIiwiV09STERfRElTQ0FSRCIsIkNBTkNFTF9SRVFVRVNUIik6CiAgb3V0WyJyZXRhaW5lZCJdLmFwcGVuZCh7ImF0dGVtcHRlZF9hdCI6bm93LCJiaW5kaW5nX3NoYTI1NiI6dnNoYShldmVudCksImNhdXNhbF9vcGVyYXRpb25faWQiOmV2ZW50WyJvcGVyYXRpb25faWQiXSwiY2xhaW1lZF9pZHMiOmNsYWltZWRfaWRzKGV2ZW50KSwiZXhwaXJlc19hdCI6bm93KzIwLCJvcGVyYXRpb25faWQiOmV2ZW50WyJvcGVyYXRpb25faWQiXSwib3V0Y29tZSI6IkFQUExJRUQifSk7cmV0dXJuICJBUFBMSUVEIixvdXQKIGlmIGQgaXMgTm9uZTpyZXR1cm4gIlVOU1VQUE9SVEVEIixpbWFnZQogcz1kWyJzdGF0ZSJdCiBpZiBkWyJraW5kIl09PSJDT05TVU1BQkxFIjoKICBpZiBvcCBpbiAoIlJFU0VSVkUiLCJFU0NST1ciKToKICAgaWYgc1siZnJlZSJdPG46cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgc1siZnJlZSJdLT1uO3NbInJlc2VydmVkIl0rPW4KICBlbGlmIG9wPT0iQUNRVUlSRSI6CiAgIGV4dHJhPW1heCgwLG4tc1sicmVzZXJ2ZWQiXSkKICAgaWYgc1siZnJlZSJdPGV4dHJhOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgIHNbInJlc2VydmVkIl0tPW1pbihuLHNbInJlc2VydmVkIl0pO3NbImZyZWUiXS09ZXh0cmE7c1siY29uc3VtZWQiXSs9bjtzWyJyZWZ1bmRhYmxlIiBpZiBldmVudC5nZXQoInJlZnVuZGFibGUiLEZhbHNlKSBlbHNlICJub25yZWZ1bmRhYmxlIl0rPW4KICBlbGlmIG9wIGluICgiUkVMRUFTRSIsIkNBTkNFTF9FRkZFQ1RJVkUiKToKICAgaWYgc1sicmVzZXJ2ZWQiXTxuOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgIHNbInJlc2VydmVkIl0tPW47c1siZnJlZSJdKz1uCiAgZWxpZiBvcD09IlJFRlVORCI6CiAgIGlmIHNbInJlZnVuZGFibGUiXTxuOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgIHNbInJlZnVuZGFibGUiXS09bjtzWyJjb25zdW1lZCJdLT1uO3NbImZyZWUiXSs9bgogIGVsc2U6cmV0dXJuICJVTlNVUFBPUlRFRCIsaW1hZ2UKIGVsaWYgZFsia2luZCJdPT0iUEVBSyI6CiAgaWYgb3A9PSJSRVNFUlZFIjoKICAgaWYgc1siY3VycmVudCJdK3NbInJlc2VydmVkIl0rbj5zWyJjYXAiXTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixpbWFnZQogICBzWyJyZXNlcnZlZCJdKz1uCiAgZWxpZiBvcD09IkFDUVVJUkUiOgogICBpZiBzWyJyZXNlcnZlZCJdPG46cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgc1sicmVzZXJ2ZWQiXS09bjtzWyJjdXJyZW50Il0rPW47c1siaGlnaF93YXRlciJdPW1heChzWyJoaWdoX3dhdGVyIl0sc1siY3VycmVudCJdKQogIGVsaWYgb3A9PSJSRUxFQVNFIjoKICAga2V5PSJyZXNlcnZlZCIgaWYgZXZlbnQuZ2V0KCJyZWxlYXNlX2Zyb20iLCJDVVJSRU5UIik9PSJSRVNFUlZFRCIgZWxzZSAiY3VycmVudCIKICAgaWYgc1trZXldPG46cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgc1trZXldLT1uCiAgZWxzZTpyZXR1cm4gIlVOU1VQUE9SVEVEIixpbWFnZQogZWxpZiBkWyJraW5kIl09PSJSQVRFIjoKICBpZiBub3c8c1sibGFzdF9yZWZpbGxfYXQiXTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixpbWFnZQogIGlmIG9wPT0iUkVGSUxMIjoKICAgaz0obm93LXNbImxhc3RfcmVmaWxsX2F0Il0pLy9zWyJ3aW5kb3ciXQogICBpZiBrOnNbImF2YWlsYWJsZSJdPW1pbihzWyJjYXAiXSxzWyJhdmFpbGFibGUiXStrKnNbInJlZmlsbCJdKTtzWyJsYXN0X3JlZmlsbF9hdCJdKz1rKnNbIndpbmRvdyJdCiAgZWxpZiBvcD09IlJFU0VSVkUiOgogICBpZiBzWyJhdmFpbGFibGUiXS1zWyJyZXNlcnZlZCJdPG46cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgc1sicmVzZXJ2ZWQiXSs9bgogIGVsaWYgb3A9PSJBQ1FVSVJFIjoKICAgaWYgc1sicmVzZXJ2ZWQiXT49bjpzWyJyZXNlcnZlZCJdLT1uO3NbImF2YWlsYWJsZSJdLT1uCiAgIGVsaWYgc1siYXZhaWxhYmxlIl0tc1sicmVzZXJ2ZWQiXT49bjpzWyJhdmFpbGFibGUiXS09bgogICBlbHNlOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgZWxpZiBvcD09IlJFTEVBU0UiOgogICBpZiBzWyJyZXNlcnZlZCJdPG46cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgc1sicmVzZXJ2ZWQiXS09bgogIGVsc2U6cmV0dXJuICJVTlNVUFBPUlRFRCIsaW1hZ2UKIGVsaWYgZFsia2luZCJdPT0iTEVBU0UiOgogIGZvciB4IGluIGxpc3Qoc1siYWN0aXZlIl0pOgogICBpZiBub3c+PXhbImV4cGlyZXNfYXQiXTpzWyJhY3RpdmUiXS5yZW1vdmUoeCk7c1siZXhwaXJlZCJdLmFwcGVuZCh4WyJsZWFzZV9pZCJdKTtzWyJoaXN0b3J5Il0uYXBwZW5kKHsqKngsImVuZCI6IkVYUElSRUQifSkKICBpZiBvcD09IkxFQVNFX0dSQU5UIjoKICAgaWYgZXZlbnRbImVwb2NoIl0hPTEgb3IgZXZlbnRbImV4cGlyZXNfYXQiXTw9bm93IG9yIGxlbihzWyJhY3RpdmUiXSk+PXNbImNhcGFjaXR5Il0gb3IgYW55KGV2ZW50WyJvcGVyYXRpb25faWQiXT09eFsibGVhc2VfaWQiXSBmb3IgeCBpbiBzWyJhY3RpdmUiXStzWyJoaXN0b3J5Il0pOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgIHNbImFjdGl2ZSJdLmFwcGVuZCh7ImVwb2NoIjoxLCJleHBpcmVzX2F0IjpldmVudFsiZXhwaXJlc19hdCJdLCJsZWFzZV9pZCI6ZXZlbnRbIm9wZXJhdGlvbl9pZCJdLCJ1c2VzIjowfSkKICBlbHNlOgogICBsZWFzZT1uZXh0KCh4IGZvciB4IGluIHNbImFjdGl2ZSJdIGlmIHhbImxlYXNlX2lkIl09PWV2ZW50LmdldCgibGVhc2VfaWQiKSksTm9uZSkKICAgaWYgbGVhc2UgaXMgTm9uZTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixvdXQKICAgaWYgb3A9PSJMRUFTRV9VU0UiOgogICAgaWYgZXZlbnRbImVwb2NoIl0hPWxlYXNlWyJlcG9jaCJdOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgICBsZWFzZVsidXNlcyJdKz0xCiAgIGVsaWYgb3A9PSJMRUFTRV9SRVZPS0UiOnNbImFjdGl2ZSJdLnJlbW92ZShsZWFzZSk7c1siaGlzdG9yeSJdLmFwcGVuZCh7KipsZWFzZSwiZW5kIjoiUkVWT0tFRCJ9KQogICBlbGlmIG9wPT0iTEVBU0VfUkVORVciOgogICAgaWYgZXZlbnRbImVwb2NoIl0hPWxlYXNlWyJlcG9jaCJdKzEgb3IgZXZlbnRbImV4cGlyZXNfYXQiXTw9bWF4KG5vdyxsZWFzZVsiZXhwaXJlc19hdCJdKTpyZXR1cm4gIkRFTllfQURNSVNTSU9OIixpbWFnZQogICAgbGVhc2VbImVwb2NoIl09ZXZlbnRbImVwb2NoIl07bGVhc2VbImV4cGlyZXNfYXQiXT1ldmVudFsiZXhwaXJlc19hdCJdCiAgIGVsc2U6cmV0dXJuICJVTlNVUFBPUlRFRCIsaW1hZ2UKIGVsc2U6CiAgY2hpbGQ9bmV4dCgoeCBmb3IgeCBpbiBzWyJjaGlsZHJlbiJdIGlmIHhbImNoaWxkX2lkIl09PWV2ZW50LmdldCgiY2hpbGRfaWQiKSksTm9uZSk7aGlzdG9yeT1zdW0oeFsidXNlZCJdIGZvciB4IGluIHNbInJldm9rZWRfaGlzdG9yeSJdKQogIGlmIG9wPT0iU0hBUkVfQUxMT0NBVEUiOgogICBpZiBhbnkoZXZlbnRbImNoaWxkX2lkIl09PXhbImNoaWxkX2lkIl0gZm9yIHggaW4gc1siY2hpbGRyZW4iXStzWyJyZXZva2VkX2hpc3RvcnkiXSkgb3Igc3VtKHhbImFsbG9jYXRlZCJdIGZvciB4IGluIHNbImNoaWxkcmVuIl0pK2hpc3Rvcnkrbj5zWyJjYXBhY2l0eSJdOnJldHVybiAiREVOWV9BRE1JU1NJT04iLGltYWdlCiAgIHNbImNoaWxkcmVuIl0uYXBwZW5kKHsiYWxsb2NhdGVkIjpuLCJjaGlsZF9pZCI6ZXZlbnRbImNoaWxkX2lkIl0sInJlc2VydmVkIjowLCJ1c2VkIjowfSkKICBlbGlmIGNoaWxkIGlzIE5vbmU6cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICBlbGlmIG9wPT0iU0hBUkVfUkVTRVJWRSI6CiAgIGlmIGNoaWxkWyJ1c2VkIl0rY2hpbGRbInJlc2VydmVkIl0rbj5jaGlsZFsiYWxsb2NhdGVkIl06cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgY2hpbGRbInJlc2VydmVkIl0rPW4KICBlbGlmIG9wPT0iU0hBUkVfQUNRVUlSRSI6CiAgIGlmIGNoaWxkWyJyZXNlcnZlZCJdPG46cmV0dXJuICJERU5ZX0FETUlTU0lPTiIsaW1hZ2UKICAgY2hpbGRbInJlc2VydmVkIl0tPW47Y2hpbGRbInVzZWQiXSs9bgogIGVsaWYgb3A9PSJTSEFSRV9SRVZPS0UiOnNbImNoaWxkcmVuIl0ucmVtb3ZlKGNoaWxkKTtzWyJyZXZva2VkX2hpc3RvcnkiXS5hcHBlbmQoeyJhbGxvY2F0ZWQiOmNoaWxkWyJhbGxvY2F0ZWQiXSwiY2hpbGRfaWQiOmNoaWxkWyJjaGlsZF9pZCJdLCJyZXNlcnZlZCI6Y2hpbGRbInJlc2VydmVkIl0sInVzZWQiOmNoaWxkWyJ1c2VkIl19KQogIGVsc2U6cmV0dXJuICJVTlNVUFBPUlRFRCIsaW1hZ2UKIHJldHVybiBrZWVwKCJBUFBMSUVEIikKCmRlZiBvcmFjbGVfb2JzZXJ2YXRpb24oaW5wdXRzKToKIGV4YWN0KGlucHV0cyx7ImluaXRpYWxfc3RhdGUiLCJwaGFzZXMifSwib3JhY2xlIGlucHV0cyIpO3ZhbGlkYXRlX3N0YXRlKGlucHV0c1siaW5pdGlhbF9zdGF0ZSJdLDAsaW5pdGlhbD1UcnVlKTt2YWxpZGF0ZV90cmFjZV9uYW1lc3BhY2VzKGlucHV0cyk7c3RhdGU9Y2xvbmUoaW5wdXRzWyJpbml0aWFsX3N0YXRlIl0pO3Jvd3M9W107bGFzdD0wO2ZyZXNoPXtrOnNldCgpIGZvciBrIGluICgiZ3JhbnRfcmVmIiwiZXhlY3V0aW9uX2lkIiwiYWN0aXZhdGlvbl9pZCIsInZhbGlkYXRpb25faWQiLCJpbnZvY2F0aW9uX25vbmNlIiwiZnJlc2huZXNzX3JlZiIpfQogZGVmIGFsbG93ZWQoYSxlKTpyZXR1cm4gYVsidmVyZGljdCJdPT0iQUxMT1ciIGFuZCBhWyJyaWdodCJdPT0iVVNFX0JVREdFVCIgYW5kIGFsbChhW2tdPT1hWyJoYW5kb2ZmIl1ba10gZm9yIGsgaW4gQVVUSF9DT05URVhUKSBhbmQgKGFbImFjdG9yX2lkIl0sYVsiY29tbWl0bWVudF9pZCJdLGFbIndvcmxkX2lkIl0pPT0oZVsiYWN0b3JfaWQiXSxlWyJjb21taXRtZW50X2lkIl0sZVsid29ybGRfaWQiXSkKIGRlZiBqb2luZWQoaW1hZ2UsZSk6CiAgZHM9e3hbImRpbWVuc2lvbl9pZCJdOnggZm9yIHggaW4gaW1hZ2VbImRpbWVuc2lvbnMiXX07cHM9e3hbInBsYW5faWQiXTp4IGZvciB4IGluIGltYWdlWyJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIl19O3dzPXt4WyJ3b3JsZF9pZCJdIGZvciB4IGluIGltYWdlWyJ3b3JsZHMiXX07ZD1kcy5nZXQoZVsiZGltZW5zaW9uX2lkIl0pO3A9cHMuZ2V0KGVbInBsYW5faWQiXSkKICByZXR1cm4gZCBpcyBub3QgTm9uZSBhbmQgZVsid29ybGRfaWQiXSBpbiB3cyBhbmQgcCBpcyBub3QgTm9uZSBhbmQgKHBbImRpbWVuc2lvbl9pZCJdLHBbIndvcmxkX2lkIl0scFsicmVzb3VyY2VfaWQiXSxwWyJvd25lcl9pZCJdLHBbImNvbW1pdG1lbnRfaWQiXSk9PShlWyJkaW1lbnNpb25faWQiXSxlWyJ3b3JsZF9pZCJdLGVbInJlc291cmNlX2lkIl0sZVsib3duZXJfaWQiXSxlWyJjb21taXRtZW50X2lkIl0pIGFuZCBkWyJvd25lcl9pZCJdPT1lWyJvd25lcl9pZCJdCiBkZWYgcmVjb3JkKGltYWdlLGUsc3RhdHVzLG5vdyxjYXVzYWw9Tm9uZSxjbGFpbXM9Tm9uZSk6aW1hZ2VbInJldGFpbmVkIl0uYXBwZW5kKHsiYXR0ZW1wdGVkX2F0Ijpub3csImJpbmRpbmdfc2hhMjU2Ijp2c2hhKGUpLCJjYXVzYWxfb3BlcmF0aW9uX2lkIjpjYXVzYWwgb3IgZVsib3BlcmF0aW9uX2lkIl0sImNsYWltZWRfaWRzIjpjbGFpbXMgb3IgY2xhaW1lZF9pZHMoZSksImV4cGlyZXNfYXQiOm5vdysyMCwib3BlcmF0aW9uX2lkIjplWyJvcGVyYXRpb25faWQiXSwib3V0Y29tZSI6c3RhdHVzfSkKIGZvciBwaCBpbiBpbnB1dHNbInBoYXNlcyJdOgogIGJlZm9yZT1jbG9uZShzdGF0ZSkKICBpZiBwaD09eyJraW5kIjoiUkVMT0FEIn06c3RhdGU9cGFyc2VfYnl0ZXMoY2Fub25pY2FsKHN0YXRlKSk7cm93cy5hcHBlbmQoeyJhZnRlciI6Y2xvbmUoc3RhdGUpLCJiZWZvcmUiOmJlZm9yZSwiZGVsdGFfYXBwbGllZCI6RmFsc2UsImtpbmQiOiJSRUxPQUQiLCJyZXNwb25zZV92aXNpYmxlIjpUcnVlLCJzdGF0dXMiOk5vbmV9KTtjb250aW51ZQogIGV4YWN0KHBoLHsiYXV0aG9yaXR5IiwiZXZlbnQiLCJmYXVsdCIsImtpbmQiLCJsb2dpY2FsX25vdyJ9LCJvcmFjbGUgcGhhc2UiKTt2YWxpZGF0ZV9hdXRob3JpdHkocGhbImF1dGhvcml0eSJdKTt2YWxpZGF0ZV9ldmVudChwaFsiZXZlbnQiXSk7ZT1waFsiZXZlbnQiXTtub3c9cGhbImxvZ2ljYWxfbm93Il0KICBpZiBub3c8bGFzdDpyYWlzZSBNYW5pZmVzdEVycm9yKCJub25tb25vdG9uaWMgdGltZSIpCiAgbGFzdD1ub3c7b2xkPW5leHQoKHggZm9yIHggaW4gc3RhdGVbInJldGFpbmVkIl0rc3RhdGVbInRvbWJzdG9uZXMiXSBpZiB4WyJvcGVyYXRpb25faWQiXT09ZVsib3BlcmF0aW9uX2lkIl0pLE5vbmUpCiAgaWYgb2xkOnN0YXR1cz0oKCJSRVBMQVkiIGlmIG9sZCBpbiBzdGF0ZVsicmV0YWluZWQiXSBhbmQgbm93PG9sZFsiZXhwaXJlc19hdCJdIGVsc2UgIlJFQ09OQ0lMRV9FWFBJUkVEIikgaWYgb2xkWyJiaW5kaW5nX3NoYTI1NiJdPT12c2hhKGUpIGFuZCBvbGRbImNsYWltZWRfaWRzIl09PWNsYWltZWRfaWRzKGUpIGVsc2UgIkRFTllfQURNSVNTSU9OIik7YWZ0ZXI9YmVmb3JlCiAgZWxzZToKICAgYXV0aG9yaXRpZXM9W3BoWyJhdXRob3JpdHkiXV0rKFt4WyJhdXRob3JpdHkiXSBmb3IgeCBpbiBlLmdldCgiY2hpbGRyZW4iLFtdKV0gaWYgZVsib3BlcmF0aW9uIl09PSJDT01QT1VORCIgZWxzZSBbXSkKICAgZm9yIGEgaW4gYXV0aG9yaXRpZXM6CiAgICBmb3IgayBpbiBmcmVzaDoKICAgICBpZiBhW2tdIGluIGZyZXNoW2tdOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJlcGVhdGVkIGZyZXNobmVzcyBuYW1lc3BhY2UgIitrKQogICAgIGZyZXNoW2tdLmFkZChhW2tdKQogIGlmIG9sZDpwYXNzCiAgZWxpZiBub3QgYWxsb3dlZChwaFsiYXV0aG9yaXR5Il0sZSk6c3RhdHVzPSJERU5ZX0FVVEhPUklUWSI7YWZ0ZXI9Y2xvbmUoYmVmb3JlKTtyZWNvcmQoYWZ0ZXIsZSxzdGF0dXMsbm93KQogIGVsaWYgcGhbImZhdWx0Il09PSJCRUZPUkVfQ09NTUlUIjpzdGF0dXM9IkJFRk9SRV9DT01NSVQiO2FmdGVyPWNsb25lKGJlZm9yZSk7cmVjb3JkKGFmdGVyLGUsc3RhdHVzLG5vdykKICBlbGlmIG5vdCBqb2luZWQoc3RhdGUsZSk6c3RhdHVzPSJERU5ZX0FETUlTU0lPTiI7YWZ0ZXI9Y2xvbmUoYmVmb3JlKTtyZWNvcmQoYWZ0ZXIsZSxzdGF0dXMsbm93KQogIGVsaWYgZVsib3BlcmF0aW9uIl09PSJDT01QT1VORCI6CiAgIGlkcz1bZVsib3BlcmF0aW9uX2lkIl1dK1t4WyJldmVudCJdWyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdXTthZnRlcj1jbG9uZShzdGF0ZSk7c3RhdHVzPSJBUFBMSUVEIgogICBpZiBsZW4oaWRzKSE9bGVuKHNldChpZHMpKSBvciB7eFsib3BlcmF0aW9uX2lkIl0gZm9yIHggaW4gc3RhdGVbInJldGFpbmVkIl0rc3RhdGVbInRvbWJzdG9uZXMiXX0mc2V0KGlkcyk6c3RhdHVzPSJERU5ZX0FETUlTU0lPTiI7YWZ0ZXI9Y2xvbmUoc3RhdGUpCiAgIGVsc2U6CiAgICB0cmlhbD1jbG9uZShzdGF0ZSk7b3V0Y29tZXM9W10KICAgIGZvciBjaGlsZCBpbiBlWyJjaGlsZHJlbiJdOgogICAgIGNlPWNoaWxkWyJldmVudCJdCiAgICAgaWYgbm90IGFsbG93ZWQoY2hpbGRbImF1dGhvcml0eSJdLGNlKTpjaGlsZF9zdGF0dXM9IkRFTllfQVVUSE9SSVRZIgogICAgIGVsaWYgbm90IGpvaW5lZCh0cmlhbCxjZSk6Y2hpbGRfc3RhdHVzPSJERU5ZX0FETUlTU0lPTiIKICAgICBlbHNlOmNoaWxkX3N0YXR1cyxuZXh0X3RyaWFsPW9yYWNsZV9zdGVwKHRyaWFsLGNlLG5vdyk7dHJpYWw9bmV4dF90cmlhbCBpZiBjaGlsZF9zdGF0dXM9PSJBUFBMSUVEIiBlbHNlIHRyaWFsCiAgICAgb3V0Y29tZXMuYXBwZW5kKGNoaWxkX3N0YXR1cykKICAgIHN0YXR1cz0iQVBQTElFRCIgaWYgYWxsKHg9PSJBUFBMSUVEIiBmb3IgeCBpbiBvdXRjb21lcykgZWxzZSAiREVOWV9BRE1JU1NJT04iO2FmdGVyPXRyaWFsIGlmIHN0YXR1cz09IkFQUExJRUQiIGVsc2UgY2xvbmUoc3RhdGUpCiAgIGNoaWxkaWRzPXt4WyJldmVudCJdWyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdfTthZnRlclsicmV0YWluZWQiXT1beCBmb3IgeCBpbiBhZnRlclsicmV0YWluZWQiXSBpZiB4WyJvcGVyYXRpb25faWQiXSBub3QgaW4gY2hpbGRpZHNdCiAgIGNsYWltcz1jbGFpbWVkX2lkcyhlKQogICBmb3IgY2hpbGQsY2hpbGRfc3RhdHVzIGluIHppcChlWyJjaGlsZHJlbiJdLG91dGNvbWVzKTpyZWNvcmQoYWZ0ZXIsY2hpbGRbImV2ZW50Il0sY2hpbGRfc3RhdHVzLG5vdyxlWyJvcGVyYXRpb25faWQiXSxjbGFpbXMpCiAgIHJlY29yZChhZnRlcixlLHN0YXR1cyxub3csY2xhaW1zPWNsYWltcykKICBlbHNlOgogICBzdGF0dXMsYWZ0ZXI9b3JhY2xlX3N0ZXAoc3RhdGUsZSxub3cpCiAgIGlmIG5vdCBhbnkoeFsib3BlcmF0aW9uX2lkIl09PWVbIm9wZXJhdGlvbl9pZCJdIGZvciB4IGluIGFmdGVyWyJyZXRhaW5lZCJdKTpyZWNvcmQoYWZ0ZXIsZSxzdGF0dXMsbm93KQogIHZpc2libGU9cGhbImZhdWx0Il0gbm90IGluICgiQkVGT1JFX0NPTU1JVCIsIkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiKSBvciBzdGF0dXM9PSJERU5ZX0FVVEhPUklUWSI7dmFsaWRhdGVfc3RhdGUoYWZ0ZXIsbm93KTtzdGF0ZT1hZnRlcjtyb3dzLmFwcGVuZCh7ImFmdGVyIjpjbG9uZShzdGF0ZSksImJlZm9yZSI6YmVmb3JlLCJkZWx0YV9hcHBsaWVkIjphZnRlciE9YmVmb3JlLCJraW5kIjoiQVBQTFkiLCJyZXNwb25zZV92aXNpYmxlIjp2aXNpYmxlLCJzdGF0dXMiOnN0YXR1c30pCiByZXR1cm4geyJmaW5hbF9zdGF0ZSI6c3RhdGUsImlucHV0X3NoYTI1NiI6dnNoYShpbnB1dHMpLCJwaGFzZXMiOnJvd3N9CgpkZWYgY29uc2VydmF0aW9uKHN0YXRlKToKIGZvciBkIGluIHN0YXRlWyJkaW1lbnNpb25zIl06CiAgcz1kWyJzdGF0ZSJdCiAgaWYgZFsia2luZCJdPT0iQ09OU1VNQUJMRSIgYW5kIChzWyJmcmVlIl0rc1sicmVzZXJ2ZWQiXStzWyJjb25zdW1lZCJdK3NbImV4cGlyZWQiXStzWyJ1bmtub3duX2Rpc3B1dGVkIl0hPXNbImlzc3VlZCJdIG9yIHNbInJlZnVuZGFibGUiXStzWyJub25yZWZ1bmRhYmxlIl0hPXNbImNvbnN1bWVkIl0pOnJldHVybiBGYWxzZQogIGlmIGRbImtpbmQiXT09IlBFQUsiIGFuZCAoc1siY3VycmVudCJdK3NbInJlc2VydmVkIl0+c1siY2FwIl0gb3Igc1siaGlnaF93YXRlciJdPHNbImN1cnJlbnQiXSk6cmV0dXJuIEZhbHNlCiAgaWYgZFsia2luZCJdPT0iUkFURSIgYW5kIChzWyJhdmFpbGFibGUiXT5zWyJjYXAiXSBvciBzWyJyZXNlcnZlZCJdPnNbImF2YWlsYWJsZSJdKTpyZXR1cm4gRmFsc2UKICBpZiBkWyJraW5kIl09PSJMRUFTRSIgYW5kIChsZW4oc1siYWN0aXZlIl0pPnNbImNhcGFjaXR5Il0gb3IgYW55KHhbImVuZCJdIG5vdCBpbiAoIkVYUElSRUQiLCJSRVZPS0VEIikgZm9yIHggaW4gc1siaGlzdG9yeSJdKSk6cmV0dXJuIEZhbHNlCiAgaWYgZFsia2luZCJdPT0iU0hBUkUiIGFuZCAoc3VtKHhbImFsbG9jYXRlZCJdIGZvciB4IGluIHNbImNoaWxkcmVuIl0pK3N1bSh4WyJ1c2VkIl0gZm9yIHggaW4gc1sicmV2b2tlZF9oaXN0b3J5Il0pPnNbImNhcGFjaXR5Il0gb3IgYW55KHhbInJlc2VydmVkIl0reFsidXNlZCJdPnhbImFsbG9jYXRlZCJdIGZvciB4IGluIHNbImNoaWxkcmVuIl0pKTpyZXR1cm4gRmFsc2UKIHJldHVybiBUcnVlCmRlZiBhcHBseV9wYWlycyhpbnB1dHMsb2JzKTpyZXR1cm4gbGlzdCh6aXAoKHggZm9yIHggaW4gaW5wdXRzWyJwaGFzZXMiXSBpZiB4LmdldCgia2luZCIpPT0iQVBQTFkiKSwoeCBmb3IgeCBpbiBvYnMuZ2V0KCJwaGFzZXMiLFtdKSBpZiB4LmdldCgia2luZCIpPT0iQVBQTFkiKSkpCmRlZiBsYXdfd2hvbGUoaW5wdXRzLG9icyk6CiB0cnk6cmV0dXJuIGNhbm9uaWNhbChvcmFjbGVfb2JzZXJ2YXRpb24oaW5wdXRzKSk9PWNhbm9uaWNhbChvYnMpCiBleGNlcHQgRXhjZXB0aW9uOnJldHVybiBGYWxzZQpkZWYgbGF3X3R5cGVkKGlucHV0cyxvYnMpOgogdHJ5OgogIG93bmVycz17fTthdHRlbXB0cz17fTt3b3JsZHM9aW5wdXRzWyJpbml0aWFsX3N0YXRlIl1bIndvcmxkcyJdCiAgaWYgYW55KG5vdCBpc2luc3RhbmNlKHcsZGljdCkgb3Igc2V0KHcpIT17IndvcmxkX2lkIn0gb3Igbm90IGlzaW5zdGFuY2Uod1sid29ybGRfaWQiXSxzdHIpIG9yIG5vdCB3WyJ3b3JsZF9pZCJdIGZvciB3IGluIHdvcmxkcykgb3IgbGVuKHt3WyJ3b3JsZF9pZCJdIGZvciB3IGluIHdvcmxkc30pIT1sZW4od29ybGRzKTpyZXR1cm4gRmFsc2UKICBmb3IgZCBpbiBpbnB1dHNbImluaXRpYWxfc3RhdGUiXVsiZGltZW5zaW9ucyJdOgogICBpZiBkWyJ1bml0X2lkIl0gbm90IGluIFVOSVRfQ09NUEFUIG9yIGRbImtpbmQiXSBub3QgaW4gVU5JVF9DT01QQVRbZFsidW5pdF9pZCJdXTpyZXR1cm4gRmFsc2UKICAgZm9yIHggaW4gKGRbInN0YXRlIl1bImNoaWxkcmVuIl0rZFsic3RhdGUiXVsicmV2b2tlZF9oaXN0b3J5Il0gaWYgZFsia2luZCJdPT0iU0hBUkUiIGVsc2UgZFsic3RhdGUiXVsiYWN0aXZlIl0rZFsic3RhdGUiXVsiaGlzdG9yeSJdIGlmIGRbImtpbmQiXT09IkxFQVNFIiBlbHNlIFtdKToKICAgIGlkZW50aXR5PXhbImNoaWxkX2lkIl0gaWYgZFsia2luZCJdPT0iU0hBUkUiIGVsc2UgeFsibGVhc2VfaWQiXQogICAgaWYgaWRlbnRpdHkgaW4gb3duZXJzOnJldHVybiBGYWxzZQogICAgb3duZXJzW2lkZW50aXR5XT0iSU5JVElBTCIKICBmb3IgZiBpbiBpbnB1dHNbImluaXRpYWxfc3RhdGUiXVsicHJvdmlkZXJfZmFjdHMiXToKICAgZm9yIGlkZW50aXR5IGluIChmWyJvcGVyYXRpb25faWQiXSxmWyJmYWN0X2lkIl0pOgogICAgaWYgaWRlbnRpdHkgaW4gb3duZXJzOnJldHVybiBGYWxzZQogICAgb3duZXJzW2lkZW50aXR5XT0iSU5JVElBTCIKICBmb3IgcGgscm93IGluIGFwcGx5X3BhaXJzKGlucHV0cyxvYnMpOgogICBlPXBoWyJldmVudCJdO29pZD1lWyJvcGVyYXRpb25faWQiXTthdHRlbXB0PSh2c2hhKGUpLGNsYWltZWRfaWRzKGUpKTtvbGQ9YXR0ZW1wdHMuZ2V0KG9pZCkKICAgaWYgb2xkIGlzIG5vdCBOb25lOgogICAgaWYgb2xkIT1hdHRlbXB0IG9yIHJvd1sic3RhdHVzIl0gbm90IGluICgiUkVQTEFZIiwiUkVDT05DSUxFX0VYUElSRUQiKTpyZXR1cm4gRmFsc2UKICAgIGNvbnRpbnVlCiAgIGF0dGVtcHRzW29pZF09YXR0ZW1wdAogICBpZiBhbnkoeCBpbiBvd25lcnMgZm9yIHggaW4gYXR0ZW1wdFsxXSkgYW5kIHJvd1sic3RhdHVzIl0hPSJERU5ZX0FETUlTU0lPTiI6cmV0dXJuIEZhbHNlCiAgIGZvciB4IGluIGF0dGVtcHRbMV06b3duZXJzLnNldGRlZmF1bHQoeCxvaWQpCiAgIGV2ZW50cz1bZV0rKFt4WyJldmVudCJdIGZvciB4IGluIGUuZ2V0KCJjaGlsZHJlbiIsW10pXSBpZiBlWyJvcGVyYXRpb24iXT09IkNPTVBPVU5EIiBlbHNlIFtdKTtkcz17eFsiZGltZW5zaW9uX2lkIl06eCBmb3IgeCBpbiByb3dbImJlZm9yZSJdWyJkaW1lbnNpb25zIl19O3BzPXt4WyJwbGFuX2lkIl06eCBmb3IgeCBpbiByb3dbImJlZm9yZSJdWyJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIl19CiAgIGZvciB6IGluIGV2ZW50czoKICAgIGQ9ZHMuZ2V0KHpbImRpbWVuc2lvbl9pZCJdKTtwPXBzLmdldCh6WyJwbGFuX2lkIl0pCiAgICBpZiBkIGlzIE5vbmUgb3IgcCBpcyBOb25lIG9yIHpbIndvcmxkX2lkIl0gbm90IGluIHt3WyJ3b3JsZF9pZCJdIGZvciB3IGluIHdvcmxkc30gb3IgKHBbImRpbWVuc2lvbl9pZCJdLHBbIndvcmxkX2lkIl0scFsib3duZXJfaWQiXSxwWyJyZXNvdXJjZV9pZCJdLHBbImNvbW1pdG1lbnRfaWQiXSkhPSh6WyJkaW1lbnNpb25faWQiXSx6WyJ3b3JsZF9pZCJdLHpbIm93bmVyX2lkIl0selsicmVzb3VyY2VfaWQiXSx6WyJjb21taXRtZW50X2lkIl0pOnJldHVybiBGYWxzZQogIHJldHVybiBvYnNbImlucHV0X3NoYTI1NiJdPT12c2hhKGlucHV0cykgYW5kIGxhd19oaWVyYXJjaHkoaW5wdXRzLG9icykKIGV4Y2VwdCBFeGNlcHRpb246cmV0dXJuIEZhbHNlCmRlZiBhdXRob3JpdHlfcmVsYXRpb24oYSxlKTpyZXR1cm4gYVsidmVyZGljdCJdPT0iQUxMT1ciIGFuZCBhWyJyaWdodCJdPT0iVVNFX0JVREdFVCIgYW5kIGFsbChhW2tdPT1hWyJoYW5kb2ZmIl1ba10gZm9yIGsgaW4gQVVUSF9DT05URVhUKSBhbmQgKGFbImFjdG9yX2lkIl0sYVsiY29tbWl0bWVudF9pZCJdLGFbIndvcmxkX2lkIl0pPT0oZVsiYWN0b3JfaWQiXSxlWyJjb21taXRtZW50X2lkIl0sZVsid29ybGRfaWQiXSkKZGVmIGxhd19hdXRob3JpdHkoaW5wdXRzLG9icyk6CiB0cnk6CiAgZnJlc2g9e2s6c2V0KCkgZm9yIGsgaW4gKCJncmFudF9yZWYiLCJleGVjdXRpb25faWQiLCJhY3RpdmF0aW9uX2lkIiwidmFsaWRhdGlvbl9pZCIsImludm9jYXRpb25fbm9uY2UiLCJmcmVzaG5lc3NfcmVmIil9CiAgZm9yIHBoLHJvdyBpbiBhcHBseV9wYWlycyhpbnB1dHMsb2JzKToKICAgZT1waFsiZXZlbnQiXTtwYWlycz1bKHBoWyJhdXRob3JpdHkiXSxlKV0rKFsoeFsiYXV0aG9yaXR5Il0seFsiZXZlbnQiXSkgZm9yIHggaW4gZS5nZXQoImNoaWxkcmVuIixbXSldIGlmIGUuZ2V0KCJvcGVyYXRpb24iKT09IkNPTVBPVU5EIiBlbHNlIFtdKTtpbnZhbGlkPVtub3QgYXV0aG9yaXR5X3JlbGF0aW9uKGEseikgZm9yIGEseiBpbiBwYWlyc10KICAgaWYgcm93WyJzdGF0dXMiXSBpbiAoIlJFUExBWSIsIlJFQ09OQ0lMRV9FWFBJUkVEIik6Y29udGludWUKICAgaWYgYW55KGFueShhW2tdIGluIGZyZXNoW2tdIGZvciBrIGluIGZyZXNoKSBmb3IgYSxfIGluIHBhaXJzKTpyZXR1cm4gRmFsc2UKICAgZm9yIGEsXyBpbiBwYWlyczoKICAgIGZvciBrIGluIGZyZXNoOmZyZXNoW2tdLmFkZChhW2tdKQogICBpZiBpbnZhbGlkWzBdIGFuZCByb3dbInN0YXR1cyJdIT0iREVOWV9BVVRIT1JJVFkiOnJldHVybiBGYWxzZQogICBpZiBlLmdldCgib3BlcmF0aW9uIik9PSJDT01QT1VORCIgYW5kIGFueShpbnZhbGlkWzE6XSk6CiAgICByZWNvcmRzPXt4WyJvcGVyYXRpb25faWQiXTp4IGZvciB4IGluIHJvd1siYWZ0ZXIiXVsicmV0YWluZWQiXX0KICAgIGZvciAoXyx6KSxiYWQgaW4gemlwKHBhaXJzWzE6XSxpbnZhbGlkWzE6XSk6CiAgICAgaWYgYmFkIGFuZCAoelsib3BlcmF0aW9uX2lkIl0gbm90IGluIHJlY29yZHMgb3IgcmVjb3Jkc1t6WyJvcGVyYXRpb25faWQiXV1bIm91dGNvbWUiXSE9IkRFTllfQVVUSE9SSVRZIik6cmV0dXJuIEZhbHNlCiAgcmV0dXJuIFRydWUKIGV4Y2VwdCBFeGNlcHRpb246cmV0dXJuIEZhbHNlCmRlZiBsYXdfa2luZChpbnB1dHMsb2JzKToKIHRyeToKICBmb3IgcGgscm93IGluIGFwcGx5X3BhaXJzKGlucHV0cyxvYnMpOgogICBlPXBoWyJldmVudCJdCiAgIGlmIGUuZ2V0KCJvcGVyYXRpb24iKSBub3QgaW4gT1BfRklFTERTOnJldHVybiBGYWxzZQogICBpZiByb3dbInN0YXR1cyJdIGluICgiUkVQTEFZIiwiUkVDT05DSUxFX0VYUElSRUQiLCJERU5ZX0FVVEhPUklUWSIsIkRFTllfQURNSVNTSU9OIiwiVU5TVVBQT1JURUQiLCJCRUZPUkVfQ09NTUlUIik6Y29udGludWUKICAgaWYgZVsib3BlcmF0aW9uIl09PSJDT01QT1VORCI6Y29udGludWUKICAgYmVmb3JlPXtkWyJkaW1lbnNpb25faWQiXTpkIGZvciBkIGluIHJvd1siYmVmb3JlIl1bImRpbWVuc2lvbnMiXX07YWZ0ZXI9e2RbImRpbWVuc2lvbl9pZCJdOmQgZm9yIGQgaW4gcm93WyJhZnRlciJdWyJkaW1lbnNpb25zIl19O2Q9YmVmb3JlLmdldChlWyJkaW1lbnNpb25faWQiXSkKICAgaWYgZCBpcyBOb25lOmNvbnRpbnVlCiAgIGI9ZFsic3RhdGUiXTthPWFmdGVyW2VbImRpbWVuc2lvbl9pZCJdXVsic3RhdGUiXTtuPWVbImFtb3VudCJdO29wPWVbIm9wZXJhdGlvbiJdO2s9ZFsia2luZCJdCiAgIGlmIGs9PSJDT05TVU1BQkxFIiBhbmQgb3AgaW4gKCJSRVNFUlZFIiwiRVNDUk9XIikgYW5kIG5vdCAoYVsiZnJlZSJdPT1iWyJmcmVlIl0tbiBhbmQgYVsicmVzZXJ2ZWQiXT09YlsicmVzZXJ2ZWQiXStuKTpyZXR1cm4gRmFsc2UKICAgaWYgaz09IkNPTlNVTUFCTEUiIGFuZCBvcD09IkFDUVVJUkUiIGFuZCBub3QgKGFbImNvbnN1bWVkIl09PWJbImNvbnN1bWVkIl0rbiBhbmQgYVsicmVzZXJ2ZWQiXT09YlsicmVzZXJ2ZWQiXS1taW4obixiWyJyZXNlcnZlZCJdKSk6cmV0dXJuIEZhbHNlCiAgIGlmIGs9PSJQRUFLIiBhbmQgb3A9PSJSRVNFUlZFIiBhbmQgYVsicmVzZXJ2ZWQiXSE9YlsicmVzZXJ2ZWQiXStuOnJldHVybiBGYWxzZQogICBpZiBrPT0iUEVBSyIgYW5kIG9wPT0iQUNRVUlSRSIgYW5kIG5vdCAoYVsicmVzZXJ2ZWQiXT09YlsicmVzZXJ2ZWQiXS1uIGFuZCBhWyJjdXJyZW50Il09PWJbImN1cnJlbnQiXStuKTpyZXR1cm4gRmFsc2UKICAgaWYgaz09IlJBVEUiIGFuZCBvcD09IlJFU0VSVkUiIGFuZCBhWyJyZXNlcnZlZCJdIT1iWyJyZXNlcnZlZCJdK246cmV0dXJuIEZhbHNlCiAgIGlmIGs9PSJSQVRFIiBhbmQgb3A9PSJBQ1FVSVJFIiBhbmQgYVsiYXZhaWxhYmxlIl0hPWJbImF2YWlsYWJsZSJdLW46cmV0dXJuIEZhbHNlCiAgIGlmIGs9PSJMRUFTRSIgYW5kIG9wPT0iTEVBU0VfR1JBTlQiIGFuZCBub3QgYW55KHhbImxlYXNlX2lkIl09PWVbIm9wZXJhdGlvbl9pZCJdIGFuZCB4WyJlcG9jaCJdPT0xIGZvciB4IGluIGFbImFjdGl2ZSJdKTpyZXR1cm4gRmFsc2UKICAgaWYgaz09IlNIQVJFIiBhbmQgb3A9PSJTSEFSRV9BTExPQ0FURSIgYW5kIG5vdCBhbnkoeFsiY2hpbGRfaWQiXT09ZVsiY2hpbGRfaWQiXSBhbmQgeFsiYWxsb2NhdGVkIl09PW4gZm9yIHggaW4gYVsiY2hpbGRyZW4iXSk6cmV0dXJuIEZhbHNlCiAgcmV0dXJuIGFsbChjb25zZXJ2YXRpb24oeFsiYWZ0ZXIiXSkgZm9yIHggaW4gb2JzWyJwaGFzZXMiXSkgYW5kIGNvbnNlcnZhdGlvbihvYnNbImZpbmFsX3N0YXRlIl0pCiBleGNlcHQgRXhjZXB0aW9uOnJldHVybiBGYWxzZQpkZWYgbGF3X2hpZXJhcmNoeShpbnB1dHMsb2JzKToKIHRyeToKICBmb3Igcm93IGluIG9ic1sicGhhc2VzIl06CiAgIHdvcmxkcz1yb3dbImFmdGVyIl1bIndvcmxkcyJdCiAgIGlmIGFueShub3QgaXNpbnN0YW5jZSh3LGRpY3QpIG9yIHNldCh3KSE9eyJ3b3JsZF9pZCJ9IG9yIG5vdCBpc2luc3RhbmNlKHdbIndvcmxkX2lkIl0sc3RyKSBvciBub3Qgd1sid29ybGRfaWQiXSBmb3IgdyBpbiB3b3JsZHMpIG9yIGxlbih7d1sid29ybGRfaWQiXSBmb3IgdyBpbiB3b3JsZHN9KSE9bGVuKHdvcmxkcyk6cmV0dXJuIEZhbHNlCiAgIGRzPXtkWyJkaW1lbnNpb25faWQiXTpkIGZvciBkIGluIHJvd1siYWZ0ZXIiXVsiZGltZW5zaW9ucyJdfQogICBmb3IgZCBpbiBkcy52YWx1ZXMoKToKICAgIHNlZW49c2V0KCk7cD1kWyJwYXJlbnRfYnVkZ2V0X2lkIl0KICAgIGlmIHAgaXMgbm90IE5vbmU6CiAgICAgcGFyZW50PWRzLmdldChwKQogICAgIGlmIHBhcmVudCBpcyBOb25lOnJldHVybiBGYWxzZQogICAgIHJlbD0oZFsia2luZCJdLGRbInVuaXRfaWQiXSxwYXJlbnRbImtpbmQiXSxwYXJlbnRbInVuaXRfaWQiXSkKICAgICBjYXA9bGFtYmRhIHo6elsic3RhdGUiXVsiaXNzdWVkIl0gaWYgelsia2luZCJdPT0iQ09OU1VNQUJMRSIgZWxzZSB6WyJzdGF0ZSJdWyJjYXAiXSBpZiB6WyJraW5kIl0gaW4gKCJQRUFLIiwiUkFURSIpIGVsc2Ugelsic3RhdGUiXVsiY2FwYWNpdHkiXQogICAgIGlmIGRbIm93bmVyX2lkIl0hPXBhcmVudFsib3duZXJfaWQiXSBvciAoKGRbImtpbmQiXSxkWyJ1bml0X2lkIl0pIT0ocGFyZW50WyJraW5kIl0scGFyZW50WyJ1bml0X2lkIl0pIGFuZCByZWwgbm90IGluIFBBUkVOVF9DT01QQVQpIG9yIGNhcChkKT5jYXAocGFyZW50KTpyZXR1cm4gRmFsc2UKICAgIHdoaWxlIHAgaXMgbm90IE5vbmU6CiAgICAgaWYgcCBub3QgaW4gZHMgb3IgcCBpbiBzZWVuOnJldHVybiBGYWxzZQogICAgIHNlZW4uYWRkKHApO3A9ZHNbcF1bInBhcmVudF9idWRnZXRfaWQiXQogICBmb3IgcGFyZW50IGluIGRzLnZhbHVlcygpOgogICAgY2hpbGRyZW49W2QgZm9yIGQgaW4gZHMudmFsdWVzKCkgaWYgZFsicGFyZW50X2J1ZGdldF9pZCJdPT1wYXJlbnRbImRpbWVuc2lvbl9pZCJdXTtjYXA9bGFtYmRhIHo6elsic3RhdGUiXVsiaXNzdWVkIl0gaWYgelsia2luZCJdPT0iQ09OU1VNQUJMRSIgZWxzZSB6WyJzdGF0ZSJdWyJjYXAiXSBpZiB6WyJraW5kIl0gaW4gKCJQRUFLIiwiUkFURSIpIGVsc2Ugelsic3RhdGUiXVsiY2FwYWNpdHkiXQogICAgaWYgc3VtKGNhcChkKSBmb3IgZCBpbiBjaGlsZHJlbik+Y2FwKHBhcmVudCk6cmV0dXJuIEZhbHNlCiAgcmV0dXJuIFRydWUKIGV4Y2VwdCBFeGNlcHRpb246cmV0dXJuIEZhbHNlCmRlZiBsYXdfcmVzZXJ2YXRpb24oaW5wdXRzLG9icyk6CiB0cnk6CiAgZm9yIHBoLHJvdyBpbiBhcHBseV9wYWlycyhpbnB1dHMsb2JzKToKICAgZT1waFsiZXZlbnQiXTtvcD1lLmdldCgib3BlcmF0aW9uIikKICAgaWYgb3Agbm90IGluIE9QX0ZJRUxEUzpyZXR1cm4gRmFsc2UKICAgaWYgb3AgaW4gKCJSRVNFUlZFIiwiRVNDUk9XIikgYW5kIHJvd1sic3RhdHVzIl09PSJBUFBMSUVEIjoKICAgIGI9bmV4dChkIGZvciBkIGluIHJvd1siYmVmb3JlIl1bImRpbWVuc2lvbnMiXSBpZiBkWyJkaW1lbnNpb25faWQiXT09ZVsiZGltZW5zaW9uX2lkIl0pWyJzdGF0ZSJdO2E9bmV4dChkIGZvciBkIGluIHJvd1siYWZ0ZXIiXVsiZGltZW5zaW9ucyJdIGlmIGRbImRpbWVuc2lvbl9pZCJdPT1lWyJkaW1lbnNpb25faWQiXSlbInN0YXRlIl0KICAgIGlmIGFbInJlc2VydmVkIl0tYlsicmVzZXJ2ZWQiXSE9ZVsiYW1vdW50Il06cmV0dXJuIEZhbHNlCiAgIGlmIHJvd1sic3RhdHVzIl0gaW4gKCJERU5ZX0FVVEhPUklUWSIsIlVOU1VQUE9SVEVEIiwiQkVGT1JFX0NPTU1JVCIpIG9yIChyb3dbInN0YXR1cyJdPT0iREVOWV9BRE1JU1NJT04iIGFuZCBvcCBub3QgaW4gKCJMRUFTRV9VU0UiLCJMRUFTRV9SRU5FVyIsIkxFQVNFX1JFVk9LRSIpKToKICAgIGJkPWNsb25lKHJvd1siYmVmb3JlIl0pO2FkPWNsb25lKHJvd1siYWZ0ZXIiXSk7YmRbInJldGFpbmVkIl09YWRbInJldGFpbmVkIl09W10KICAgIGlmIGJkWyJkaW1lbnNpb25zIl0hPWFkWyJkaW1lbnNpb25zIl06cmV0dXJuIEZhbHNlCiAgcmV0dXJuIFRydWUKIGV4Y2VwdCBFeGNlcHRpb246cmV0dXJuIEZhbHNlCmRlZiBsYXdfY2FuY2VsKGlucHV0cyxvYnMpOgogdHJ5OgogIGZvciBwaCxyb3cgaW4gYXBwbHlfcGFpcnMoaW5wdXRzLG9icyk6CiAgIGlmIHBoWyJldmVudCJdLmdldCgib3BlcmF0aW9uIikgbm90IGluIE9QX0ZJRUxEUzpyZXR1cm4gRmFsc2UKICAgaWYgcGhbImV2ZW50Il1bIm9wZXJhdGlvbiJdIGluICgiRkFJTCIsIkxBVEVfUkVTVUxUIiwiV09STERfRElTQ0FSRCIsIkRFUEVOREVOQ1lfUk9MTEJBQ0siLCJDQU5DRUxfUkVRVUVTVCIpOgogICAgZm9yIGIsYSBpbiB6aXAocm93WyJiZWZvcmUiXVsiZGltZW5zaW9ucyJdLHJvd1siYWZ0ZXIiXVsiZGltZW5zaW9ucyJdKToKICAgICBmb3Iga2V5IGluICgiY29uc3VtZWQiLCJyZXNlcnZlZCIsImZyZWUiLCJjdXJyZW50IiwiYXZhaWxhYmxlIik6CiAgICAgIGlmIGtleSBpbiBiWyJzdGF0ZSJdIGFuZCBiWyJzdGF0ZSJdW2tleV0hPWFbInN0YXRlIl1ba2V5XTpyZXR1cm4gRmFsc2UKICByZXR1cm4gVHJ1ZQogZXhjZXB0IEV4Y2VwdGlvbjpyZXR1cm4gRmFsc2UKZGVmIGxhd19wcm92aWRlcihpbnB1dHMsb2JzKToKIHRyeToKICBmYWN0cz17eFsiZmFjdF9pZCJdOnggZm9yIHggaW4gaW5wdXRzWyJpbml0aWFsX3N0YXRlIl1bInByb3ZpZGVyX2ZhY3RzIl19O3N1Y2Nlc3NvcnM9e3hbInByaW9yX2ZhY3RfaWQiXSBmb3IgeCBpbiBmYWN0cy52YWx1ZXMoKSBpZiB4WyJwcmlvcl9mYWN0X2lkIl0gaXMgbm90IE5vbmV9O29wcz17eFsib3BlcmF0aW9uX2lkIl0gZm9yIHggaW4gZmFjdHMudmFsdWVzKCl9CiAgZm9yIHBoLHJvdyBpbiBhcHBseV9wYWlycyhpbnB1dHMsb2JzKToKICAgZT1waFsiZXZlbnQiXQogICBpZiBub3QgZVsib3BlcmF0aW9uIl0uc3RhcnRzd2l0aCgiUFJPVklERVJfIik6Y29udGludWUKICAgc3RhZ2U9ZVsib3BlcmF0aW9uIl1bOTpdO3ByaW9yPWVbInByaW9yX2ZhY3RfaWQiXTtvbGQ9ZmFjdHMuZ2V0KHByaW9yKTtsZWdhbD1zdGFnZT09IkVTVElNQVRFIiBhbmQgcHJpb3IgaXMgTm9uZQogICBpZiBvbGQgaXMgbm90IE5vbmUgYW5kIG9sZFsicHJvdmlkZXJfYWNjb3VudF9pZCJdPT1lWyJwcm92aWRlcl9hY2NvdW50X2lkIl06CiAgICBsZWdhbHw9b2xkWyJzdGFnZSJdPT0iRVNUSU1BVEUiIGFuZCBzdGFnZSBpbiAoIk9CU0VSVkVEIiwiVU5LTk9XTiIpO2xlZ2FsfD1vbGRbInN0YWdlIl09PSJVTktOT1dOIiBhbmQgc3RhZ2U9PSJPQlNFUlZFRCIgYW5kIGVbImFtb3VudCJdPD1vbGRbImFtb3VudCJdO2xlZ2FsfD1vbGRbInN0YWdlIl09PSJPQlNFUlZFRCIgYW5kIHN0YWdlPT0iU0VUVExFRCIgYW5kIGVbImFtb3VudCJdPT1vbGRbImFtb3VudCJdO2xlZ2FsfD1vbGRbInN0YWdlIl0gaW4gKCJTRVRUTEVEIiwiQ1JFRElUIikgYW5kIHN0YWdlPT0iQ1JFRElUIgogICBsZWdhbD1sZWdhbCBhbmQgZVsicHJvdmlkZXJfZmFjdF9pZCJdIG5vdCBpbiBmYWN0cyBhbmQgZVsib3BlcmF0aW9uX2lkIl0gbm90IGluIG9wcyBhbmQgcHJpb3Igbm90IGluIHN1Y2Nlc3NvcnMKICAgaWYgbGVnYWwgYW5kIHN0YWdlPT0iQ1JFRElUIjoKICAgIHg9b2xkO2NyZWRpdHM9ZVsiYW1vdW50Il0KICAgIHdoaWxlIHggaXMgbm90IE5vbmUgYW5kIHhbInN0YWdlIl09PSJDUkVESVQiOmNyZWRpdHMrPXhbImFtb3VudCJdO3g9ZmFjdHMuZ2V0KHhbInByaW9yX2ZhY3RfaWQiXSkKICAgIGxlZ2FsPXggaXMgbm90IE5vbmUgYW5kIHhbInN0YWdlIl09PSJTRVRUTEVEIiBhbmQgY3JlZGl0czw9eFsiYW1vdW50Il0KICAgYXBwbGllZD1yb3dbInN0YXR1cyJdIGluICgiQVBQTElFRCIsIlVOS05PV05fUkVDT05DSUxFIikKICAgaWYgYXBwbGllZCE9bGVnYWw6cmV0dXJuIEZhbHNlCiAgIGlmIGFwcGxpZWQ6CiAgICBmPXsiYW1vdW50IjplWyJhbW91bnQiXSwiZmFjdF9pZCI6ZVsicHJvdmlkZXJfZmFjdF9pZCJdLCJvcGVyYXRpb25faWQiOmVbIm9wZXJhdGlvbl9pZCJdLCJwcmlvcl9mYWN0X2lkIjpwcmlvciwicHJvdmlkZXJfYWNjb3VudF9pZCI6ZVsicHJvdmlkZXJfYWNjb3VudF9pZCJdLCJzdGFnZSI6c3RhZ2V9O2ZhY3RzW2ZbImZhY3RfaWQiXV09ZjtvcHMuYWRkKGZbIm9wZXJhdGlvbl9pZCJdKQogICAgaWYgcHJpb3IgaXMgbm90IE5vbmU6c3VjY2Vzc29ycy5hZGQocHJpb3IpCiAgIGlmIHJvd1siYWZ0ZXIiXVsicHJvdmlkZXJfZmFjdHMiXSE9bGlzdChmYWN0cy52YWx1ZXMoKSk6cmV0dXJuIEZhbHNlCiAgcmV0dXJuIFRydWUKIGV4Y2VwdCBFeGNlcHRpb246cmV0dXJuIEZhbHNlCmRlZiBsYXdfY29tcG91bmQoaW5wdXRzLG9icyk6CiB0cnk6CiAgZm9yIHBoLHJvdyBpbiBhcHBseV9wYWlycyhpbnB1dHMsb2JzKToKICAgaWYgcGhbImV2ZW50Il1bIm9wZXJhdGlvbiJdPT0iQ09NUE9VTkQiOgogICAgaWYgcm93WyJzdGF0dXMiXSBpbiAoIlJFUExBWSIsIlJFQ09OQ0lMRV9FWFBJUkVEIik6Y29udGludWUKICAgIGU9cGhbImV2ZW50Il0KICAgIGlmIGFueSh4WyJldmVudCJdWyJvcGVyYXRpb24iXT09IkNPTVBPVU5EIiBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdKTpyZXR1cm4gRmFsc2UKICAgIGlkcz1bZVsib3BlcmF0aW9uX2lkIl1dK1t4WyJldmVudCJdWyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdXTtyZWNvcmRzPXt4WyJvcGVyYXRpb25faWQiXTp4IGZvciB4IGluIHJvd1siYWZ0ZXIiXVsicmV0YWluZWQiXSBpZiB4WyJvcGVyYXRpb25faWQiXSBpbiBpZHN9CiAgICBpZiBsZW4ocmVjb3JkcykhPWxlbihpZHMpIG9yIGFueShyZWNvcmRzW3hbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdXVsiY2F1c2FsX29wZXJhdGlvbl9pZCJdIT1lWyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdKTpyZXR1cm4gRmFsc2UKICAgIGV4cGVjdGVkPVtdCiAgICBmb3IgY2hpbGQgaW4gZVsiY2hpbGRyZW4iXToKICAgICBjZT1jaGlsZFsiZXZlbnQiXTtjYT1jaGlsZFsiYXV0aG9yaXR5Il0KICAgICBpZiBub3QgYXV0aG9yaXR5X3JlbGF0aW9uKGNhLGNlKTpleHBlY3RlZC5hcHBlbmQoIkRFTllfQVVUSE9SSVRZIikKICAgICBlbGlmIGNlLmdldCgib3BlcmF0aW9uIikgbm90IGluIE9QX0ZJRUxEUyBvciBjZVsib3BlcmF0aW9uIl0gaW4gVU5TVVBQT1JURURfT1BTOmV4cGVjdGVkLmFwcGVuZCgiVU5TVVBQT1JURUQiKQogICAgIGVsc2U6ZXhwZWN0ZWQuYXBwZW5kKHJlY29yZHNbY2VbIm9wZXJhdGlvbl9pZCJdXVsib3V0Y29tZSJdKQogICAgIGlmIHJlY29yZHNbY2VbIm9wZXJhdGlvbl9pZCJdXVsiY2xhaW1lZF9pZHMiXSE9Y2xhaW1lZF9pZHMoZSk6cmV0dXJuIEZhbHNlCiAgICBjaGlsZF9vdXRjb21lcz1bcmVjb3Jkc1t4WyJldmVudCJdWyJvcGVyYXRpb25faWQiXV1bIm91dGNvbWUiXSBmb3IgeCBpbiBlWyJjaGlsZHJlbiJdXQogICAgaWYgY2hpbGRfb3V0Y29tZXMhPWV4cGVjdGVkOnJldHVybiBGYWxzZQogICAgb3V0ZXI9IkFQUExJRUQiIGlmIGFsbCh4PT0iQVBQTElFRCIgZm9yIHggaW4gY2hpbGRfb3V0Y29tZXMpIGVsc2UgIkRFTllfQURNSVNTSU9OIgogICAgaWYgcm93WyJzdGF0dXMiXSE9b3V0ZXIgb3IgcmVjb3Jkc1tlWyJvcGVyYXRpb25faWQiXV1bIm91dGNvbWUiXSE9b3V0ZXIgb3IgcmVjb3Jkc1tlWyJvcGVyYXRpb25faWQiXV1bImNsYWltZWRfaWRzIl0hPWNsYWltZWRfaWRzKGUpOnJldHVybiBGYWxzZQogICAgaWYgb3V0ZXIhPSJBUFBMSUVEIjoKICAgICBiPWNsb25lKHJvd1siYmVmb3JlIl0pO2E9Y2xvbmUocm93WyJhZnRlciJdKTtiWyJyZXRhaW5lZCJdPWFbInJldGFpbmVkIl09W10KICAgICBpZiBiIT1hOnJldHVybiBGYWxzZQogIHJldHVybiBUcnVlCiBleGNlcHQgRXhjZXB0aW9uOnJldHVybiBGYWxzZQpkZWYgbGF3X3JlY292ZXJ5KGlucHV0cyxvYnMpOgogdHJ5OgogIGlmIGlucHV0c1siaW5pdGlhbF9zdGF0ZSJdWyJyZXRhaW5lZCJdIG9yIGlucHV0c1siaW5pdGlhbF9zdGF0ZSJdWyJ0b21ic3RvbmVzIl06cmV0dXJuIEZhbHNlCiAgc2Vlbj17fQogIGZvciBwaCxyb3cgaW4gYXBwbHlfcGFpcnMoaW5wdXRzLG9icyk6CiAgIGU9cGhbImV2ZW50Il07cHJpb3I9c2Vlbi5nZXQoZVsib3BlcmF0aW9uX2lkIl0pCiAgIGlmIHByaW9yIGFuZCBwcmlvciE9dnNoYShlKSBhbmQgcm93WyJzdGF0dXMiXSE9IkRFTllfQURNSVNTSU9OIjpyZXR1cm4gRmFsc2UKICAgc2Vlbi5zZXRkZWZhdWx0KGVbIm9wZXJhdGlvbl9pZCJdLHZzaGEoZSkpO25ldz1beCBmb3IgeCBpbiByb3dbImFmdGVyIl1bInJldGFpbmVkIl0gaWYgeCBub3QgaW4gcm93WyJiZWZvcmUiXVsicmV0YWluZWQiXV0KICAgZm9yIHggaW4gbmV3OgogICAgdGFyZ2V0PWUgaWYgeFsib3BlcmF0aW9uX2lkIl09PWVbIm9wZXJhdGlvbl9pZCJdIGVsc2UgbmV4dCgoY1siZXZlbnQiXSBmb3IgYyBpbiBlLmdldCgiY2hpbGRyZW4iLFtdKSBpZiBjWyJldmVudCJdWyJvcGVyYXRpb25faWQiXT09eFsib3BlcmF0aW9uX2lkIl0pLE5vbmUpCiAgICBpZiB0YXJnZXQgaXMgTm9uZSBvciB4WyJiaW5kaW5nX3NoYTI1NiJdIT12c2hhKHRhcmdldCkgb3IgeFsiYXR0ZW1wdGVkX2F0Il0hPXBoWyJsb2dpY2FsX25vdyJdIG9yIHhbImV4cGlyZXNfYXQiXSE9cGhbImxvZ2ljYWxfbm93Il0rMjAgb3IgeFsiY2xhaW1lZF9pZHMiXSE9Y2xhaW1lZF9pZHMoZSk6cmV0dXJuIEZhbHNlCiAgICBjYXVzYWw9ZVsib3BlcmF0aW9uX2lkIl0KICAgIGV4cGVjdGVkPXJvd1sic3RhdHVzIl0gaWYgdGFyZ2V0IGlzIGUgZWxzZSAoIkRFTllfQVVUSE9SSVRZIiBpZiBub3QgYXV0aG9yaXR5X3JlbGF0aW9uKG5leHQoY1siYXV0aG9yaXR5Il0gZm9yIGMgaW4gZVsiY2hpbGRyZW4iXSBpZiBjWyJldmVudCJdIGlzIHRhcmdldCksdGFyZ2V0KSBlbHNlIHhbIm91dGNvbWUiXSkKICAgIGlmIHhbImNhdXNhbF9vcGVyYXRpb25faWQiXSE9Y2F1c2FsIG9yIHhbIm91dGNvbWUiXSE9ZXhwZWN0ZWQ6cmV0dXJuIEZhbHNlCiAgIGZvciB4IGluIHJvd1siYWZ0ZXIiXVsicmV0YWluZWQiXToKICAgIGlmIHhbImF0dGVtcHRlZF9hdCJdPnhbImV4cGlyZXNfYXQiXSBvciB4WyJvdXRjb21lIl0gbm90IGluIFNUQVRVU0VTKygiQkVGT1JFX0NPTU1JVCIsKTpyZXR1cm4gRmFsc2UKICAgZm9yIHggaW4gcm93WyJhZnRlciJdWyJ0b21ic3RvbmVzIl06CiAgICBvbGQ9bmV4dCgoeiBmb3IgeiBpbiByb3dbImJlZm9yZSJdWyJyZXRhaW5lZCJdIGlmIHpbIm9wZXJhdGlvbl9pZCJdPT14WyJvcGVyYXRpb25faWQiXSksTm9uZSkKICAgIGlmIHhbInJldGlyZWRfYXQiXT5waFsibG9naWNhbF9ub3ciXSBvciAoeCBub3QgaW4gcm93WyJiZWZvcmUiXVsidG9tYnN0b25lcyJdIGFuZCAob2xkIGlzIE5vbmUgb3IgeFsiYmluZGluZ19zaGEyNTYiXSE9b2xkWyJiaW5kaW5nX3NoYTI1NiJdIG9yIHhbIm91dGNvbWUiXSE9b2xkWyJvdXRjb21lIl0gb3IgeFsiY2F1c2FsX29wZXJhdGlvbl9pZCJdIT1lWyJvcGVyYXRpb25faWQiXSBvciB4WyJyZXRpcmVkX2F0Il0hPXBoWyJsb2dpY2FsX25vdyJdKSk6cmV0dXJuIEZhbHNlCiAgcmV0dXJuIFRydWUKIGV4Y2VwdCBFeGNlcHRpb246cmV0dXJuIEZhbHNlCmRlZiBsYXdfYXR0cmlidXRpb24oaW5wdXRzLG9icyk6CiB0cnk6CiAgZm9yIHBoLHJvdyBpbiBhcHBseV9wYWlycyhpbnB1dHMsb2JzKToKICAgcGFpcnM9WyhwaFsiYXV0aG9yaXR5Il0scGhbImV2ZW50Il0pXSsoWyh4WyJhdXRob3JpdHkiXSx4WyJldmVudCJdKSBmb3IgeCBpbiBwaFsiZXZlbnQiXS5nZXQoImNoaWxkcmVuIixbXSldIGlmIHBoWyJldmVudCJdLmdldCgib3BlcmF0aW9uIik9PSJDT01QT1VORCIgZWxzZSBbXSkKICAgcGxhbnM9e3BbInBsYW5faWQiXTpwIGZvciBwIGluIHJvd1siYmVmb3JlIl1bInJlc291cmNlX2JpbmRpbmdfcGxhbnMiXX07ZGltcz17ZFsiZGltZW5zaW9uX2lkIl06ZCBmb3IgZCBpbiByb3dbImJlZm9yZSJdWyJkaW1lbnNpb25zIl19O3dvcmxkcz17d1sid29ybGRfaWQiXSBmb3IgdyBpbiByb3dbImJlZm9yZSJdWyJ3b3JsZHMiXX07YWZ0ZXJfZGltcz17ZFsiZGltZW5zaW9uX2lkIl0gZm9yIGQgaW4gcm93WyJhZnRlciJdWyJkaW1lbnNpb25zIl19O2FmdGVyX3dvcmxkcz17d1sid29ybGRfaWQiXSBmb3IgdyBpbiByb3dbImFmdGVyIl1bIndvcmxkcyJdfQogICBpZiBhbnkocFsiZGltZW5zaW9uX2lkIl0gbm90IGluIGFmdGVyX2RpbXMgb3IgcFsid29ybGRfaWQiXSBub3QgaW4gYWZ0ZXJfd29ybGRzIGZvciBwIGluIHJvd1siYWZ0ZXIiXVsicmVzb3VyY2VfYmluZGluZ19wbGFucyJdKTpyZXR1cm4gRmFsc2UKICAgZm9yIGEsZSBpbiBwYWlyczoKICAgIHA9cGxhbnMuZ2V0KGVbInBsYW5faWQiXSk7ZD1kaW1zLmdldChlWyJkaW1lbnNpb25faWQiXSkKICAgIGFjdG9yX29rPWVbImFjdG9yX2lkIl09PWFbImFjdG9yX2lkIl09PWFbImhhbmRvZmYiXVsiYWN0b3JfaWQiXTthY3Rvcl9kZW5pZWQ9YW55KHJbIm9wZXJhdGlvbl9pZCJdPT1lWyJvcGVyYXRpb25faWQiXSBhbmQgclsib3V0Y29tZSJdPT0iREVOWV9BVVRIT1JJVFkiIGFuZCByWyJiaW5kaW5nX3NoYTI1NiJdPT12c2hhKGUpIGZvciByIGluIHJvd1siYWZ0ZXIiXVsicmV0YWluZWQiXSkKICAgIGlmIHAgaXMgTm9uZSBvciBkIGlzIE5vbmUgb3IgZVsid29ybGRfaWQiXSBub3QgaW4gd29ybGRzIG9yIChub3QgYWN0b3Jfb2sgYW5kIG5vdCBhY3Rvcl9kZW5pZWQpIG9yIChwWyJkaW1lbnNpb25faWQiXSxwWyJ3b3JsZF9pZCJdLHBbIm93bmVyX2lkIl0scFsicmVzb3VyY2VfaWQiXSxwWyJjb21taXRtZW50X2lkIl0pIT0oZVsiZGltZW5zaW9uX2lkIl0sZVsid29ybGRfaWQiXSxlWyJvd25lcl9pZCJdLGVbInJlc291cmNlX2lkIl0sZVsiY29tbWl0bWVudF9pZCJdKTpyZXR1cm4gRmFsc2UKICByZXR1cm4gVHJ1ZQogZXhjZXB0IEV4Y2VwdGlvbjpyZXR1cm4gRmFsc2UKZGVmIGxhd19zZXBhcmF0aW9uKGlucHV0cyxvYnMpOgogdHJ5OgogIGZvciBwaCxyb3cgaW4gYXBwbHlfcGFpcnMoaW5wdXRzLG9icyk6CiAgIGU9cGhbImV2ZW50Il0KICAgaWYgZS5nZXQoIm9wZXJhdGlvbiIpIG5vdCBpbiBPUF9GSUVMRFM6cmV0dXJuIEZhbHNlCiAgIGlmIGVbIm9wZXJhdGlvbiJdIGluIFVOU1VQUE9SVEVEX09QUyBhbmQgcm93WyJzdGF0dXMiXSE9IlVOU1VQUE9SVEVEIjpyZXR1cm4gRmFsc2UKICByZXR1cm4gVHJ1ZQogZXhjZXB0IEV4Y2VwdGlvbjpyZXR1cm4gRmFsc2UKZGVmIGxhd19jYW5vbmljYWwoaW5wdXRzLG9icyk6CiB0cnk6cmV0dXJuIGNhbm9uaWNhbChwYXJzZV9ieXRlcyhjYW5vbmljYWwob2JzKSkpPT1jYW5vbmljYWwob2JzKSBhbmQgb2JzWyJpbnB1dF9zaGEyNTYiXT09dnNoYShpbnB1dHMpCiBleGNlcHQgRXhjZXB0aW9uOnJldHVybiBGYWxzZQpMQVdfSEVMUEVSUz0obGF3X3dob2xlLGxhd190eXBlZCxsYXdfYXV0aG9yaXR5LGxhd19raW5kLGxhd19oaWVyYXJjaHksbGF3X3Jlc2VydmF0aW9uLGxhd19jYW5jZWwsbGF3X3Byb3ZpZGVyLGxhd19jb21wb3VuZCxsYXdfcmVjb3ZlcnksbGF3X2F0dHJpYnV0aW9uLGxhd19zZXBhcmF0aW9uLGxhd19jYW5vbmljYWwpCmRlZiBsYXdfcmVzdWx0cyhpbnB1dHMsb2JzKTpyZXR1cm4ge25hbWU6aGVscGVyKGlucHV0cyxvYnMpIGZvciBuYW1lLGhlbHBlciBpbiB6aXAoTEFXUyxMQVdfSEVMUEVSUyl9CgpkZWYgc2VtYW50aWNfY2FzZXMobSk6CiBmb3IgYyBpbiBtWyJjYXNlcyJdOnlpZWxkIGMsY1siaW5wdXRzIl0KZGVmIHN0YWdlX2Jfc2VtYW50aWNfcHJvamVjdGlvbihtKToKIHJvd3M9W10KIGZvciBjLGlucCBpbiBzZW1hbnRpY19jYXNlcyhtKToKICByb3c9eyJjYXNlX2lkIjpjWyJpZCJdLCJpbnB1dF9zaGEyNTYiOnZzaGEoaW5wKX0KICB0cnk6bz1kZXJpdmUoaW5wKTtyb3cudXBkYXRlKHsiY2xhc3NpZmljYXRpb24iOiJBQ0NFUFRFRF9MQVdTX1BBU1MiLCJsYXdzIjpsYXdfcmVzdWx0cyhpbnAsbyksIm9ic2VydmF0aW9uIjpvfSkKICBleGNlcHQgTWFuaWZlc3RFcnJvcjoKICAgdHJ5Om9yYWNsZV9vYnNlcnZhdGlvbihpbnApCiAgIGV4Y2VwdCBNYW5pZmVzdEVycm9yOnJvd1siY2xhc3NpZmljYXRpb24iXT0iU1RSVUNUVVJBTF9SRUpFQ1RfUEFTUyIKICAgZWxzZTpyYWlzZQogIHJvd3MuYXBwZW5kKHJvdykKIHJldHVybiByb3dzCmRlZiBzZW1hbnRpY19ib2R5KG0sbXJhdyk6CiBjZWxscz1bXTthc3NlcnRpb25zPVtdCiBmb3IgYyxpbnAgaW4gc2VtYW50aWNfY2FzZXMobSk6CiAgdHJ5OgogICBvPWRlcml2ZShpbnApO2xhd3M9bGF3X3Jlc3VsdHMoaW5wLG8pCiAgIGlmIG5vdCBhbGwobGF3cy52YWx1ZXMoKSk6cmFpc2UgTWFuaWZlc3RFcnJvcigiYWNjZXB0ZWQgZmFsc2UgbGF3IikKICAgY2VsbD17ImNhc2VfaWQiOmNbImlkIl0sImlucHV0X3NoYTI1NiI6dnNoYShpbnApLCJvYnNlcnZhdGlvbiI6b307YXNzZXJ0aW9uPXsiY2FzZV9pZCI6Y1siaWQiXSwiY2xhc3NpZmljYXRpb24iOiJBQ0NFUFRFRF9MQVdTX1BBU1MiLCJsYXdzIjpsYXdzLCJwYXNzIjpUcnVlfQogIGV4Y2VwdCBNYW5pZmVzdEVycm9yOgogICB0cnk6b3JhY2xlX29ic2VydmF0aW9uKGlucCkKICAgZXhjZXB0IE1hbmlmZXN0RXJyb3I6Y2VsbD17ImNhc2VfaWQiOmNbImlkIl0sImlucHV0X3NoYTI1NiI6dnNoYShpbnApLCJyZWplY3Rpb24iOiJQUklNQVJZX0FORF9PUkFDTEVfUkVKRUNUIn07YXNzZXJ0aW9uPXsiY2FzZV9pZCI6Y1siaWQiXSwiY2xhc3NpZmljYXRpb24iOiJTVFJVQ1RVUkFMX1JFSkVDVF9QQVNTIiwibGF3cyI6Tm9uZSwicGFzcyI6VHJ1ZX0KICAgZWxzZTpyYWlzZQogIGNlbGxzLmFwcGVuZChjZWxsKTthc3NlcnRpb25zLmFwcGVuZChhc3NlcnRpb24pCiByZXR1cm4geyJhc3NlcnRpb25zIjphc3NlcnRpb25zLCJjZWxscyI6Y2VsbHMsIm1hbmlmZXN0X3NoYTI1NiI6c2hhKG1yYXcpfQpkZWYgb19zZW1hbnRpY19ib2R5X3Byb2plY3Rpb24obSxtcmF3KToKIGJvZHk9c2VtYW50aWNfYm9keShtLG1yYXcpO2JvZHlbIm1hbmlmZXN0X3NoYTI1NiJdPSJATUFOSUZFU1RfU0hBMjU2QCI7cmV0dXJuIGJvZHkKZGVmIHJlZmVyZW5jZV9vKG0sbXJhdyk6cmV0dXJuIHsicHJvdmVuYW5jZV9xdWFsaWZpZWQiOkZhbHNlLCJzY2hlbWEiOiJEMDA4LU8tU1RBR0UtQS0xIiwic2VtYW50aWNfYm9keSI6c2VtYW50aWNfYm9keShtLG1yYXcpfQpkZWYgdmFsaWRhdGVfb192YWx1ZShvLG0sbXJhdyk6CiBleGFjdChvLHsicHJvdmVuYW5jZV9xdWFsaWZpZWQiLCJzY2hlbWEiLCJzZW1hbnRpY19ib2R5In0sIk8iKQogaWYgb1sic2NoZW1hIl0hPSJEMDA4LU8tU1RBR0UtQS0xIiBvciBvWyJwcm92ZW5hbmNlX3F1YWxpZmllZCJdIGlzIG5vdCBGYWxzZSBvciBjYW5vbmljYWwob1sic2VtYW50aWNfYm9keSJdKSE9Y2Fub25pY2FsKHNlbWFudGljX2JvZHkobSxtcmF3KSk6cmFpc2UgTWFuaWZlc3RFcnJvcigiTyBtaXNtYXRjaCIpCiByZXR1cm4gbwoKQHB1YmxpYwpkZWYgdmFsaWRhdGVfbWFuaWZlc3RfYnl0ZXMocmF3KToKIG09cGFyc2VfYnl0ZXMocmF3KQogaWYgY2Fub25pY2FsKG1hbmlmZXN0X3NwZWMoKSkhPXJhdzpyYWlzZSBNYW5pZmVzdEVycm9yKCJtYW5pZmVzdCBnZW5lcmF0b3IgbWlzbWF0Y2giKQogaWYgbVsic2NoZW1hIl0hPSJEMDA4LUJVREdFVC1NQU5JRkVTVC0zIiBvciBtWyJweXRob25fZ3JhbW1hciJdIT1QWVRIT05fR1JBTU1BUiBvciBtWyJzZW1hbnRpY19zdGFnZSJdIT0iQl9QQVNTIiBvciBtWyJwcm92ZW5hbmNlX3F1YWxpZmllZCJdIGlzIG5vdCBGYWxzZSBvciBtWyJkZWNpc2lvbiJdIT17ImZyb3plbiI6RmFsc2UsImlkIjoiRC0wMDgiLCJzdGF0dXMiOiJPUEVOIn06cmFpc2UgTWFuaWZlc3RFcnJvcigibWFuaWZlc3QgdjMgaGVhZGVyIikKIGV4cGVjdGVkX2xvY2tzPW1hbmlmZXN0X3NwZWMoKVsic2VtYW50aWNfbG9ja3MiXQogaWYgbVsic2VtYW50aWNfbG9ja3MiXSE9ZXhwZWN0ZWRfbG9ja3M6cmFpc2UgTWFuaWZlc3RFcnJvcigic2VtYW50aWMgbG9jayBkZXNjcmlwdG9ycyIpCiBzdGFnZV9iX3Jhdz1jYW5vbmljYWwoc3RhZ2VfYl9zZW1hbnRpY19wcm9qZWN0aW9uKG0pKTtvX2JvZHlfcmF3PWNhbm9uaWNhbChvX3NlbWFudGljX2JvZHlfcHJvamVjdGlvbihtLHJhdykpCiBpZiAobGVuKHN0YWdlX2JfcmF3KSxzaGEoc3RhZ2VfYl9yYXcpKSE9KGV4cGVjdGVkX2xvY2tzWyJzdGFnZV9iX3NlbWFudGljX3Byb2plY3Rpb24iXVsiYnl0ZV9sZW5ndGgiXSxleHBlY3RlZF9sb2Nrc1sic3RhZ2VfYl9zZW1hbnRpY19wcm9qZWN0aW9uIl1bInNoYTI1NiJdKSBvciAobGVuKG9fYm9keV9yYXcpLHNoYShvX2JvZHlfcmF3KSkhPShleHBlY3RlZF9sb2Nrc1sib19zZW1hbnRpY19ib2R5Il1bImJ5dGVfbGVuZ3RoIl0sZXhwZWN0ZWRfbG9ja3NbIm9fc2VtYW50aWNfYm9keSJdWyJzaGEyNTYiXSk6cmFpc2UgTWFuaWZlc3RFcnJvcigic2VtYW50aWMgbG9jayByZWdlbmVyYXRpb24iKQogaWYgbVsicHJvdmVuYW5jZSJdWyJhcnRpZmFjdF9iYXNlbmFtZSJdIT0iZDAwOC1idWRnZXQtbWFuaWZlc3QtdjEuanNvbiIgb3IgbVsicHJvdmVuYW5jZSJdWyJzdGFnZSJdIT0iQ19QUkVSRUdJU1RSQVRJT04iIG9yIG1bInByb3ZlbmFuY2UiXVsic3RhdHVzIl0hPSJOT19ST09UX09SX0VWSURFTkNFX1lFVCI6cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvdmVuYW5jZSBwcmVyZWciKQogdmFsaWRhdGVfZXZpZGVuY2VfZGFnKG1bInByb3ZlbmFuY2UiXVsiZGFnIl0pCiBpZiBhbnkoayBpbiBtIGZvciBrIGluICgiZXZpZGVuY2UiLCJmcmVlemUiLCJyZXNvbHV0aW9uIiwiYWRvcHRpb24iKSk6cmFpc2UgTWFuaWZlc3RFcnJvcigiYWN0dWFsIGV2aWRlbmNlIGluIHByZXJlZyIpCiBjZWxscz1tWyJiOCJdWyJtYXRyaXgiXQogaWYgbGVuKGNlbGxzKSE9MjA0IG9yIHsoeFsicXVhbnRpdHkiXSx4WyJsYXciXSkgZm9yIHggaW4gY2VsbHN9IT17KHEsbCkgZm9yIHEgaW4gUSBmb3IgbCBpbiBCOH0gb3IgbGVuKHt4WyJyZWFzb24iXSBmb3IgeCBpbiBjZWxsc30pIT0yMDQ6cmFpc2UgTWFuaWZlc3RFcnJvcigiQjggY2xvc3VyZS91bmlxdWUgcmVhc29ucyIpCiBpZiBhbnkoeFsiY2xhc3NpZmljYXRpb24iXSBub3QgaW4gKCJBUFBMSUNBQkxFIiwiTl9BIikgb3IgKHhbImNsYXNzaWZpY2F0aW9uIl0gbm90IGluIHhbInJlYXNvbiJdKSBvciAiY29uc3RyYWlucyBpdHMgdHlwZWQgYWNjb3VudGluZyBvYnNlcnZhdGlvbiIgaW4geFsicmVhc29uIl0gZm9yIHggaW4gY2VsbHMpOnJhaXNlIE1hbmlmZXN0RXJyb3IoIkI4IHNlbWFudGljIHJlYXNvbiIpCiBmb3IgYyxpbnAgaW4gc2VtYW50aWNfY2FzZXMobSk6CiAgaWYgRk9SQklEREVOX0lOUFVUX0tFWVMmc2V0KGMpOnJhaXNlIE1hbmlmZXN0RXJyb3IoInRydXN0ZWQgY2FzZSBmbGFnIikKICB0cnk6CiAgIG89ZGVyaXZlKGlucCk7dz1vcmFjbGVfb2JzZXJ2YXRpb24oaW5wKQogICBpZiBvIT13IG9yIG5vdCBhbGwobGF3X3Jlc3VsdHMoaW5wLG8pLnZhbHVlcygpKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJsYXcgZmFpbHVyZSAiK2NbImlkIl0pCiAgZXhjZXB0IE1hbmlmZXN0RXJyb3I6CiAgIHRyeTpvcmFjbGVfb2JzZXJ2YXRpb24oaW5wKQogICBleGNlcHQgTWFuaWZlc3RFcnJvcjpjb250aW51ZQogICByYWlzZQogYm9keT1zZW1hbnRpY19ib2R5KG0scmF3KTthY2NlcHRlZD1beCBmb3IgeCBpbiBib2R5WyJhc3NlcnRpb25zIl0gaWYgeFsiY2xhc3NpZmljYXRpb24iXT09IkFDQ0VQVEVEX0xBV1NfUEFTUyJdO3JlamVjdGVkPVt4IGZvciB4IGluIGJvZHlbImFzc2VydGlvbnMiXSBpZiB4WyJjbGFzc2lmaWNhdGlvbiJdPT0iU1RSVUNUVVJBTF9SRUpFQ1RfUEFTUyJdCiBpZiBsZW4oYWNjZXB0ZWQpK2xlbihyZWplY3RlZCkhPWxlbihtWyJjYXNlcyJdKSBvciBhbnkoeFsibGF3cyJdIGlzIE5vbmUgb3Igbm90IGFsbCh4WyJsYXdzIl0udmFsdWVzKCkpIG9yIHhbInBhc3MiXSBpcyBub3QgVHJ1ZSBmb3IgeCBpbiBhY2NlcHRlZCkgb3IgYW55KHhbImxhd3MiXSBpcyBub3QgTm9uZSBvciB4WyJwYXNzIl0gaXMgbm90IFRydWUgZm9yIHggaW4gcmVqZWN0ZWQpOnJhaXNlIE1hbmlmZXN0RXJyb3IoInN0cnVjdHVyYWwgcmVwb3J0aW5nIikKIHJldHVybiBtLHsiYjhfY2VsbF9jb3VudCI6MjA0LCJmYW1pbHlfY291bnQiOmxlbih7Y1siZmFtaWx5Il0gZm9yIGMgaW4gbVsiY2FzZXMiXX0pLCJsYXdfY291bnQiOmxlbihMQVdTKSwicHJvamVjdGlvbl9jb3VudCI6NiwicmF3X3N1YmNhc2VfY291bnQiOmxlbihtWyJjYXNlcyJdKSwic3RydWN0dXJhbF9yZWplY3RfY291bnQiOmxlbihyZWplY3RlZCl9CgpAcHVibGljCmRlZiB2YWxpZGF0ZV9hcnRpZmFjdHMobWFuaWZlc3RfcmF3LHBhY2tldF9yYXcsdmFsaWRhdG9yX3NvdXJjZSk6CiB2ZXJpZnlfcHJlcmVnKHBhY2tldF9yYXcsdmFsaWRhdG9yX3NvdXJjZSkKIHJldHVybiB2YWxpZGF0ZV9tYW5pZmVzdF9ieXRlcyhtYW5pZmVzdF9yYXcpCgojIFN0YWdlIEMgdjMgZnV0dXJlIHByb3ZlbmFuY2UgY29udHJhY3QuIE5vIGFjdHVhbCBhcnRpZmFjdCBpcyBzaGlwcGVkIGJ5IHRoaXMgZmlsZS4KU1RBR0VfQ19QQVRIUz0oImRlY2lzaW9ucy9ELTAwOC1QQUNLRVQubWQiLCJkZWNpc2lvbnMvZDAwOC1idWRnZXQtbWFuaWZlc3QtdjEuanNvbiIsImRlY2lzaW9ucy9kMDA4X21hbmlmZXN0LnB5IiwiZGVjaXNpb25zL3Rlc3RfZDAwOF9tYW5pZmVzdC5weSIpClBST0RVQ0VSX1JPTEVTPSgiRVhFQ1VUT1IiLCJDSEVDS0VSIik7UkVWSUVXRVJfUk9MRVM9KCJSWCIsIlJDIiwiUlYiLCJSUCIpClNBRkVfSU1QT1JUUz17Impzb24iOnsibG9hZHMiLCJkdW1wcyJ9LCJoYXNobGliIjp7InNoYTI1NiJ9LCJ1bmljb2RlZGF0YSI6eyJub3JtYWxpemUifX0KU0FGRV9CVUlMVElOUz17IlZhbHVlRXJyb3IiLCJhbGwiLCJhbnkiLCJib29sIiwiZGljdCIsImVudW1lcmF0ZSIsImludCIsImlzaW5zdGFuY2UiLCJsZW4iLCJsaXN0IiwibWF4IiwibWluIiwibmV4dCIsIm9yZCIsInJhbmdlIiwicmV2ZXJzZWQiLCJzZXQiLCJzb3J0ZWQiLCJzdHIiLCJzdW0iLCJ0dXBsZSIsInppcCJ9ClNBRkVfQVRUUlM9eyJhZGQiLCJhcHBlbmQiLCJjb3B5IiwiZGVjb2RlIiwiZW5jb2RlIiwiZ2V0IiwiaGV4ZGlnZXN0IiwiaXRlbXMiLCJqb2luIiwia2V5cyIsInBvcCIsInJlbW92ZSIsInJlbW92ZXByZWZpeCIsInJlcGxhY2UiLCJyZXZlcnNlIiwic2V0ZGVmYXVsdCIsInNvcnQiLCJzcGxpdCIsInN0YXJ0c3dpdGgiLCJzdHJpcCIsInVwZGF0ZSIsInZhbHVlcyJ9CkZPUkJJRERFTl9OQU1FUz17Im9wZW4iLCJpbnB1dCIsImJyZWFrcG9pbnQiLCJwcmludCIsImhlbHAiLCJkaXIiLCJ0eXBlIiwib2JqZWN0IiwiZXhlYyIsImV2YWwiLCJjb21waWxlIiwiX19pbXBvcnRfXyIsImdldGF0dHIiLCJzZXRhdHRyIiwiZGVsYXR0ciIsImdsb2JhbHMiLCJsb2NhbHMiLCJ2YXJzIiwiX19idWlsdGluc19fIiwiX19sb2FkZXJfXyIsIl9fc3BlY19fIiwic3RkaW4iLCJzdGRvdXQiLCJzdGRlcnIifQpkZWYgaW52ZW50b3J5KG1wKTpyZXR1cm4gW3siYnl0ZV9sZW5ndGgiOmxlbihiKSwicGF0aCI6cCwic2hhMjU2IjpzaGEoYil9IGZvciBwLGIgaW4gc29ydGVkKG1wLml0ZW1zKCkpXQpkZWYgc2FmZV9wYXRoKHApOgogdGV4dChwLCJwYXRoIik7cT1QdXJlUG9zaXhQYXRoKHApCiBpZiBwLnN0YXJ0c3dpdGgoIi8iKSBvciAiXFwiIGluIHAgb3Igc3RyKHEpIT1wIG9yIGFueSh4IGluICgiIiwiLiIsIi4uIikgZm9yIHggaW4gcC5zcGxpdCgiLyIpKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJwYXRoIikKZGVmIGdpdF9vaWQoa2luZCxkYXRhKTpyZXR1cm4gaGFzaGxpYi5zaGExKChraW5kKyIgIitzdHIobGVuKGRhdGEpKSsiXDAiKS5lbmNvZGUoKStkYXRhKS5oZXhkaWdlc3QoKQpkZWYgZ2l0X3RyZWVfZGF0YShlbnRyaWVzKToKIHJldHVybiBiIiIuam9pbigobW9kZSsiICIrbmFtZSsiXDAiKS5lbmNvZGUoKStieXRlcy5mcm9taGV4KG9pZCkgZm9yIG1vZGUsbmFtZSxvaWQgaW4gZW50cmllcykKZGVmIGdpdF9jb21taXRfZGF0YSh0cmVlLG1lc3NhZ2UpOnJldHVybiAoInRyZWUgIit0cmVlKyJcbmF1dGhvciBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAwICswMDAwXG5jb21taXR0ZXIgVEVTVF9PTkxZIDx0ZXN0QGV4YW1wbGUuaW52YWxpZD4gMCArMDAwMFxuXG4iK21lc3NhZ2UrIlxuIikuZW5jb2RlKCkKZGVmIGdpdF9idW5kbGUocGF0aF9tYXAsbWVzc2FnZSk6CiBvYmplY3RzPXt9O25vZGVzPXt9CiBmb3IgcGF0aCxkYXRhIGluIHNvcnRlZChwYXRoX21hcC5pdGVtcygpKToKICBzYWZlX3BhdGgocGF0aCk7cGFydHM9cGF0aC5zcGxpdCgiLyIpO25vZGU9bm9kZXMKICBmb3IgcGFydCBpbiBwYXJ0c1s6LTFdOm5vZGU9bm9kZS5zZXRkZWZhdWx0KHBhcnQse30pCiAgaWYgcGFydHNbLTFdIGluIG5vZGU6cmFpc2UgTWFuaWZlc3RFcnJvcigiZHVwbGljYXRlIGJ1bmRsZSBwYXRoIikKICBvaWQ9Z2l0X29pZCgiYmxvYiIsZGF0YSk7b2JqZWN0c1tvaWRdPXsiZGF0YV9iNjQiOmJhc2U2NC5iNjRlbmNvZGUoZGF0YSkuZGVjb2RlKCksImtpbmQiOiJibG9iIn07bm9kZVtwYXJ0c1stMV1dPShvaWQsZGF0YSkKIGRlZiBlbWl0KG5vZGUpOgogIGVudHJpZXM9W10KICBmb3IgbmFtZSx2YWx1ZSBpbiBub2RlLml0ZW1zKCk6CiAgIGlmIGlzaW5zdGFuY2UodmFsdWUsZGljdCk6b2lkPWVtaXQodmFsdWUpO2VudHJpZXMuYXBwZW5kKCgiNDAwMDAiLG5hbWUsb2lkKSkKICAgZWxzZTplbnRyaWVzLmFwcGVuZCgoIjEwMDY0NCIsbmFtZSx2YWx1ZVswXSkpCiAgZW50cmllcy5zb3J0KGtleT1sYW1iZGEgeDooeFsxXSsoIi8iIGlmIHhbMF09PSI0MDAwMCIgZWxzZSAiIikpLmVuY29kZSgpKQogIGRhdGE9Z2l0X3RyZWVfZGF0YShlbnRyaWVzKTtvaWQ9Z2l0X29pZCgidHJlZSIsZGF0YSk7b2JqZWN0c1tvaWRdPXsiZGF0YV9iNjQiOmJhc2U2NC5iNjRlbmNvZGUoZGF0YSkuZGVjb2RlKCksImtpbmQiOiJ0cmVlIn07cmV0dXJuIG9pZAogdHJlZT1lbWl0KG5vZGVzKTtjb21taXRfZGF0YT1naXRfY29tbWl0X2RhdGEodHJlZSxtZXNzYWdlKTtjb21taXQ9Z2l0X29pZCgiY29tbWl0Iixjb21taXRfZGF0YSk7b2JqZWN0c1tjb21taXRdPXsiZGF0YV9iNjQiOmJhc2U2NC5iNjRlbmNvZGUoY29tbWl0X2RhdGEpLmRlY29kZSgpLCJraW5kIjoiY29tbWl0In07cmV0dXJuIHsiY29tbWl0X29pZCI6Y29tbWl0LCJvYmplY3RzIjpvYmplY3RzLCJ0cmVlX29pZCI6dHJlZX0KZGVmIF9kZWNvZGVfZ2l0X29iamVjdHMob2JqZWN0cyk6CiBpZiBub3QgaXNpbnN0YW5jZShvYmplY3RzLGRpY3QpIG9yIG5vdCBvYmplY3RzOnJhaXNlIE1hbmlmZXN0RXJyb3IoIm9iamVjdHMiKQogZGVjb2RlZD17fQogZm9yIG9pZCxvIGluIG9iamVjdHMuaXRlbXMoKToKICBpZiBub3QgaXNpbnN0YW5jZShvaWQsc3RyKSBvciBsZW4ob2lkKSE9NDAgb3IgYW55KGMgbm90IGluICIwMTIzNDU2Nzg5YWJjZGVmIiBmb3IgYyBpbiBvaWQpOnJhaXNlIE1hbmlmZXN0RXJyb3IoIm9iamVjdCBvaWQiKQogIGV4YWN0KG8seyJkYXRhX2I2NCIsImtpbmQifSwib2JqZWN0Iik7a2luZD1vWyJraW5kIl0KICBpZiBraW5kIG5vdCBpbiAoImJsb2IiLCJ0cmVlIiwiY29tbWl0Iik6cmFpc2UgTWFuaWZlc3RFcnJvcigib2JqZWN0IGtpbmQiKQogIHRyeTpkYXRhPWJhc2U2NC5iNjRkZWNvZGUob1siZGF0YV9iNjQiXSx2YWxpZGF0ZT1UcnVlKQogIGV4Y2VwdCBFeGNlcHRpb24gYXMgZTpyYWlzZSBNYW5pZmVzdEVycm9yKCJvYmplY3QgYmFzZTY0IikgZnJvbSBlCiAgaWYgZ2l0X29pZChraW5kLGRhdGEpIT1vaWQ6cmFpc2UgTWFuaWZlc3RFcnJvcigib2JqZWN0IG9pZCIpCiAgZGVjb2RlZFtvaWRdPShraW5kLGRhdGEpCiByZXR1cm4gZGVjb2RlZApkZWYgX3BhcnNlX3RyZWUoZGF0YSk6CiBlbnRyaWVzPVtdO3Bvcz0wO2xhc3Q9Tm9uZQogd2hpbGUgcG9zPGxlbihkYXRhKToKICBzcD1kYXRhLmZpbmQoYiIgIixwb3MpO251bD1kYXRhLmZpbmQoYiJcMCIsc3ArMSkKICBpZiBzcDw9cG9zIG9yIG51bDwwIG9yIG51bCsyMT5sZW4oZGF0YSk6cmFpc2UgTWFuaWZlc3RFcnJvcigidHJlZSBlbmNvZGluZyIpCiAgdHJ5Om1vZGU9ZGF0YVtwb3M6c3BdLmRlY29kZSgiYXNjaWkiKTtuYW1lPWRhdGFbc3ArMTpudWxdLmRlY29kZSgidXRmLTgiLCJzdHJpY3QiKQogIGV4Y2VwdCBVbmljb2RlRXJyb3IgYXMgZTpyYWlzZSBNYW5pZmVzdEVycm9yKCJ0cmVlIHRleHQiKSBmcm9tIGUKICBvaWQ9ZGF0YVtudWwrMTpudWwrMjFdLmhleCgpO3Bvcz1udWwrMjEKICBpZiBtb2RlIG5vdCBpbiAoIjEwMDY0NCIsIjQwMDAwIikgb3Igbm90IG5hbWUgb3IgIi8iIGluIG5hbWUgb3IgIlwwIiBpbiBuYW1lIG9yIG5hbWUgaW4gKCIuIiwiLi4iKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJ0cmVlIGVudHJ5IikKICBrZXk9KG5hbWUrKCIvIiBpZiBtb2RlPT0iNDAwMDAiIGVsc2UgIiIpKS5lbmNvZGUoKQogIGlmIGxhc3QgaXMgbm90IE5vbmUgYW5kIGtleTw9bGFzdDpyYWlzZSBNYW5pZmVzdEVycm9yKCJ0cmVlIG9yZGVyL2R1cGxpY2F0ZSIpCiAgbGFzdD1rZXk7ZW50cmllcy5hcHBlbmQoKG1vZGUsbmFtZSxvaWQpKQogaWYgcG9zIT1sZW4oZGF0YSk6cmFpc2UgTWFuaWZlc3RFcnJvcigidHJlZSB0cmFpbGluZyIpCiByZXR1cm4gZW50cmllcwpkZWYgX3BhcnNlX2NvbW1pdChkYXRhLHRyZWVfb2lkKToKIHRyeTp0ZXh0X2RhdGE9ZGF0YS5kZWNvZGUoInV0Zi04Iiwic3RyaWN0IikKIGV4Y2VwdCBVbmljb2RlRXJyb3IgYXMgZTpyYWlzZSBNYW5pZmVzdEVycm9yKCJjb21taXQgdXRmOCIpIGZyb20gZQogaWYgIlwwIiBpbiB0ZXh0X2RhdGEgb3IgIlxyIiBpbiB0ZXh0X2RhdGEgb3IgIlxuXG4iIG5vdCBpbiB0ZXh0X2RhdGE6cmFpc2UgTWFuaWZlc3RFcnJvcigiY29tbWl0IGZyYW1pbmciKQogaGVhZCxtZXNzYWdlPXRleHRfZGF0YS5zcGxpdCgiXG5cbiIsMSk7bGluZXM9aGVhZC5zcGxpdCgiXG4iKQogaWYgbGVuKGxpbmVzKSE9MyBvciBsaW5lc1swXSE9InRyZWUgIit0cmVlX29pZCBvciBub3QgbWVzc2FnZSBvciBub3QgbWVzc2FnZS5lbmRzd2l0aCgiXG4iKSBvciAiXG5cbiIgaW4gaGVhZDpyYWlzZSBNYW5pZmVzdEVycm9yKCJjb21taXQgaGVhZGVycyIpCiBmb3IgbGFiZWwsbGluZSBpbiAoKCJhdXRob3IiLGxpbmVzWzFdKSwoImNvbW1pdHRlciIsbGluZXNbMl0pKToKICBwcmVmaXg9bGFiZWwrIiBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAiO3N1ZmZpeD1saW5lLnJlbW92ZXByZWZpeChwcmVmaXgpCiAgaWYgc3VmZml4PT1saW5lIG9yIHN1ZmZpeCE9IjAgKzAwMDAiOnJhaXNlIE1hbmlmZXN0RXJyb3IoImNvbW1pdCBpZGVudGl0eS90aW1lIikKIHJldHVybiBtZXNzYWdlCmRlZiB2YWxpZGF0ZV9naXRfYnVuZGxlKGJ1bmRsZSxwYXRoX21hcCxtZXNzYWdlKToKIGV4YWN0KGJ1bmRsZSx7ImNvbW1pdF9vaWQiLCJvYmplY3RzIiwidHJlZV9vaWQifSwiZ2l0IGJ1bmRsZSIpO2RlY29kZWQ9X2RlY29kZV9naXRfb2JqZWN0cyhidW5kbGVbIm9iamVjdHMiXSkKIGlmIGJ1bmRsZVsidHJlZV9vaWQiXSBub3QgaW4gZGVjb2RlZCBvciBkZWNvZGVkW2J1bmRsZVsidHJlZV9vaWQiXV1bMF0hPSJ0cmVlIiBvciBidW5kbGVbImNvbW1pdF9vaWQiXSBub3QgaW4gZGVjb2RlZCBvciBkZWNvZGVkW2J1bmRsZVsiY29tbWl0X29pZCJdXVswXSE9ImNvbW1pdCI6cmFpc2UgTWFuaWZlc3RFcnJvcigiYnVuZGxlIHJvb3RzIikKIGlmIF9wYXJzZV9jb21taXQoZGVjb2RlZFtidW5kbGVbImNvbW1pdF9vaWQiXV1bMV0sYnVuZGxlWyJ0cmVlX29pZCJdKSE9bWVzc2FnZSsiXG4iOnJhaXNlIE1hbmlmZXN0RXJyb3IoImNvbW1pdCBtZXNzYWdlIikKIHJlYWNoZWQ9e2J1bmRsZVsiY29tbWl0X29pZCJdfTtsZWF2ZXM9e30KIGRlZiB2aXNpdChvaWQscHJlZml4KToKICBpZiBvaWQgbm90IGluIGRlY29kZWQgb3IgZGVjb2RlZFtvaWRdWzBdIT0idHJlZSI6cmFpc2UgTWFuaWZlc3RFcnJvcigidHJlZSBvYmplY3QiKQogIHJlYWNoZWQuYWRkKG9pZCkKICBmb3IgbW9kZSxuYW1lLGNoaWxkIGluIF9wYXJzZV90cmVlKGRlY29kZWRbb2lkXVsxXSk6CiAgIGlmIGNoaWxkIG5vdCBpbiBkZWNvZGVkOnJhaXNlIE1hbmlmZXN0RXJyb3IoIm1pc3Npbmcgb2JqZWN0IikKICAgcGF0aD1wcmVmaXgrbmFtZQogICBpZiBtb2RlPT0iNDAwMDAiOgogICAgaWYgZGVjb2RlZFtjaGlsZF1bMF0hPSJ0cmVlIjpyYWlzZSBNYW5pZmVzdEVycm9yKCJ0cmVlIHR5cGUiKQogICAgdmlzaXQoY2hpbGQscGF0aCsiLyIpCiAgIGVsc2U6CiAgICBpZiBkZWNvZGVkW2NoaWxkXVswXSE9ImJsb2IiOnJhaXNlIE1hbmlmZXN0RXJyb3IoImJsb2IgdHlwZSIpCiAgICByZWFjaGVkLmFkZChjaGlsZCk7bGVhdmVzW3BhdGhdPWRlY29kZWRbY2hpbGRdWzFdCiB2aXNpdChidW5kbGVbInRyZWVfb2lkIl0sIiIpCiBpZiBsZWF2ZXMhPXBhdGhfbWFwIG9yIHJlYWNoZWQhPXNldChkZWNvZGVkKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJidW5kbGUgcmVhY2hhYmlsaXR5L2NvbnRlbnQiKQogcmV0dXJuIGJ1bmRsZQpkZWYgdmFsaWRhdGVfcHJlcmVnX3Jvb3QocmF3LGJ5dGVfbWFwKToKIHg9cGFyc2VfYnl0ZXMocmF3KTtleGFjdCh4LHsiY29tbWl0X29pZCIsImxhYmVsIiwib2JqZWN0cyIsInBhdGhzIiwic2NoZW1hIiwidHJlZV9vaWQifSwicm9vdCIpCiBpZiB4WyJzY2hlbWEiXSE9IkQwMDgtUFJFUkVHLVJPT1QtMyIgb3IgeFsibGFiZWwiXSBub3QgaW4gKCJDQU5PTklDQUxfUE9TVF9DT01NSVQiLCJURVNUX09OTFlfTk9OX0VWSURFTkNFIikgb3Igc2V0KGJ5dGVfbWFwKSE9c2V0KFNUQUdFX0NfUEFUSFMpOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJvb3QgaGVhZGVyIikKIGZvciBwLGIgaW4gYnl0ZV9tYXAuaXRlbXMoKTpzYWZlX3BhdGgocCk7aXNpbnN0YW5jZShiLGJ5dGVzKSBvciAoXyBmb3IgXyBpbiAoKSkudGhyb3coTWFuaWZlc3RFcnJvcigicm9vdCBieXRlcyIpKQogZXhwZWN0ZWRfcGF0aHM9e3A6Z2l0X29pZCgiYmxvYiIsYikgZm9yIHAsYiBpbiBieXRlX21hcC5pdGVtcygpfQogaWYgeFsicGF0aHMiXSE9ZXhwZWN0ZWRfcGF0aHM6cmFpc2UgTWFuaWZlc3RFcnJvcigicm9vdCBwYXRocyIpCiB2YWxpZGF0ZV9naXRfYnVuZGxlKHsiY29tbWl0X29pZCI6eFsiY29tbWl0X29pZCJdLCJvYmplY3RzIjp4WyJvYmplY3RzIl0sInRyZWVfb2lkIjp4WyJ0cmVlX29pZCJdfSxieXRlX21hcCwiRDAwOCBzeW50aGV0aWMgd2l0bmVzcyIgaWYgeFsibGFiZWwiXT09IlRFU1RfT05MWV9OT05fRVZJREVOQ0UiIGVsc2UgIkQwMDggY2Fub25pY2FsIHBvc3QtY29tbWl0IHJvb3QiKQogcmV0dXJuIHgKZGVmIG5vcm1hbGl6ZWRfYXN0KHJhdyk6CiB0cnk6cmV0dXJuIGFzdC5kdW1wKGFzdC5wYXJzZShyYXcuZGVjb2RlKCJ1dGYtOCIsInN0cmljdCIpKSxhbm5vdGF0ZV9maWVsZHM9VHJ1ZSxpbmNsdWRlX2F0dHJpYnV0ZXM9RmFsc2UpCiBleGNlcHQgKFVuaWNvZGVFcnJvcixTeW50YXhFcnJvcikgYXMgZTpyYWlzZSBNYW5pZmVzdEVycm9yKCJBU1QiKSBmcm9tIGUKZGVmIF90YXJnZXRfbmFtZXMobik6CiBpZiBpc2luc3RhbmNlKG4sYXN0Lk5hbWUpOnJldHVybiB7bi5pZH0KIGlmIGlzaW5zdGFuY2UobiwoYXN0LlR1cGxlLGFzdC5MaXN0KSk6CiAgb3V0PXNldCgpCiAgZm9yIHggaW4gbi5lbHRzOm91dHw9X3RhcmdldF9uYW1lcyh4KQogIHJldHVybiBvdXQKIHJldHVybiBzZXQoKQpkZWYgX2FsbF9hcmdzKGEpOnJldHVybiBsaXN0KGEucG9zb25seWFyZ3MpK2xpc3QoYS5hcmdzKStsaXN0KGEua3dvbmx5YXJncykrKFthLnZhcmFyZ10gaWYgYS52YXJhcmcgZWxzZSBbXSkrKFthLmt3YXJnXSBpZiBhLmt3YXJnIGVsc2UgW10pCmRlZiBfYmluZGluZ19uYW1lcyhuKToKIG91dD1zZXQoKQogaWYgaXNpbnN0YW5jZShuLChhc3QuRnVuY3Rpb25EZWYsYXN0LkFzeW5jRnVuY3Rpb25EZWYsYXN0LkNsYXNzRGVmKSk6b3V0LmFkZChuLm5hbWUpCiBpZiBpc2luc3RhbmNlKG4sKGFzdC5GdW5jdGlvbkRlZixhc3QuQXN5bmNGdW5jdGlvbkRlZixhc3QuTGFtYmRhKSk6b3V0fD17YS5hcmcgZm9yIGEgaW4gX2FsbF9hcmdzKG4uYXJncyl9CiBpZiBpc2luc3RhbmNlKG4sKGFzdC5JbXBvcnQsYXN0LkltcG9ydEZyb20pKToKICBmb3IgYSBpbiBuLm5hbWVzOm91dC5hZGQoYS5hc25hbWUgb3IgYS5uYW1lLnNwbGl0KCIuIilbMF0pCiBpZiBpc2luc3RhbmNlKG4sKGFzdC5Bc3NpZ24sYXN0LkRlbGV0ZSkpOgogIGZvciB0IGluIG4udGFyZ2V0czpvdXR8PV90YXJnZXRfbmFtZXModCkKIGlmIGlzaW5zdGFuY2UobiwoYXN0LkFubkFzc2lnbixhc3QuQXVnQXNzaWduLGFzdC5OYW1lZEV4cHIsYXN0LkZvcixhc3QuQXN5bmNGb3IsYXN0LmNvbXByZWhlbnNpb24pKTpvdXR8PV90YXJnZXRfbmFtZXMobi50YXJnZXQpCiBpZiBpc2luc3RhbmNlKG4sKGFzdC5HbG9iYWwsYXN0Lk5vbmxvY2FsKSk6b3V0fD1zZXQobi5uYW1lcykKIHJldHVybiBvdXQKZGVmIHNjYW5fc291cmNlKHJhdyk6CiB0cnk6dD1hc3QucGFyc2UocmF3LmRlY29kZSgidXRmLTgiLCJzdHJpY3QiKSkKIGV4Y2VwdCAoVW5pY29kZUVycm9yLFN5bnRheEVycm9yKSBhcyBlOnJhaXNlIE1hbmlmZXN0RXJyb3IoIkFTVCIpIGZyb20gZQogYWxpYXNlcz17fTtmdW5jcz17bi5uYW1lIGZvciBuIGluIGFzdC53YWxrKHQpIGlmIGlzaW5zdGFuY2Uobixhc3QuRnVuY3Rpb25EZWYpfTtwcm9kdWNlcz1bbiBmb3IgbiBpbiB0LmJvZHkgaWYgaXNpbnN0YW5jZShuLGFzdC5GdW5jdGlvbkRlZikgYW5kIG4ubmFtZT09InByb2R1Y2UiXQogaWYgbGVuKHByb2R1Y2VzKSE9MTpyYWlzZSBNYW5pZmVzdEVycm9yKCJleGFjdCBwcm9kdWNlIikKIHA9cHJvZHVjZXNbMF07YT1wLmFyZ3MKIGlmIFt4LmFyZyBmb3IgeCBpbiBhLmFyZ3NdICE9IFsicGFja2V0X2J5dGVzIiwibWFuaWZlc3RfYnl0ZXMiLCJpZGVudGl0eV9ieXRlcyJdIG9yIGEucG9zb25seWFyZ3Mgb3IgYS5kZWZhdWx0cyBvciBhLmt3X2RlZmF1bHRzIG9yIGEudmFyYXJnIG9yIGEua3dhcmcgb3IgYS5rd29ubHlhcmdzIG9yIHAuZGVjb3JhdG9yX2xpc3Q6cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvZHVjZSBzaWduYXR1cmUiKQogZm9yIG4gaW4gdC5ib2R5OgogIGlmIGlzaW5zdGFuY2Uobixhc3QuSW1wb3J0KToKICAgZm9yIHogaW4gbi5uYW1lczoKICAgIGlmIHoubmFtZSBub3QgaW4gU0FGRV9JTVBPUlRTOnJhaXNlIE1hbmlmZXN0RXJyb3IoImltcG9ydCIpCiAgICBhbGlhc2VzW3ouYXNuYW1lIG9yIHoubmFtZV09ei5uYW1lCiAgZWxpZiBpc2luc3RhbmNlKG4sYXN0LkltcG9ydEZyb20pOnJhaXNlIE1hbmlmZXN0RXJyb3IoImltcG9ydCBmcm9tIikKICBlbGlmIGlzaW5zdGFuY2Uobixhc3QuQXNzaWduKToKICAgaWYgbGVuKG4udGFyZ2V0cykhPTEgb3Igbm90IGlzaW5zdGFuY2Uobi50YXJnZXRzWzBdLGFzdC5OYW1lKSBvciBub3Qgbi50YXJnZXRzWzBdLmlkLmlzdXBwZXIoKSBvciBub3QgaXNpbnN0YW5jZShuLnZhbHVlLChhc3QuQ29uc3RhbnQsYXN0LlR1cGxlLGFzdC5MaXN0LGFzdC5TZXQsYXN0LkRpY3QpKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJtb2R1bGUgY29uc3RhbnQiKQogIGVsaWYgbm90IGlzaW5zdGFuY2UobiwoYXN0LkltcG9ydCxhc3QuRnVuY3Rpb25EZWYpKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJtb2R1bGUgbXV0YXRpb24iKQogZm9yIG4gaW4gYXN0LndhbGsodCk6CiAgaWYgInByb2R1Y2UiIGluIF9iaW5kaW5nX25hbWVzKG4pIGFuZCBuIGlzIG5vdCBwOnJhaXNlIE1hbmlmZXN0RXJyb3IoInByb2R1Y2UgYmluZGluZyIpCiAgaWYgaXNpbnN0YW5jZShuLGFzdC5GdW5jdGlvbkRlZikgYW5kIG4uZGVjb3JhdG9yX2xpc3Q6cmFpc2UgTWFuaWZlc3RFcnJvcigiZGVjb3JhdG9yIikKICBpZiBpc2luc3RhbmNlKG4sKGFzdC5HbG9iYWwsYXN0Lk5vbmxvY2FsLGFzdC5EZWxldGUsYXN0Lk5hbWVkRXhwcixhc3QuQXN5bmNGdW5jdGlvbkRlZixhc3QuQ2xhc3NEZWYsYXN0LkxhbWJkYSxhc3QuV2l0aCxhc3QuQXN5bmNXaXRoLGFzdC5ZaWVsZCxhc3QuWWllbGRGcm9tLGFzdC5Bd2FpdCkpOnJhaXNlIE1hbmlmZXN0RXJyb3IoInVuc2FmZSBzeW50YXgiKQogIGlmIGlzaW5zdGFuY2Uobixhc3QuUmFpc2UpOgogICBpZiBuLmNhdXNlIGlzIG5vdCBOb25lIG9yIG5vdCBpc2luc3RhbmNlKG4uZXhjLGFzdC5DYWxsKSBvciBub3QgaXNpbnN0YW5jZShuLmV4Yy5mdW5jLGFzdC5OYW1lKSBvciBuLmV4Yy5mdW5jLmlkIT0iVmFsdWVFcnJvciIgb3IgbGVuKG4uZXhjLmFyZ3MpIT0xIG9yIG5vdCBpc2luc3RhbmNlKG4uZXhjLmFyZ3NbMF0sYXN0LkNvbnN0YW50KSBvciBub3QgaXNpbnN0YW5jZShuLmV4Yy5hcmdzWzBdLnZhbHVlLHN0cikgb3Igbi5leGMua2V5d29yZHM6cmFpc2UgTWFuaWZlc3RFcnJvcigidW5zYWZlIHJhaXNlIikKICBpZiBpc2luc3RhbmNlKG4sYXN0LlRyeSk6CiAgIGlmIG4ub3JlbHNlIG9yIG4uZmluYWxib2R5IG9yIG5vdCBuLmhhbmRsZXJzIG9yIGFueShoLnR5cGUgaXMgTm9uZSBvciBub3QgaXNpbnN0YW5jZShoLnR5cGUsYXN0Lk5hbWUpIG9yIGgudHlwZS5pZCE9IlZhbHVlRXJyb3IiIG9yIGgubmFtZSBmb3IgaCBpbiBuLmhhbmRsZXJzKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJ1bnNhZmUgdHJ5IikKICBpZiBpc2luc3RhbmNlKG4sKGFzdC5Bc3NpZ24sYXN0LkFubkFzc2lnbixhc3QuQXVnQXNzaWduKSk6CiAgIHRhcmdldHM9bi50YXJnZXRzIGlmIGlzaW5zdGFuY2Uobixhc3QuQXNzaWduKSBlbHNlIFtuLnRhcmdldF0KICAgaWYgYW55KGlzaW5zdGFuY2Uoeixhc3QuQXR0cmlidXRlKSBmb3IgeiBpbiB0YXJnZXRzKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJhdHRyaWJ1dGUgc3RvcmUiKQogIGlmIGlzaW5zdGFuY2Uobixhc3QuTmFtZSkgYW5kIG4uaWQgaW4gRk9SQklEREVOX05BTUVTOnJhaXNlIE1hbmlmZXN0RXJyb3IoImZvcmJpZGRlbiBuYW1lIikKICBpZiBpc2luc3RhbmNlKG4sYXN0LkF0dHJpYnV0ZSk6CiAgIHJvb3Q9bi52YWx1ZTtkZXB0aD0xCiAgIHdoaWxlIGlzaW5zdGFuY2Uocm9vdCxhc3QuQXR0cmlidXRlKTpkZXB0aCs9MTtyb290PXJvb3QudmFsdWUKICAgaWYgbi5hdHRyLnN0YXJ0c3dpdGgoIl9fIikgb3IgKGlzaW5zdGFuY2Uocm9vdCxhc3QuTmFtZSkgYW5kIHJvb3QuaWQgaW4gYWxpYXNlcyBhbmQgKGRlcHRoIT0xIG9yIG4uYXR0ciBub3QgaW4gU0FGRV9JTVBPUlRTW2FsaWFzZXNbcm9vdC5pZF1dKSkgb3IgKG5vdCAoaXNpbnN0YW5jZShyb290LGFzdC5OYW1lKSBhbmQgcm9vdC5pZCBpbiBhbGlhc2VzKSBhbmQgbi5hdHRyIG5vdCBpbiBTQUZFX0FUVFJTKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJhdHRyaWJ1dGUiKQogIGlmIGlzaW5zdGFuY2Uobixhc3QuQ2FsbCk6CiAgIGY9bi5mdW5jCiAgIGlmIGlzaW5zdGFuY2UoZixhc3QuTmFtZSk6CiAgICBpZiBmLmlkIG5vdCBpbiBmdW5jc3xTQUZFX0JVSUxUSU5TOnJhaXNlIE1hbmlmZXN0RXJyb3IoImNhbGwiKQogICBlbGlmIGlzaW5zdGFuY2UoZixhc3QuQXR0cmlidXRlKToKICAgIHJvb3Q9Zi52YWx1ZQogICAgd2hpbGUgaXNpbnN0YW5jZShyb290LGFzdC5BdHRyaWJ1dGUpOnJvb3Q9cm9vdC52YWx1ZQogICAgaWYgaXNpbnN0YW5jZShyb290LGFzdC5OYW1lKSBhbmQgcm9vdC5pZCBpbiBhbGlhc2VzOgogICAgIGlmIG5vdCBpc2luc3RhbmNlKGYudmFsdWUsYXN0Lk5hbWUpIG9yIGYuYXR0ciBub3QgaW4gU0FGRV9JTVBPUlRTW2FsaWFzZXNbcm9vdC5pZF1dOnJhaXNlIE1hbmlmZXN0RXJyb3IoIm1vZHVsZSBjYWxsIikKICAgIGVsaWYgZi5hdHRyIG5vdCBpbiBTQUZFX0FUVFJTOnJhaXNlIE1hbmlmZXN0RXJyb3IoIm1ldGhvZCBjYWxsIikKICAgZWxzZTpyYWlzZSBNYW5pZmVzdEVycm9yKCJpbmRpcmVjdCBjYWxsIikKIHJldHVybiBub3JtYWxpemVkX2FzdChyYXcpCmRlZiBzb3VyY2VfY2hlY2twb2ludF9idW5kbGUoc291cmNlX3BhdGgsc291cmNlX2J5dGVzKToKIGJ1bmRsZT1naXRfYnVuZGxlKHtzb3VyY2VfcGF0aDpzb3VyY2VfYnl0ZXN9LCJzb3VyY2UgY2hlY2twb2ludCIpO3JldHVybiB7ImNvbW1pdF9vaWQiOmJ1bmRsZVsiY29tbWl0X29pZCJdLCJvYmplY3RzIjpidW5kbGVbIm9iamVjdHMiXSwicGF0aCI6c291cmNlX3BhdGgsInRyZWVfb2lkIjpidW5kbGVbInRyZWVfb2lkIl19CmRlZiB2YWxpZGF0ZV9zb3VyY2VfY2hlY2twb2ludCh4LHBhdGgsc291cmNlKToKIGV4YWN0KHgseyJjb21taXRfb2lkIiwib2JqZWN0cyIsInBhdGgiLCJ0cmVlX29pZCJ9LCJzb3VyY2UgY2hlY2twb2ludCIpCiBpZiB4WyJwYXRoIl0hPXBhdGg6cmFpc2UgTWFuaWZlc3RFcnJvcigic291cmNlIGNoZWNrcG9pbnQgcGF0aCIpCiB2YWxpZGF0ZV9naXRfYnVuZGxlKHsiY29tbWl0X29pZCI6eFsiY29tbWl0X29pZCJdLCJvYmplY3RzIjp4WyJvYmplY3RzIl0sInRyZWVfb2lkIjp4WyJ0cmVlX29pZCJdfSx7cGF0aDpzb3VyY2V9LCJzb3VyY2UgY2hlY2twb2ludCIpCmRlZiB2YWxpZGF0ZV9pZGVudGl0eShyYXcscm9sZSxzb3VyY2VzLGRlcHMsbG9ja3Mscm9vdF9yYXcscm9vdF9maWxlcyk6CiBpZiByb2xlIG5vdCBpbiBQUk9EVUNFUl9ST0xFUyBvciBkZXBzIT17fSBvciBsZW4oc291cmNlcykhPTE6cmFpc2UgTWFuaWZlc3RFcnJvcigiaWRlbnRpdHkgY2xvc3VyZSIpCiBwYXRoPW5leHQoaXRlcihzb3VyY2VzKSk7c291cmNlPXNvdXJjZXNbcGF0aF07ZXhwZWN0ZWRfcGF0aD0iZnV0dXJlL2QwMDhfIityb2xlLmxvd2VyKCkrIl92My9wcm9kdWNlci5weSIKIGlmIHBhdGghPWV4cGVjdGVkX3BhdGggb3Igc2V0KGxvY2tzKSE9e1NUQUdFX0NfUEFUSFNbMF0sU1RBR0VfQ19QQVRIU1sxXX0gb3IgbG9ja3NbU1RBR0VfQ19QQVRIU1swXV0hPXJvb3RfZmlsZXNbU1RBR0VfQ19QQVRIU1swXV0gb3IgbG9ja3NbU1RBR0VfQ19QQVRIU1sxXV0hPXJvb3RfZmlsZXNbU1RBR0VfQ19QQVRIU1sxXV06cmFpc2UgTWFuaWZlc3RFcnJvcigiaWRlbnRpdHkgcGF0aHMiKQogc2Nhbl9zb3VyY2Uoc291cmNlKTtyb290PXZhbGlkYXRlX3ByZXJlZ19yb290KHJvb3RfcmF3LHJvb3RfZmlsZXMpO3g9cGFyc2VfYnl0ZXMocmF3KTtleGFjdCh4LHsiZGVwZW5kZW5jaWVzIiwibG9ja3MiLCJwcmVyZWdfcm9vdCIsInJvbGUiLCJzY2hlbWEiLCJzb3VyY2VfY2hlY2twb2ludCIsInNvdXJjZXMifSwiaWRlbnRpdHkiKQogdmFsaWRhdGVfc291cmNlX2NoZWNrcG9pbnQoeFsic291cmNlX2NoZWNrcG9pbnQiXSxwYXRoLHNvdXJjZSk7ZXhwZWN0ZWQ9eyJkZXBlbmRlbmNpZXMiOltdLCJsb2NrcyI6aW52ZW50b3J5KGxvY2tzKSwicHJlcmVnX3Jvb3QiOmFydCgiUFJFUkVHX1JPT1QiLHJvb3RfcmF3KSwicm9sZSI6cm9sZSwic2NoZW1hIjoiRDAwOC1JREVOVElUWS0zIiwic291cmNlX2NoZWNrcG9pbnQiOnhbInNvdXJjZV9jaGVja3BvaW50Il0sInNvdXJjZXMiOmludmVudG9yeShzb3VyY2VzKX0KIGlmIHghPWV4cGVjdGVkOnJhaXNlIE1hbmlmZXN0RXJyb3IoImlkZW50aXR5IikKIHJldHVybiB4CmRlZiBleGVjdXRlX3Byb2R1Y2VyKHNvdXJjZSxwYWNrZXQsbWFuaWZlc3QsaWRlbnRpdHkpOgogc2Nhbl9zb3VyY2Uoc291cmNlKQogcnVubmVyPWIiaW1wb3J0IGJhc2U2NCxzeXMsanNvbixoYXNobGliLHVuaWNvZGVkYXRhXG5ucz17fVxuZXhlYyhjb21waWxlKGJhc2U2NC5iNjRkZWNvZGUoc3lzLnN0ZGluLmJ1ZmZlci5yZWFkbGluZSgpKSwnPHByb2R1Y2VyPicsJ2V4ZWMnKSxucyxucylcbmE9W2Jhc2U2NC5iNjRkZWNvZGUoc3lzLnN0ZGluLmJ1ZmZlci5yZWFkbGluZSgpKSBmb3IgXyBpbiByYW5nZSgzKV1cbnI9bnNbJ3Byb2R1Y2UnXSgqYSlcbmlmIG5vdCBpc2luc3RhbmNlKHIsYnl0ZXMpOiByYWlzZSBUeXBlRXJyb3IoJ2J5dGVzJylcbnN5cy5zdGRvdXQud3JpdGUoYmFzZTY0LmI2NGVuY29kZShyKS5kZWNvZGUoKSlcbiIKIHBheWxvYWQ9YiJcbiIuam9pbihiYXNlNjQuYjY0ZW5jb2RlKHgpIGZvciB4IGluIChzb3VyY2UscGFja2V0LG1hbmlmZXN0LGlkZW50aXR5KSkrYiJcbiIKIHRyeTpwPXN1YnByb2Nlc3MucnVuKFtzeXMuZXhlY3V0YWJsZSwiLUkiLCItUyIsIi1jIixydW5uZXIuZGVjb2RlKCldLGlucHV0PXBheWxvYWQsY2FwdHVyZV9vdXRwdXQ9VHJ1ZSx0aW1lb3V0PTMwLGNoZWNrPVRydWUpCiBleGNlcHQgRXhjZXB0aW9uIGFzIGU6cmFpc2UgTWFuaWZlc3RFcnJvcigicmVzdHJpY3RlZCBleGVjdXRpb24iKSBmcm9tIGUKIHRyeTpyZXR1cm4gYmFzZTY0LmI2NGRlY29kZShwLnN0ZG91dCx2YWxpZGF0ZT1UcnVlKQogZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOnJhaXNlIE1hbmlmZXN0RXJyb3IoInByb2R1Y2VyIG91dHB1dCIpIGZyb20gZQpSRVZJRVdfQ0FQUz17IlJYIjpbIkVYRUNVVE9SX1NPVVJDRV9SRVZJRVciXSwiUkMiOlsiQ0hFQ0tFUl9TT1VSQ0VfUkVWSUVXIl0sIlJWIjpbIlNFTUFOVElDX0VWQUxVQVRJT05fUkVWSUVXIl0sIlJQIjpbIlBSRV9GUkVFWkVfU0lHTk9GRiJdfQpSRVZJRVdfR0FURVM9eyJSWCI6IkVYRUNVVE9SX0lOREVQRU5ERU5UX1JFVklFVyIsIlJDIjoiQ0hFQ0tFUl9JTkRFUEVOREVOVF9SRVZJRVciLCJSViI6IkVWQUxVQVRPUl9SRVZJRVciLCJSUCI6IlBSRV9GUkVFWkVfU0lHTk9GRiJ9ClJFVklFV19DSEVDS1M9eyJSWCI6WyJTT1VSQ0VfQllURVNfRElTVElOQ1QiLCJOT1JNQUxJWkVEX0FTVF9ESVNUSU5DVCIsIk5PX1NFTUFOVElDX0NPUFkiXSwiUkMiOlsiU09VUkNFX0JZVEVTX0RJU1RJTkNUIiwiTk9STUFMSVpFRF9BU1RfRElTVElOQ1QiLCJOT19TRU1BTlRJQ19DT1BZIl0sIlJWIjpbIlNFTUFOVElDX1BST0pFQ1RJT05fTE9DSyIsIkFMTF9MQVdTX1BBU1MiLCJTVFJVQ1RVUkFMX1JFSkVDVF9DT1VOVCJdLCJSUCI6WyJaRVJPX1VOUkVTT0xWRURfQ1JJVElDQUxfSElHSCIsIkVYQUNUX0ZSRUVaRV9TVUJKRUNUIiwiREFHX0NPTVBMRVRFIl19CmRlZiB2YWxpZGF0ZV9yZXZpZXdlcl9pZGVudGl0eShyYXcscm9sZSxzb3VyY2VfbWFwLHJvb3RfcmF3LHJvb3RfZmlsZXMpOgogaWYgcm9sZSBub3QgaW4gUkVWSUVXRVJfUk9MRVMgb3IgbGVuKHNvdXJjZV9tYXApIT0xOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJldmlld2VyIHJvbGUiKQogcGF0aD1uZXh0KGl0ZXIoc291cmNlX21hcCkpO3NvdXJjZT1zb3VyY2VfbWFwW3BhdGhdCiBpZiBwYXRoIT0iZnV0dXJlL2QwMDhfcmV2aWV3ZXJfIityb2xlLmxvd2VyKCkrIl92My9yZXZpZXdlci50eHQiOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJldmlld2VyIHBhdGgiKQogc291cmNlLmRlY29kZSgidXRmLTgiLCJzdHJpY3QiKTt2YWxpZGF0ZV9wcmVyZWdfcm9vdChyb290X3Jhdyxyb290X2ZpbGVzKTt4PXBhcnNlX2J5dGVzKHJhdyk7ZXhhY3QoeCx7ImNhcGFiaWxpdGllcyIsInByZXJlZ19yb290Iiwicm9sZSIsInNjaGVtYSIsInNvdXJjZV9jaGVja3BvaW50Iiwic291cmNlcyJ9LCJyZXZpZXdlciBpZGVudGl0eSIpO3ZhbGlkYXRlX3NvdXJjZV9jaGVja3BvaW50KHhbInNvdXJjZV9jaGVja3BvaW50Il0scGF0aCxzb3VyY2UpCiBleHBlY3RlZD17ImNhcGFiaWxpdGllcyI6UkVWSUVXX0NBUFNbcm9sZV0sInByZXJlZ19yb290IjphcnQoIlBSRVJFR19ST09UIixyb290X3JhdyksInJvbGUiOnJvbGUsInNjaGVtYSI6IkQwMDgtUkVWSUVXRVItSURFTlRJVFktMyIsInNvdXJjZV9jaGVja3BvaW50Ijp4WyJzb3VyY2VfY2hlY2twb2ludCJdLCJzb3VyY2VzIjppbnZlbnRvcnkoc291cmNlX21hcCl9CiBpZiB4IT1leHBlY3RlZDpyYWlzZSBNYW5pZmVzdEVycm9yKCJyZXZpZXdlciBpZGVudGl0eSIpCiByZXR1cm4geApkZWYgdmFsaWRhdGVfZmluZGluZ3MoeHMpOgogaWYgbm90IGlzaW5zdGFuY2UoeHMsbGlzdCkgb3Igbm90IHhzOnJhaXNlIE1hbmlmZXN0RXJyb3IoImZpbmRpbmdzIikKIGZvciB4IGluIHhzOgogIGV4YWN0KHgseyJmaW5kaW5nX2lkIiwicmVzb2x2ZWQiLCJzZXZlcml0eSIsInRleHQifSwiZmluZGluZyIpO3RleHQoeFsiZmluZGluZ19pZCJdLCJmaW5kaW5nIGlkIik7dGV4dCh4WyJ0ZXh0Il0sImZpbmRpbmcgdGV4dCIpCiAgaWYgeFsic2V2ZXJpdHkiXSBub3QgaW4gKCJDUklUSUNBTCIsIkhJR0giLCJNRURJVU0iLCJMT1ciLCJJTkZPIikgb3Igbm90IGlzaW5zdGFuY2UoeFsicmVzb2x2ZWQiXSxib29sKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJmaW5kaW5nIHNldmVyaXR5IikKIGlmIGFueShub3QgeFsicmVzb2x2ZWQiXSBhbmQgeFsic2V2ZXJpdHkiXSBpbiAoIkNSSVRJQ0FMIiwiSElHSCIpIGZvciB4IGluIHhzKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJ1bnJlc29sdmVkIGNyaXRpY2FsL2hpZ2giKQpkZWYgdmFsaWRhdGVfcmV2aWV3KHJhdyxyb2xlLGlkZW50aXR5X3Jhdyxzb3VyY2VfbWFwLHJvb3RfcmF3LHJvb3RfZmlsZXMsc3ViamVjdCk6CiBpZGVudD12YWxpZGF0ZV9yZXZpZXdlcl9pZGVudGl0eShpZGVudGl0eV9yYXcscm9sZSxzb3VyY2VfbWFwLHJvb3RfcmF3LHJvb3RfZmlsZXMpO3g9cGFyc2VfYnl0ZXMocmF3KTtleGFjdCh4LHsiY2hlY2tzIiwiZmluZGluZ3MiLCJnYXRlIiwicmV2aWV3ZXJfaWRlbnRpdHkiLCJyb2xlIiwic2NoZW1hIiwic3ViamVjdCIsInZlcmRpY3QifSwicmV2aWV3Iik7dmFsaWRhdGVfZmluZGluZ3MoeFsiZmluZGluZ3MiXSkKIGV4cGVjdGVkPXsiY2hlY2tzIjpSRVZJRVdfQ0hFQ0tTW3JvbGVdLCJmaW5kaW5ncyI6eFsiZmluZGluZ3MiXSwiZ2F0ZSI6UkVWSUVXX0dBVEVTW3JvbGVdLCJyZXZpZXdlcl9pZGVudGl0eSI6YXJ0KCJSRVZJRVdFUl9JREVOVElUWSIsaWRlbnRpdHlfcmF3KSwicm9sZSI6cm9sZSwic2NoZW1hIjoiRDAwOC1SRVZJRVctMyIsInN1YmplY3QiOnN1YmplY3QsInZlcmRpY3QiOiJQQVNTIn0KIGlmIHghPWV4cGVjdGVkOnJhaXNlIE1hbmlmZXN0RXJyb3IoInJldmlldyIpCiByZXR1cm4geCxpZGVudApkZWYgdmFsaWRhdGVfZXZpZGVuY2VfZGFnKGRhZyk6CiBleGFjdChkYWcseyJlZGdlcyIsIm5vZGVzIiwicm9vdHMifSwiZGFnIik7bm9kZXM9aW5kZXgoZGFnWyJub2RlcyJdLCJpZCIsImRhZyBub2RlIik7ZWRnZXM9c2V0KCkKIGZvciBuIGluIGRhZ1sibm9kZXMiXTpleGFjdChuLHsiaWQiLCJraW5kIn0sImRhZyBub2RlIik7dGV4dChuWyJraW5kIl0sImRhZyBraW5kIikKIGZvciBlIGluIGRhZ1siZWRnZXMiXToKICBleGFjdChlLHsiZnJvbSIsInRvIn0sImVkZ2UiKTthPWVbImZyb20iXTtiPWVbInRvIl0KICBpZiBhIG5vdCBpbiBub2RlcyBvciBiIG5vdCBpbiBub2RlcyBvciBhPT1iIG9yIChhLGIpIGluIGVkZ2VzOnJhaXNlIE1hbmlmZXN0RXJyb3IoImRhZyBlZGdlIikKICBlZGdlcy5hZGQoKGEsYikpCiByb290cz1beCBmb3IgeCBpbiBub2RlcyBpZiBub3QgYW55KGE9PXggZm9yIGEsXyBpbiBlZGdlcyldCiBpZiBzb3J0ZWQocm9vdHMpIT1zb3J0ZWQoZGFnWyJyb290cyJdKTpyYWlzZSBNYW5pZmVzdEVycm9yKCJkYWcgcm9vdHMiKQogdmlzaXRpbmc9c2V0KCk7ZG9uZT1zZXQoKQogZGVmIHZpc2l0KHgpOgogIGlmIHggaW4gdmlzaXRpbmc6cmFpc2UgTWFuaWZlc3RFcnJvcigiZGFnIGN5Y2xlIikKICBpZiB4IGluIGRvbmU6cmV0dXJuCiAgdmlzaXRpbmcuYWRkKHgpCiAgZm9yIGEsYiBpbiBlZGdlczoKICAgaWYgYT09eDp2aXNpdChiKQogIHZpc2l0aW5nLnJlbW92ZSh4KTtkb25lLmFkZCh4KQogZm9yIHggaW4gbm9kZXM6dmlzaXQoeCkKIHJlcXVpcmVkPXsoZVsiZnJvbSJdLGVbInRvIl0pIGZvciBlIGluIGV2aWRlbmNlX2RhZ19zcGVjKClbImVkZ2VzIl19CiBpZiBzZXQobm9kZXMpIT0ge25bImlkIl0gZm9yIG4gaW4gZXZpZGVuY2VfZGFnX3NwZWMoKVsibm9kZXMiXX0gb3IgZWRnZXMhPXJlcXVpcmVkOnJhaXNlIE1hbmlmZXN0RXJyb3IoImRhZyByZXF1aXJlZCBlZGdlcyIpCiByZXR1cm4gZGFnCmRlZiBzZW1hbnRpY19vX3ZhbHVlKG0sbXJhdyxpZGVudGl0eV9yYXcpOgogcmV0dXJuIHsiaWRlbnRpdHkiOmFydCgiUFJPRFVDRVJfSURFTlRJVFkiLGlkZW50aXR5X3JhdyksInByb3ZlbmFuY2VfcXVhbGlmaWVkIjpUcnVlLCJzY2hlbWEiOiJEMDA4LU8tMyIsInNlbWFudGljX2JvZHkiOnNlbWFudGljX2JvZHkobSxtcmF3KX0KZGVmIHZhbGlkYXRlX28zKHJhdyxtLG1yYXcsaWRlbnRpdHlfcmF3KToKIHg9cGFyc2VfYnl0ZXMocmF3KQogaWYgeCE9c2VtYW50aWNfb192YWx1ZShtLG1yYXcsaWRlbnRpdHlfcmF3KTpyYWlzZSBNYW5pZmVzdEVycm9yKCJPMyIpCiByZXR1cm4geApkZWYgcHJvZHVjZXJfc3ViamVjdChyb2xlLGlkZW50aXR5X3Jhdyk6cmV0dXJuIHsiaWRlbnRpdHkiOmFydChyb2xlKyJfSURFTlRJVFkiLGlkZW50aXR5X3JhdyksInJvbGUiOnJvbGV9CmRlZiBldmFsdWF0b3Jfc3ViamVjdChyb290X3JhdyxtcmF3LHByYXcsdnNyYyk6cmV0dXJuIHsibWFuaWZlc3QiOmFydCgiTUFOSUZFU1QiLG1yYXcpLCJwYWNrZXQiOmFydCgiUEFDS0VUIixwcmF3KSwicHJlcmVnX3Jvb3QiOmFydCgiUFJFUkVHX1JPT1QiLHJvb3RfcmF3KSwidmFsaWRhdG9yIjphcnQoIlZBTElEQVRPUiIsdnNyYyl9CmRlZiB2YWxpZGF0ZV9pcihpcmF3LHByb2R1Y2VyX2lkcyxyZXZpZXdzLHJldmlld2VyX2lkcyxyZXZpZXdlcl9zb3VyY2VzLHJvb3RfcmF3LHJvb3RfZmlsZXMsbXJhdyxwcmF3LHZzcmMpOgogc3ViamVjdHM9eyJSWCI6cHJvZHVjZXJfc3ViamVjdCgiRVhFQ1VUT1IiLHByb2R1Y2VyX2lkc1siRVhFQ1VUT1IiXSksIlJDIjpwcm9kdWNlcl9zdWJqZWN0KCJDSEVDS0VSIixwcm9kdWNlcl9pZHNbIkNIRUNLRVIiXSksIlJWIjpldmFsdWF0b3Jfc3ViamVjdChyb290X3JhdyxtcmF3LHByYXcsdnNyYyl9O3BhcnNlZD17fQogZm9yIHJvbGUgaW4gKCJSWCIsIlJDIiwiUlYiKTpwYXJzZWRbcm9sZV09dmFsaWRhdGVfcmV2aWV3KHJldmlld3Nbcm9sZV0scm9sZSxyZXZpZXdlcl9pZHNbcm9sZV0scmV2aWV3ZXJfc291cmNlc1tyb2xlXSxyb290X3Jhdyxyb290X2ZpbGVzLHN1YmplY3RzW3JvbGVdKVswXQogaWYgbGVuKHNldChyZXZpZXdlcl9pZHMudmFsdWVzKCkpKSE9NCBvciBhbnkocmV2aWV3ZXJfaWRzW3hdIGluIHByb2R1Y2VyX2lkcy52YWx1ZXMoKSBmb3IgeCBpbiByZXZpZXdlcl9pZHMpOnJhaXNlIE1hbmlmZXN0RXJyb3IoInByb2R1Y2VyIHJldmlld2VyIHNlcGFyYXRpb24iKQogZXhwZWN0ZWQ9eyJjaGVja3MiOnsibWFudWFsX3NlbWFudGljX2NvcHlfY2hlY2tzX3Bhc3MiOlRydWUsIm5vcm1hbGl6ZWRfYXN0X2Rpc3RpbmN0IjpUcnVlLCJzb3VyY2VfYnl0ZXNfZGlzdGluY3QiOlRydWV9LCJwcm9kdWNlcl9pZGVudGl0aWVzIjp7IkNIRUNLRVIiOmFydCgiQ0hFQ0tFUl9JREVOVElUWSIscHJvZHVjZXJfaWRzWyJDSEVDS0VSIl0pLCJFWEVDVVRPUiI6YXJ0KCJFWEVDVVRPUl9JREVOVElUWSIscHJvZHVjZXJfaWRzWyJFWEVDVVRPUiJdKX0sInJldmlld2VyX2lkZW50aXRpZXMiOntyOmFydChyKyJfSURFTlRJVFkiLHJldmlld2VyX2lkc1tyXSkgZm9yIHIgaW4gKCJSWCIsIlJDIiwiUlYiKX0sInJldmlld3MiOntyOmFydChyKyJfUkVWSUVXIixyZXZpZXdzW3JdKSBmb3IgciBpbiAoIlJYIiwiUkMiLCJSViIpfSwic2NoZW1hIjoiRDAwOC1JUi0zIiwic3ViamVjdHMiOnN1YmplY3RzfQogeD1wYXJzZV9ieXRlcyhpcmF3KQogaWYgeCE9ZXhwZWN0ZWQ6cmFpc2UgTWFuaWZlc3RFcnJvcigiSVIiKQogcmV0dXJuIHgKZGVmIHByZWZyZWV6ZV9zdWJqZWN0KHJvb3RfcmF3LGlyYXcsbXJhdyxwcmF3LHZzcmMscHJvZHVjZXJfaWRzLHJldmlld2VyX2lkcyk6cmV0dXJuIHsiaW5kZXBlbmRlbmNlX3JlcG9ydCI6YXJ0KCJJUiIsaXJhdyksIm1hbmlmZXN0IjphcnQoIk1BTklGRVNUIixtcmF3KSwicGFja2V0IjphcnQoIlBBQ0tFVCIscHJhdyksInByZXJlZ19yb290IjphcnQoIlBSRVJFR19ST09UIixyb290X3JhdyksInByb2R1Y2VyX2lkZW50aXRpZXMiOntrOmFydChrKyJfSURFTlRJVFkiLHYpIGZvciBrLHYgaW4gc29ydGVkKHByb2R1Y2VyX2lkcy5pdGVtcygpKX0sInJldmlld2VyX2lkZW50aXRpZXMiOntrOmFydChrKyJfSURFTlRJVFkiLHYpIGZvciBrLHYgaW4gc29ydGVkKHJldmlld2VyX2lkcy5pdGVtcygpKX0sInZhbGlkYXRvciI6YXJ0KCJWQUxJREFUT1IiLHZzcmMpfQpkZWYgdmFsaWRhdGVfcGYocGZyYXcscnByYXcscnBpZCxycHNvdXJjZSxyb290X3Jhdyxyb290X2ZpbGVzLHN1YmplY3QpOgogdmFsaWRhdGVfcmV2aWV3KHJwcmF3LCJSUCIscnBpZCxycHNvdXJjZSxyb290X3Jhdyxyb290X2ZpbGVzLHN1YmplY3QpO3g9cGFyc2VfYnl0ZXMocGZyYXcpO2V4cGVjdGVkPXsicHJlX2ZyZWV6ZV9yZXZpZXciOmFydCgiUlBfUkVWSUVXIixycHJhdyksInJldmlld2VyX2lkZW50aXR5IjphcnQoIlJQX0lERU5USVRZIixycGlkKSwic2NoZW1hIjoiRDAwOC1QRi0zIiwic3ViamVjdCI6c3ViamVjdH0KIGlmIHghPWV4cGVjdGVkOnJhaXNlIE1hbmlmZXN0RXJyb3IoIlBGIikKIHJldHVybiB4CmRlZiB2YWxpZGF0ZV9mcmVlemUoZnJhdyxwZnJhdyxpcmF3LHJvb3RfcmF3LG1yYXcscHJhdyx2c3JjLHByb2R1Y2VyX2lkcyxyZXZpZXdlcl9pZHMpOgogc3ViamVjdD1wcmVmcmVlemVfc3ViamVjdChyb290X3JhdyxpcmF3LG1yYXcscHJhdyx2c3JjLHByb2R1Y2VyX2lkcyxyZXZpZXdlcl9pZHMpO3g9cGFyc2VfYnl0ZXMoZnJhdyk7ZXhwZWN0ZWQ9eyJpbmRlcGVuZGVuY2VfcmVwb3J0IjphcnQoIklSIixpcmF3KSwicHJlX2ZyZWV6ZSI6YXJ0KCJQRiIscGZyYXcpLCJwcmVyZWdfcm9vdCI6YXJ0KCJQUkVSRUdfUk9PVCIscm9vdF9yYXcpLCJzY2hlbWEiOiJEMDA4LUZSRUVaRS0zIiwic3ViamVjdCI6c3ViamVjdH0KIGlmIHghPWV4cGVjdGVkOnJhaXNlIE1hbmlmZXN0RXJyb3IoImZyZWV6ZSIpCiByZXR1cm4geApkZWYgc2VtYW50aWNfb19ieXRlcyhyYXcpOgogeD1wYXJzZV9ieXRlcyhyYXcpO3JldHVybiBjYW5vbmljYWwoeyJwcm92ZW5hbmNlX3F1YWxpZmllZCI6eFsicHJvdmVuYW5jZV9xdWFsaWZpZWQiXSwic2NoZW1hIjp4WyJzY2hlbWEiXSwic2VtYW50aWNfYm9keSI6eFsic2VtYW50aWNfYm9keSJdfSkKZGVmIHZhbGlkYXRlX3YodnJhdyxmcmF3LGlyYXcscGZyYXcscm9vdF9yYXcscm9vdF9maWxlcyxtcmF3LHByYXcsdnNyYyxwcm9kdWNlcl9idW5kbGVzLG8xLG8yKToKIG0sXz12YWxpZGF0ZV9hcnRpZmFjdHMobXJhdyxwcmF3LHZzcmMpCiBpZiBub3QgaXNpbnN0YW5jZShwcm9kdWNlcl9idW5kbGVzLGRpY3QpIG9yIHNldChwcm9kdWNlcl9idW5kbGVzKSE9c2V0KFBST0RVQ0VSX1JPTEVTKXx7InJldmlld2VyX2lkcyIsInJldmlld3MiLCJyZXZpZXdlcl9zb3VyY2VzIn06cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvZHVjZXIgYnVuZGxlIGVudmVsb3BlIikKIGlkcz17fTtwcm9kdWNlZD17fTthc3RzPVtdO3NvdXJjZV9ieXRlcz1bXQogZm9yIHJvbGUgaW4gUFJPRFVDRVJfUk9MRVM6CiAgYj1wcm9kdWNlcl9idW5kbGVzW3JvbGVdCiAgaWYgbm90IGlzaW5zdGFuY2UoYixkaWN0KSBvciBzZXQoYikhPXsiZGVwZW5kZW5jaWVzIiwiaWRlbnRpdHlfcmF3IiwibG9ja3MiLCJzb3VyY2VzIn06cmFpc2UgTWFuaWZlc3RFcnJvcigicHJvZHVjZXIgYnVuZGxlIikKICBpZHNbcm9sZV09dmFsaWRhdGVfaWRlbnRpdHkoYlsiaWRlbnRpdHlfcmF3Il0scm9sZSxiWyJzb3VyY2VzIl0sYlsiZGVwZW5kZW5jaWVzIl0sYlsibG9ja3MiXSxyb290X3Jhdyxyb290X2ZpbGVzKTtzcmM9bmV4dChpdGVyKGJbInNvdXJjZXMiXS52YWx1ZXMoKSkpO3NvdXJjZV9ieXRlcy5hcHBlbmQoc3JjKTthc3RzLmFwcGVuZChzY2FuX3NvdXJjZShzcmMpKTtwcm9kdWNlZFtyb2xlXT1leGVjdXRlX3Byb2R1Y2VyKHNyYyxwcmF3LG1yYXcsYlsiaWRlbnRpdHlfcmF3Il0pCiBpZiBzb3VyY2VfYnl0ZXNbMF09PXNvdXJjZV9ieXRlc1sxXSBvciBhc3RzWzBdPT1hc3RzWzFdOnJhaXNlIE1hbmlmZXN0RXJyb3IoInByb2R1Y2VyIGluZGVwZW5kZW5jZSIpCiBleHBlY3RlZF9yYXc9eyJFWEVDVVRPUiI6bzEsIkNIRUNLRVIiOm8yfQogZm9yIHJvbGUgaW4gUFJPRFVDRVJfUk9MRVM6CiAgaWYgcHJvZHVjZWRbcm9sZV0hPWV4cGVjdGVkX3Jhd1tyb2xlXTpyYWlzZSBNYW5pZmVzdEVycm9yKCJyYXcgTyBtaXNtYXRjaCIpCiAgdmFsaWRhdGVfbzMoZXhwZWN0ZWRfcmF3W3JvbGVdLG0sbXJhdyxwcm9kdWNlcl9idW5kbGVzW3JvbGVdWyJpZGVudGl0eV9yYXciXSkKIHByb2R1Y2VyX2lkcz17cjpwcm9kdWNlcl9idW5kbGVzW3JdWyJpZGVudGl0eV9yYXciXSBmb3IgciBpbiBQUk9EVUNFUl9ST0xFU307cmV2aWV3ZXJfaWRzPXByb2R1Y2VyX2J1bmRsZXNbInJldmlld2VyX2lkcyJdO3Jldmlld3M9cHJvZHVjZXJfYnVuZGxlc1sicmV2aWV3cyJdO3Jldmlld2VyX3NvdXJjZXM9cHJvZHVjZXJfYnVuZGxlc1sicmV2aWV3ZXJfc291cmNlcyJdCiB2YWxpZGF0ZV9pcihpcmF3LHByb2R1Y2VyX2lkcyxyZXZpZXdzLHJldmlld2VyX2lkcyxyZXZpZXdlcl9zb3VyY2VzLHJvb3RfcmF3LHJvb3RfZmlsZXMsbXJhdyxwcmF3LHZzcmMpO3N1YmplY3Q9cHJlZnJlZXplX3N1YmplY3Qocm9vdF9yYXcsaXJhdyxtcmF3LHByYXcsdnNyYyxwcm9kdWNlcl9pZHMscmV2aWV3ZXJfaWRzKTt2YWxpZGF0ZV9wZihwZnJhdyxyZXZpZXdzWyJSUCJdLHJldmlld2VyX2lkc1siUlAiXSxyZXZpZXdlcl9zb3VyY2VzWyJSUCJdLHJvb3RfcmF3LHJvb3RfZmlsZXMsc3ViamVjdCk7dmFsaWRhdGVfZnJlZXplKGZyYXcscGZyYXcsaXJhdyxyb290X3JhdyxtcmF3LHByYXcsdnNyYyxwcm9kdWNlcl9pZHMscmV2aWV3ZXJfaWRzKQogZXF1YWw9c2VtYW50aWNfb19ieXRlcyhvMSk9PXNlbWFudGljX29fYnl0ZXMobzIpO3g9cGFyc2VfYnl0ZXModnJhdyk7ZXhwZWN0ZWQ9eyJhbGxfbGF3c19wYXNzIjpUcnVlLCJmcmVlemUiOmFydCgiRlJFRVpFIixmcmF3KSwiaW5kZXBlbmRlbmNlX3JlcG9ydCI6YXJ0KCJJUiIsaXJhdyksIm8xIjphcnQoIk8xIixvMSksIm8yIjphcnQoIk8yIixvMiksIm9fc2VtYW50aWNzX2VxdWFsIjplcXVhbCwicHJvZHVjZXJzX2V4ZWN1dGVkIjpUcnVlLCJzY2hlbWEiOiJEMDA4LVYtMyIsInZhbGlkIjplcXVhbH0KIGlmIHghPWV4cGVjdGVkIG9yIG5vdCBlcXVhbDpyYWlzZSBNYW5pZmVzdEVycm9yKCJWIikKIHJldHVybiB4CmRlZiB2YWxpZGF0ZV9lKGVyYXcsdnJhdyxmcmF3LHBmcmF3LGlyYXcscm9vdF9yYXcscm9vdF9maWxlcyxtcmF3LHByYXcsdnNyYyxwcm9kdWNlcl9idW5kbGVzLG8xLG8yLGRhZyxtYW51YWxfcmF3KToKIHY9dmFsaWRhdGVfdih2cmF3LGZyYXcsaXJhdyxwZnJhdyxyb290X3Jhdyxyb290X2ZpbGVzLG1yYXcscHJhdyx2c3JjLHByb2R1Y2VyX2J1bmRsZXMsbzEsbzIpO3ZhbGlkYXRlX2V2aWRlbmNlX2RhZyhkYWcpO21hbnVhbD1wYXJzZV9ieXRlcyhtYW51YWxfcmF3KTtzb3VyY2VzPXtyOm5leHQoaXRlcihwcm9kdWNlcl9idW5kbGVzW3JdWyJzb3VyY2VzIl0udmFsdWVzKCkpKSBmb3IgciBpbiBQUk9EVUNFUl9ST0xFU307ZXhwZWN0ZWRfbWFudWFsPXsiY2hlY2tzIjpbeyJhbnN3ZXJfbGl0ZXJhbHNfYWJzZW50IjpUcnVlLCJjb21wbGV0ZWQiOlRydWUsInJldmlld2VyX3JvbGUiOiJSWCIsInNvdXJjZSI6YXJ0KCJFWEVDVVRPUl9TT1VSQ0UiLHNvdXJjZXNbIkVYRUNVVE9SIl0pfSx7ImFuc3dlcl9saXRlcmFsc19hYnNlbnQiOlRydWUsImNvbXBsZXRlZCI6VHJ1ZSwicmV2aWV3ZXJfcm9sZSI6IlJDIiwic291cmNlIjphcnQoIkNIRUNLRVJfU09VUkNFIixzb3VyY2VzWyJDSEVDS0VSIl0pfV0sInNjaGVtYSI6IkQwMDgtTUFOVUFMLUNPUFktRkFDVFMtMyJ9CiBpZiBtYW51YWwhPWV4cGVjdGVkX21hbnVhbDpyYWlzZSBNYW5pZmVzdEVycm9yKCJtYW51YWwgY29weSBmYWN0cyIpCiB4PXBhcnNlX2J5dGVzKGVyYXcpO2V4cGVjdGVkPXsiZGFnIjpkYWcsImZyZWV6ZSI6YXJ0KCJGUkVFWkUiLGZyYXcpLCJpbmRlcGVuZGVuY2VfcmVwb3J0IjphcnQoIklSIixpcmF3KSwibWFudWFsX2NvcHlfZmFjdHMiOmFydCgiTUFOVUFMX0NPUFlfRkFDVFMiLG1hbnVhbF9yYXcpLCJvMSI6YXJ0KCJPMSIsbzEpLCJvMiI6YXJ0KCJPMiIsbzIpLCJwcmVfZnJlZXplIjphcnQoIlBGIixwZnJhdyksInNjaGVtYSI6IkQwMDgtRS0zIiwidiI6YXJ0KCJWIix2cmF3KSwidmVyZGljdCI6IkFET1BUX0FMR0VCUkEiIGlmIHZbInZhbGlkIl0gZWxzZSAiT1BFTiJ9CiBpZiB4IT1leHBlY3RlZDpyYWlzZSBNYW5pZmVzdEVycm9yKCJFIikKIHJldHVybiB4CmRlZiBmdXR1cmVfdmVyZGljdCgqYXJncyk6CiBpZiBsZW4oYXJncykhPTE1OnJldHVybiAiT1BFTiIKIHRyeTpyZXR1cm4gdmFsaWRhdGVfZSgqYXJncylbInZlcmRpY3QiXQogZXhjZXB0IEV4Y2VwdGlvbjpyZXR1cm4gIk9QRU4iCgpkZWYgbWFpbihhcmd2PU5vbmUpOgogYXA9YXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKTthcC5hZGRfYXJndW1lbnQoIm1hbmlmZXN0IixuYXJncz0iPyIpO2FwLmFkZF9hcmd1bWVudCgiLS1nZW5lcmF0ZSIsYWN0aW9uPSJzdG9yZV90cnVlIik7YT1hcC5wYXJzZV9hcmdzKGFyZ3YpCiBpZiBhLmdlbmVyYXRlOnN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKGNhbm9uaWNhbChtYW5pZmVzdF9zcGVjKCkpKTtyZXR1cm4gMAogaWYgbm90IGEubWFuaWZlc3Q6YXAuZXJyb3IoIm1hbmlmZXN0IHJlcXVpcmVkIikKIG1hbmlmZXN0X3BhdGg9UGF0aChhLm1hbmlmZXN0KTtyYXc9bWFuaWZlc3RfcGF0aC5yZWFkX2J5dGVzKCk7cGFja2V0X3BhdGg9bWFuaWZlc3RfcGF0aC53aXRoX25hbWUoIkQtMDA4LVBBQ0tFVC5tZCIpO3ZhbGlkYXRvcl9wYXRoPVBhdGgoX19maWxlX18pCiBfLGNvdW50cz12YWxpZGF0ZV9hcnRpZmFjdHMocmF3LHBhY2tldF9wYXRoLnJlYWRfYnl0ZXMoKSx2YWxpZGF0b3JfcGF0aC5yZWFkX2J5dGVzKCkpO3ByaW50KCIgIi5qb2luKGYie2t9PXt2fSIgZm9yIGssdiBpbiBjb3VudHMuaXRlbXMoKSkpO3JldHVybiAwCmlmIF9fbmFtZV9fPT0iX19tYWluX18iOnJhaXNlIFN5c3RlbUV4aXQobWFpbigpKQo=","kind":"blob"},"88ed4b9979c0a1b78f408ec120c1eebaa49e1ca1":{"data_b64":"IyBELTAwOCB2MyBTdGFnZSBCIFBBU1MgYW5kIFN0YWdlIEMgcHJvdmVuYW5jZSBwcmVyZWdpc3RyYXRpb246IHR5cGVkIEJ1ZGdldCBhbGdlYnJhCgojIyBTdGF0dXMgYW5kIGV4YWN0IGJvdW5kYXJ5CgoqKkQtMDA4IHJlbWFpbnMgYE9QRU5gIGFuZCB1bmZyb3plbi4gU2VtYW50aWMgU3RhZ2UgQiBwYXNzZWQgd2l0aCB0aGUgZXhhY3QgbG9ja2VkIHByb2plY3Rpb24gcmVjb3JkZWQgYmVsb3c7IFN0YWdlIEMgaXMgYSBmdXR1cmUgcHJvdmVuYW5jZS1jb250cmFjdCBwcmVyZWdpc3RyYXRpb24gb25seS4gVjEgYW5kIHYyIGFyZSBpbnZhbGlkYXRlZCBwcmUtZnJlZXplL2V2aWRlbmNlLioqIFRoaXMgcGFja2V0IGFuZCBpdHMgY2Fub25pY2FsIG1hbmlmZXN0IGRvIG5vdCBzZWxlY3QgZG9jdHJpbmUuIFRoZSBjdXJyZW50IG5vbi1iaW5kaW5nIGh5cG90aGVzaXMgaXMgb25lIHJlcHJlc2VudGF0aW9uLW5ldXRyYWwgYFRZUEVEX0JVREdFVF9BTEdFQlJBYDogYSBCdWRnZXQgaXMgYSBmaW5pdGUgcHJvZHVjdCBvZiB0eXBlZCBkaW1lbnNpb25zLCBlYWNoIHNlbGVjdGluZyBleGFjdGx5IG9uZSBjbG9zZWQgbGF3IGtpbmQgZnJvbSBgQ09OU1VNQUJMRWAsIGBQRUFLYCwgYFJBVEVgLCBgTEVBU0VgLCBvciBgU0hBUkVgOyB1bmRlZmluZWQgY29tYmluYXRpb25zIGFyZSBgVU5TVVBQT1JURURgLiBDb21wb3VuZCB0cmFuc2l0aW9ucyBlbnVtZXJhdGUgZGltZW5zaW9ucyBhbmQgYXJlIHNlbWFudGljYWxseSBhdG9taWMuCgpUaGUgZGVjaXNpb24gYXNrcyB3aGljaCByZXByZXNlbnRhdGlvbi1uZXV0cmFsIHR5cGVkIGFkbWlzc2lvbiwgY29uc2VydmF0aW9uLCBzZXR0bGVtZW50LCBhbmQgcmVjb3ZlcnkgbGF3cyBjYW4gZ292ZXJuIGFjY291bnRhYmxlIFJlc291cmNlIHJlc2VydmF0aW9uL3VzZSB3aXRob3V0IHZpb2xhdGluZyBzZXR0bGVkIGRvY3RyaW5lLiBJdCBkb2VzIG5vdCBjaG9vc2Ugc3RvcmFnZSwgdHJhbnNhY3Rpb24sIHNjaGVkdWxlciwgcHJvdmlkZXIsIHByaWNpbmcsIFRDQiwgQUJJLCBELTAwOSBsaWZlY3ljbGUsIG9yIGEgc2NhbGFyIHVuaXQuIFRoZXJlIGlzIG5vIGltcGxpY2l0IGNvbnZlcnNpb24sIHNjYWxhciBjb2xsYXBzZSwgcHJvdmlkZXItY2hhcmdlIGVxdWl2YWxlbmNlLCBvciBhdXRvbWF0aWMgcmVmdW5kLiBCdWRnZXQgbmV2ZXIgZ3JhbnRzIENhcGFiaWxpdHksIGFjY2VwdHMgYSByZXN1bHQsIGVzdGFibGlzaGVzIHRydXRoLCBvciBhdXRob3JpemVzIGFuIEVmZmVjdCBvciBQcm9tb3Rpb24uCgojIyBJbmhlcml0ZWQgZG9jdHJpbmUKCkNPUkUgcmVxdWlyZXMgdHlwZWQgQnVkZ2V0IGNvbnNlcnZhdGlvbiwgY2F1c2FsIGF0dHJpYnV0aW9uLCBhdXRob3JpdHkgbW9ub3RvbmljaXR5LCByZWNvdmVyeSBjbGFzc2lmaWNhdGlvbiwgRWZmZWN0L1Byb21vdGlvbiBzZXBhcmF0aW9uLCBhbmQgbW9kZWwgaW5kZXBlbmRlbmNlLiBELTAwMSBzdXBwbGllcyBzdGFibGUgdHlwZWQgaWRlbnRpdHkgYW5kIG5vbnJldXNlLiBELTAwMiBtYWtlcyBsZWRnZXIsIGFjcXVpc2l0aW9uLCBjaGFyZ2UsIGFuZCBleHRlcm5hbCBmYWN0cyBHbG9iYWwgd2hpbGUgUmVzb3VyY2UgYmluZGluZyBwbGFucyByZW1haW4gV29ybGQtcmVsYXRpdmU7IFdvcmxkIGRpc2NhcmQgY2Fubm90IGVyYXNlIHNwZW5kLiBELTAwMyBhdXRob3JpdHkgaXMgY2hlY2tlZCBmaXJzdCBhbmQgZGVuaWFsIGNoYW5nZXMgbm8gYWNjb3VudGluZyBzdGF0ZS4gRC0wMDQvRC0wMDUgcmVxdWlyZSBleGFjdCBhdG9taWMgZGVsdGFzLCBgVU5LTk9XTmAgcmVjb25jaWxpYXRpb24sIGFuZCBubyBibGluZCByZWRpc3BhdGNoLiBELTAwNi9ELTAwNyByZXF1aXJlIG9wZXJhdGlvbiBiaW5kaW5nL25vbnJldXNlLCByZXRhaW5lZCBvdXRjb21lcy90b21ic3RvbmVzLCBjb25zZXJ2YXRpdmUgcmVwbGF5LCBleGFjdCBwdWJsaWNhdGlvbiwgYW5kIEdsb2JhbC9Xb3JsZCBzZXBhcmF0aW9uLgoKVGhlIHJlcXVpcmVkIGNvbXBsZXRlZCBoYXJuZXNzIHJlY29yZCBpcyBleGFjdGx5IGBkZWNpc2lvbnMvYWdlbnQtbmF0aXZlLWhhcm5lc3MtY29tcGxldGlvbi12MS5qc29uYCwgNiwwNzEgYnl0ZXMsIFNIQS0yNTYgYGQ3NjJjOWM1MDQwNDA2M2M0MWQ3YjBmM2ZmYTMxMTIyNjdkYTRmYzUwZDIyM2RjYzlhOTgxNTcwNWRhOWYyOWZgLiBJdHMgZXhhY3QgQjggdm9jYWJ1bGFyeSBpcyByZXByb2R1Y2VkIGluIHRoZSBtYW5pZmVzdDogUTAxIGNvbXB1dGU7IFEwMiB0b2tlbnM7IFEwMyB0aW1lOyBRMDQgZW5lcmd5OyBRMDUgcHJvdmlkZXIgY2hhcmdlOyBRMDYgY29udGV4dCBzdG9yYWdlOyBRMDcgcmV0cmlldmFsOyBRMDggY29tcGFjdGlvbjsgUTA5IHRvb2wvc2VydmljZSByZXNlcnZhdGlvbjsgUTEwIGNvbmN1cnJlbnQgY2hpbGQgd29yazsgUTExIGZhaWxlZC9zcGVjdWxhdGl2ZSB3b3JrOyBRMTIgZXZhbHVhdGlvbi9hZ2dyZWdhdGlvbjsgUTEzIGNhbmNlbGxhdGlvbjsgUTE0IGNhY2hlL3JldXNlOyBRMTUgZGVsZWdhdGlvbjsgUTE2IHN1YnN0aXR1dGlvbjsgUTE3IGxhdGUgcmVzdWx0LiBMMDEgcmVzZXJ2YXRpb24gYWNxdWlzaXRpb24vY29tbWl0L3JlbGVhc2U7IEwwMiBwYXJ0aWFsL2ZhaWxlZCBjb25zdW1wdGlvbjsgTDAzIHJlZnVuZC9ub25yZWZ1bmQ7IEwwNCBsZWFzZSBncmFudC9leHBpcnkvcmVuZXcvcmV2b2tlOyBMMDUgc2hhcmUvcGVhay9yYXRlOyBMMDYgcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uOyBMMDcgY29uY3VycmVudCByZXNlcnZhdGlvbjsgTDA4IGNvbnRpbmdlbmN5L2VzY3Jvdy9vdmVycnVuOyBMMDkgY2FuY2VsbGF0aW9uIHRpbWluZzsgTDEwIGF0dHJpYnV0aW9uL3JlY29uY2lsaWF0aW9uOyBMMTEgcHJvdmlkZXIgY2hhcmdlIGRpc3RpbmN0IGZyb20gc2VtYW50aWMgY29uc3VtcHRpb247IEwxMiBubyBhdXRvbWF0aWMgcmVmdW5kIGZvciBmYWlsdXJlLCBjYW5jZWxsYXRpb24sIGxhdGUgb3V0cHV0LCBvciBkaXNjYXJkZWQgV29ybGQgd29yay4gQWxsIDIwNCBRw5dMIGNlbGxzIGFyZSBleHBsaWNpdGx5IGBBUFBMSUNBQkxFYCBvciBgTl9BYCB3aXRoIGEgbGF3LXNwZWNpZmljIHNlbWFudGljIHJlYXNvbiwgaW5jbHVkaW5nIGV4cGxpY2l0IGNvbnRleHQtc3RvcmFnZSwgcmV0cmlldmFsLCBjb21wYWN0aW9uLCBhbmQgY2FjaGUvcmV1c2UgdHJlYXRtZW50LgoKIyMgQ2xvc2VkIHNlbWFudGljIGh5cG90aGVzaXMKCkV2ZXJ5IGRpbWVuc2lvbiBiaW5kcyBkaW1lbnNpb24sIGtpbmQsIHVuaXQsIHNjb3BlLCBvd25lciwgb3B0aW9uYWwgcGFyZW50LCBhbmQgZXhhY3Qga2luZCBzdGF0ZS4gRXZlcnkgcmVxdWVzdCBiaW5kcyBvcGVyYXRpb24sIEFjdG9yLCBXb3JsZCwgQ29tbWl0bWVudCwgUmVzb3VyY2UsIGRpbWVuc2lvbiwgYW1vdW50LCBhbmQgYSBjb21wbGV0ZSBELTAwMyBoYW5kb2ZmLiBEaW1lbnNpb24gaWRlbnRpdGllcyBhcmUgZ2xvYmFsbHkgdW5pcXVlOyB1bml0IGxhYmVscyBtYXkgcmVwZWF0IG9ubHkgdGhyb3VnaCB0aGUgZXhwbGljaXQga2luZC11bml0IGNvbXBhdGliaWxpdHkgdGFibGUgYW5kIG5ldmVyIGltcGx5IGNvbnZlcnNpb24gb3IgZGltZW5zaW9uIGFsaWFzaW5nLiBBIHBhcmVudCBhbmQgY2hpbGQgbXVzdCBoYXZlIHRoZSBzYW1lIG93bmVyIGFuZCwgYnkgZGVmYXVsdCwgdGhlIHNhbWUga2luZCBhbmQgdW5pdDsgdGhlIG1hbmlmZXN04oCZcyBjbG9zZWQgYHBhcmVudF9jb21wYXRpYmlsaXR5YCBsaXN0IG1heSBkZWNsYXJlIG9ubHkgY29udmVyc2lvbi1mcmVlIGNhcGFjaXR5LXBhcmVudCByZWxhdGlvbnMgYW5kIGlzIGVtcHR5IGhlcmUuIENoaWxkIGNhcGFjaXR5IGFuZCBhZ2dyZWdhdGUgc2libGluZyBkZWxlZ2F0aW9uIGNhbm5vdCBleGNlZWQgcGFyZW50IGNhcGFjaXR5LiBDcm9zcy1raW5kIFJBVEXihpJDT05TVU1BQkxFIGFuZCBjcm9zcy1vd25lciBwYXJlbnRpbmcgcmVqZWN0LiBXb3JsZCByZWNvcmRzIGFyZSBleGFjdCBjbG9zZWQgYHt3b3JsZF9pZH1gIG9iamVjdHMgd2l0aCBub25lbXB0eSB1bmlxdWUgdGV4dCBpbiBpbml0aWFsIGFuZCBldmVyeSByZXN1bHRpbmcgc3RhdGUuIEdsb2JhbCBhY2NvdW50aW5nIHJlY29yZHMgcmVtYWluIGRpc3RpbmN0IGZyb20gV29ybGQtcmVsYXRpdmUgYmluZGluZyBwbGFucy4KCmBDT05TVU1BQkxFYCB0cmFja3MgZnJlZSwgcmVzZXJ2ZWQsIGNvbnN1bWVkLCByZWZ1bmRhYmxlLCBub25yZWZ1bmRhYmxlLCB1bmtub3duL2Rpc3B1dGVkLCBhbmQgZXhwaXJlZCBzdGF0ZS4gUmVzZXJ2ZS9lc2Nyb3cgcmVtb3ZlcyBmcmVlIGNhcGFjaXR5OyBhY3F1aXJlIGNvbnN1bWVzIHJlc2VydmF0aW9ucyB0aGVuIGV4cGxpY2l0IGZyZWUgY2FwYWNpdHk7IHJlbGVhc2luZyB1bnVzZWQgcmVzZXJ2YXRpb24gaXMgbm90IHJlZnVuZDsgb25seSBleHBsaWNpdCByZWZ1bmQgY2FuIHJldmVyc2UgcmVmdW5kYWJsZSBjb25zdW1lZCBhbW91bnQuIGBQRUFLYCB0cmFja3MgY2FwLCByZXNlcnZlZCwgY3VycmVudCwgYW5kIGhpZ2gtd2F0ZXIuIGBSQVRFYCB0cmFja3MgYXZhaWxhYmxlIGJ1Y2tldCwgY2FwLCByZWZpbGwgcXVhbnR1bSwgd2luZG93LCBsYXN0IHJlZmlsbCwgYW5kIHJlc2VydmF0aW9uOyBldmVyeSBSQVRFIG9wZXJhdGlvbiByZXF1aXJlcyBgbG9naWNhbF9ub3cgPj0gbGFzdF9yZWZpbGxfYXRgIGluIGJvdGggcHJpbWFyeSBhbmQgb3JhY2xlLiBgTEVBU0VgIHRyYWNrcyBjYXBhY2l0eSBhbmQgZ2xvYmFsbHkgdW5pcXVlIGFjdGl2ZS9oaXN0b3J5IGxlYXNlIGlkZW50aXR5OyBpbml0aWFsIGdyYW50IGVwb2NoIGlzIGV4YWN0bHkgMSBhbmQgcmVuZXdhbCBpcyBleGFjdGx5IHByaW9yIGVwb2NoICsxLiBgU0hBUkVgIHRyYWNrcyBwYXJlbnQgY2FwYWNpdHkgYW5kIGdsb2JhbGx5IHVuaXF1ZSBjaGlsZCBpZGVudGl0eSBhY3Jvc3MgZXZlcnkgZGltZW5zaW9uIGFuZCBhY3RpdmUvaGlzdG9yeSBzdGF0ZTsgcmV2b2tlZCBoaXN0b3J5IHByZXNlcnZlcyBhbGxvY2F0aW9uLCByZXNlcnZlZCwgYW5kIG9uZSBpbmN1cnJlZCBgdXNlZGAgZmllbGQsIGFuZCBjYXBhY2l0eSBjb3VudHMgdGhhdCBpbmN1cnJlZCB1c2UgZXhhY3RseSBvbmNlLiBSZXZva2UgY2Fubm90IHJlbWludCBhIGNoaWxkIGlkZW50aXR5IG9yIGluY3VycmVkIHVzZS4KClByb3ZpZGVyIGVzdGltYXRlLCBvYnNlcnZlZCwgc2V0dGxlZCwgY3JlZGl0LCBhbmQgYFVOS05PV05gIGFyZSB1bmlxdWUgY2F1c2FsIEdsb2JhbCBmYWN0cyB3aXRoIGFjY291bnQgYW5kIG9wZXJhdGlvbiBjb250aW51aXR5LCBvbmUgc3VjY2Vzc29yLCBubyBmb3JrL3Jvb3Qvc3RhZ2UgcmV2ZXJzYWwsIGFuZCBjdW11bGF0aXZlIGNyZWRpdCBib3VuZGVkIGJ5IHNldHRsZW1lbnQuIGBVTktOT1dOYCBjYW5ub3Qgc2V0dGxlIGRpcmVjdGx5OiBhIHNlcGFyYXRlIHVuaXF1ZSBPQlNFUlZFRCBldmlkZW5jZSBmYWN0IG11c3QgcHJlc2VydmUgYWNjb3VudC9jYXVzYWwgY29udGludWl0eSBhbmQgcHJvdmlkZSB0aGUgYm91bmRlZCBhbW91bnQsIGZvbGxvd2VkIGJ5IGEgc2VwYXJhdGUgZXhhY3QtYW1vdW50IFNFVFRMRUQgZmFjdC4gUHJvdmlkZXIgZmFjdHMgbmV2ZXIgZXF1YWwgc2VtYW50aWMgY29uc3VtcHRpb24gYnkgaW1wbGljYXRpb24uIENhbmNlbGxhdGlvbiByZXF1ZXN0IGFuZCBlZmZlY3RpdmUgYWNjb3VudGluZyBwb2ludHMgYXJlIGRpc3RpbmN0IHdpdGhvdXQgc2VsZWN0aW5nIEQtMDA5IGxpZmVjeWNsZS4gRmFpbHVyZSwgZGVwZW5kZW5jeSByb2xsYmFjaywgbGF0ZSByZXN1bHQsIHNwZWN1bGF0aXZlIGxvc2VyLCBldmFsdWF0b3Igd29yaywgbW9kZWwvdG9vbCBzdWJzdGl0dXRpb24sIGRlbGVnYXRpb24sIGNhY2hlIHJldXNlLCBhbmQgV29ybGQgZGlzY2FyZCBwcmVzZXJ2ZSBleGFjdCBpbmN1cnJlZCBhY2NvdW50aW5nIHVubGVzcyBhbiBleHBsaWNpdCBsYXdmdWwgcmVsZWFzZS9yZWZ1bmQgb2NjdXJzLiBPbmUgZ2xvYmFsIGNsYWltZWQtSUQgbmFtZXNwYWNlIGNvdmVycyBpbml0aWFsIHByb3ZpZGVyIGZhY3RzIGFuZCBjcmVhdGVkIGlkZW50aXRpZXMgZnJvbSBlYWNoIG91dGVyIGF0dGVtcHQ6IG91dGVyIG9wZXJhdGlvbiwgcHJvdmlkZXIgZmFjdCwgU0hBUkUgYWxsb2NhdGlvbiBjaGlsZCwgTEVBU0UgZ3JhbnQgaWRlbnRpdHksIGFuZCBkaXJlY3QgY29tcG91bmQgY2hpbGQgY2xhaW1zLiBSZXRhaW5lZC90b21iIGF1ZGl0IHJlY29yZHMgc3RvcmUgdGhlIGNvbXBsZXRlIHNvcnRlZCBgY2xhaW1lZF9pZHNgIHNldC4gUnVudGltZSByZXNvbHZlcyBhbiBleGlzdGluZyBvdXRlciBvcGVyYXRpb24gYW5kIHZlcmlmaWVzIGV4YWN0IGJpbmRpbmcgcGx1cyB0aGUgY29tcGxldGUgc2V0IGJlZm9yZSB0cmVhdGluZyBhbnkgaWRlbnRpdHkgb3IgYXV0aG9yaXR5IGZyZXNobmVzcyBhcyBuZXcuIEV4YWN0IEFGVEVSL1JFTE9BRCByZXRyaWVzIHRoZXJlZm9yZSByZXR1cm4gYFJFUExBWWAgZm9yIHByb3ZpZGVyLCBTSEFSRSwgTEVBU0UsIGFuZCBDT01QT1VORDsgY2hhbmdlZCBiaW5kaW5nLCBwYXJ0aWFsIG92ZXJsYXAsIG9yIGNyb3NzLW9wZXJhdGlvbiByZXVzZSByZWplY3RzLiBOZXcgYXR0ZW1wdHMgc3RpbGwgdW5kZXJnbyBnbG9iYWwgcHJlZmxpZ2h0LiBFdmVyeSBmaXJzdCBhdHRlbXB0ZWQgb3V0ZXIgb3IgY2hpbGQgSUQgaXMgcmV0YWluZWQgb25jZSwgaW5jbHVkaW5nIGF1dGhvcml0eS9hZG1pc3Npb24gZGVuaWFsLCB1bnN1cHBvcnRlZCByZXF1ZXN0cywgYW5kIEJFRk9SRSBmYXVsdHMuIEluaXRpYWwgcmV0YWluZWQvdG9tYiBpbnZlbnRvcmllcyBhcmUgZm9yYmlkZGVuLCBzbyBldmVyeSBpbW11dGFibGUgYmluZGluZywgY2xhaW1lZCBzZXQsIG91dGNvbWUsIGF0dGVtcHQvZXhwaXJ5IHRpbWUsIGNhdXNhbCBvcGVyYXRpb24sIGFuZCByZXRpcmVtZW50IGlzIGRlcml2ZWQgZnJvbSBhIHJhdyB0cmFjZS4gRXhwaXJ5L3RvbWIgcmV0dXJucyByZWNvbmNpbGlhdGlvbi4gUmF3IG5lc3RlZCBDT01QT1VORCBpcyBmb3JiaWRkZW4uIEEgZGlyZWN0IGNvbXBvdW5kIHdpdGggYW55IG5vbi1BUFBMSUVEIGNoaWxkIGhhcyBvdXRlciBgREVOWV9BRE1JU1NJT05gLCBubyBwcm9kdWN0IGRlbHRhLCBhbmQgb25lIHJldGFpbmVkIHJlY29yZCBwZXIgY2hpbGQgd2l0aCB0aGF0IGNoaWxk4oCZcyBhY3R1YWwgb3V0Y29tZTsgRWZmZWN0IGNoaWxkcmVuIHRoZXJlZm9yZSByZW1haW4gYFVOU1VQUE9SVEVEYC4gVGhlIGZ1bGwgRC0wMDMgZ3JhbnQvZ2VuZXJhdGlvbi9leGVjdXRpb24vYWN0aXZhdGlvbi92YWxpZGF0aW9uL25vbmNlL2ZyZXNobmVzcy9BY3Rvci9Db21taXRtZW50L1dvcmxkL3JpZ2h0IGhhbmRvZmYgY29tcGFyZXMgZXhhY3RseSBhbmQgZXZlcnkgZnJlc2huZXNzIG5hbWVzcGFjZSBpcyBnbG9iYWxseSBub25yZXBlYXRpbmcuCgojIyBDb3JwdXMgYW5kIGluZGVwZW5kZW50IGxhd3MKCkZVTEwgcmlzayBjb3JwdXMgdjMgc2VtYW50aWMgU3RhZ2UgQjogc2l4IHByb2plY3Rpb25zIChmaXZlIGxhdyBraW5kcyBwbHVzIGNvbXBvdW5kIHByb2R1Y3QpLCAxNyBmYW1pbGllcywgNjkgcmF3IHN1YmNhc2VzLCA5IHN5bW1ldHJpYyBzdHJ1Y3R1cmFsIHJlamVjdHMsIDYwIHByaW1hcnkvb3JhY2xlLWFncmVlZCBvYnNlcnZhdGlvbnMsIGFuZCAxMyBpbmRlcGVuZGVudGx5IGNvZGVkIGxhdyByZWxhdGlvbnMuIEQtMDA4IHJlbWFpbnMgT1BFTiBhbmQgdW5mcm96ZW4uIEluIGFkZGl0aW9uIHRvIHRoZSBwcmlvciBzZW1hbnRpYyBmYW1pbGllcywgZXhhY3QgcmV2aWV3IHRyYWNlcyBjb3ZlciBwcm92aWRlciBvcGVyYXRpb24gY29sbGlzaW9uOyBmb3JnZWQgaW5pdGlhbCByZXRhaW5lZC90b21iIHN0YXRlOyBjcm9zcy1kaW1lbnNpb24gU0hBUkUgYW5kIExFQVNFIGlkZW50aXR5IGNvbGxpc2lvbnM7IGFjY2VwdGVkIFVOS05PV07ihpJPQlNFUlZFROKGklNFVFRMRUQgYW5kIGRlbmllZCBVTktOT1dO4oaSU0VUVExFRDsgUkFURSBjbG9jayByZWdyZXNzaW9uOyBuZXN0ZWQgY29tcG91bmQ7IHVzZWQtY2hpbGQgU0hBUkUgcmV2b2tlL3JlYWxsb2NhdGU7IGxlYXNlIGVwb2NoIDA7IGFuZCB1bnN1cHBvcnRlZCBFZmZlY3QgYXMgYSBjb21wb3VuZCBjaGlsZC4gUmF3IHNlbWFudGljIGlucHV0cyBjb250YWluIG5vIGV4cGVjdGVkIHZlcmRpY3QvcGFzcyBmbGFnLiBXSE9MRSBtYXkgcmVjb25zdHJ1Y3QgdGhlIG9yYWNsZTsgdGhlIG90aGVyIHR3ZWx2ZSByZWxhdGlvbnMgcmVjb21wdXRlIHRoZWlyIG5hbWVkIHJhdy1pbnB1dC9zdGF0dXMvZGVsdGEgY29uc3RyYWludHMgZGlyZWN0bHksIGFuZCBob3N0aWxlIHRlc3RzIG1vbmtleXBhdGNoIHRoZSBvcmFjbGUgYW5kIHNoYXJlZCBzdGF0ZSB2YWxpZGF0b3Igd2hpbGUgdGhlIHJlbGV2YW50IG5hbWVkIGxhd3Mgc3RpbGwgZmFpbC4KClRoZSBsYXdzIGFyZSBgV0hPTEVfT0JTRVJWQVRJT05fQ0xPU1VSRWAsIGBUWVBFRF9JREVOVElUWV9TQ09QRWAsIGBEMDAzX0FVVEhPUklUWV9GSVJTVGAsIGBQRVJfS0lORF9DT05TRVJWQVRJT05gLCBgUEFSRU5UX1NJQkxJTkdfQ09OU0VSVkFUSU9OYCwgYFJFU0VSVkFUSU9OX0FDUVVJU0lUSU9OYCwgYENBTkNFTExBVElPTl9SRUZVTkRgLCBgUFJPVklERVJfUkVDT05DSUxJQVRJT05gLCBgQ09NUE9VTkRfQVRPTUlDSVRZYCwgYFJFQ09WRVJZX1JFUExBWWAsIGBBVFRSSUJVVElPTl9NT0RFTF9JTkRFUEVOREVOQ0VgLCBgRUZGRUNUX1BST01PVElPTl9TRVBBUkFUSU9OYCwgYW5kIGBDQU5PTklDQUxfREVURVJNSU5JU01gLiBOYW1lZCByZWxhdGlvbnMgcmVjb25zdHJ1Y3QgdGhlaXIgb3duIGFjdG9yL2hhbmRvZmYsIGNsb3NlZCBvcGVyYXRpb24gZW51bSwgcGVyLWtpbmQgYW1vdW50IGRlbHRhLCByZXNlcnZhdGlvbiwgY2FuY2VsbGF0aW9uL25vbnJlZnVuZCwgcHJvdmlkZXIsIGNvbXBvdW5kIGNoaWxkIG91dGNvbWUsIGF1ZGl0LCBhdHRyaWJ1dGlvbiwgcGFyZW50LCBhbmQgV29ybGQgY29uc3RyYWludHMgZXZlbiBpZiBXSE9MRSBpcyBtb25rZXlwYXRjaGVkLiBPIGJpbmRzIHRoZSByYXcgbWFuaWZlc3QgaGFzaCwgZXZlcnkgcmF3IGlucHV0IGhhc2gsIGNvbXBsZXRlIG9ic2VydmF0aW9ucywgYW5kIGluZGVwZW5kZW50bHkgcmVjb21wdXRlZCBsYXcgYXNzZXJ0aW9ucy4gQWNjZXB0ZWQgcm93cyBhcmUgZXhwbGljaXRseSBgQUNDRVBURURfTEFXU19QQVNTYCBhbmQgcmVxdWlyZSBhbGwgMTMgdHJ1ZTsgc3ltbWV0cmljIG1hbGZvcm1lZCByb3dzIGFyZSBgU1RSVUNUVVJBTF9SRUpFQ1RfUEFTU2Agd2l0aCBgbGF3czogbnVsbGAsIG5ldmVyIHBhc3M9dHJ1ZSBiZXNpZGUgZmFsc2UgbGF3cy4gVGhlIHZhbGlkYXRvciByZWplY3RzIGNvb3JkaW5hdGVkIE8gZm9yZ2VyaWVzIGJ5IHJlZ2VuZXJhdGluZyB0aGUgc2VtYW50aWMgYm9keSBhbmQgY291bnRzIGV4YWN0bHkgOSBzdHJ1Y3R1cmFsIHJlamVjdHMuCgpDYW5vbmljYWwgSlNPTiBpcyBzdHJpY3QgVVRGLTggTkZDLCBzb3J0ZWQgY29tcGFjdCBKU09OIHdpdGggdGVybWluYWwgTEY7IGR1cGxpY2F0ZSBrZXlzLCBmbG9hdHMsIHN1cnJvZ2F0ZXMsIG5vbi11NjQgaW50ZWdlcnMsIGFuZCBub25jYW5vbmljYWwgYnl0ZXMgcmVqZWN0LgoKIyMgU3RhZ2UgQyBwcm92ZW5hbmNlIHByZXJlZ2lzdHJhdGlvbiBib3VuZGFyeQoKU2VtYW50aWMgU3RhZ2UgQiBpcyByZWNvcmRlZCBhcyBgUEFTU2AgdW5kZXIgdHdvIGV4cGxpY2l0bHkgbmFtZWQsIHZhbGlkYXRvci1yZWdlbmVyYXRlZCBsb2Nrcy4gYHN0YWdlX2Jfc2VtYW50aWNfcHJvamVjdGlvbmAgc2NoZW1hIGBEMDA4LVNUQUdFLUItU0VNQU5USUMtUFJPSkVDVElPTi0xYCBpcyB0aGUgZXhhY3QgaGlzdG9yaWNhbCBTdGFnZSBDIHNoYXBlOiBjYW5vbmljYWwgSlNPTiBsaXN0IGluIG1hbmlmZXN0IGNhc2Ugb3JkZXI7IGVhY2ggYWNjZXB0ZWQgcm93IGlzIGB7Y2FzZV9pZCxpbnB1dF9zaGEyNTYsY2xhc3NpZmljYXRpb24sbGF3cyxvYnNlcnZhdGlvbn1gIGFuZCBlYWNoIHN5bW1ldHJpYyBzdHJ1Y3R1cmFsIHJvdyBpcyBge2Nhc2VfaWQsaW5wdXRfc2hhMjU2LGNsYXNzaWZpY2F0aW9ufWAuIFJhdyBpbnB1dHMgYXJlIGJvdW5kIGJ5IHRoZWlyIGNhbm9uaWNhbCBgaW5wdXRfc2hhMjU2YCwgbm90IGVtYmVkZGVkIGluIHRoaXMgaGlzdG9yaWNhbCBzaGFwZS4gSXQgaXMgZXhhY3RseSA0NjYsNDA0IGJ5dGVzLCB3aXRoIDY5IHJvd3MgKDYwIGFjY2VwdGVkL2FsbCAxMyBsYXdzIHRydWU7IDkgc3ltbWV0cmljIHN0cnVjdHVyYWwgcmVqZWN0cyksIFNIQS0yNTYgYDVlZDkxYTg5NjQ1M2E1ZGVjMTM5ZTFhNmNmOGUyMmYxYWU5MTEzNzAyMmRmOWRiNTljZjlkYTEyMzc5ZDA1NWJgLiBgb19zZW1hbnRpY19ib2R5YCBzY2hlbWEgYEQwMDgtTy1TRU1BTlRJQy1CT0RZLUxPQ0stMWAgaXMgdGhlIGNvbXBsZXRlIGN1cnJlbnQgY2Fub25pY2FsIHNlbWFudGljLWJvZHkgY29udGVudCB3aXRoIG9ubHkgaXRzIHJlY3Vyc2l2ZWx5IG1hbmlmZXN0LWRlcGVuZGVudCBgbWFuaWZlc3Rfc2hhMjU2YCBmaWVsZCByZXBsYWNlZCBieSB0aGUgbGl0ZXJhbCBgQE1BTklGRVNUX1NIQTI1NkBgOyBpdCBpcyA0NzAsMzIwIGJ5dGVzLCBTSEEtMjU2IGAxODIyZDE2YjgwMjBmOGUyYWZlMThmNjJlYjhkYzlmM2FmM2M4MTIyNzNhMGQwMmRkODA2N2M5YzA5NDAxOWU2YC4gQWN0dWFsIE8gc3RpbGwgYmluZHMgdGhlIHJlYWwgbWFuaWZlc3QgU0hBLTI1Ni4gQmVmb3JlIHRoaXMgY29ycmVjdGlvbiwgdGhlIGV4YWN0IHVubm9ybWFsaXplZCBib2R5IHdhcyA0NzAsMzY3IGJ5dGVzIC8gYGI0MmNiYzUzNGNiZmFkY2E1MmExNmUwY2M2OThlOGZiOWY2ODc4NTlmZjI4OTMyYmNhNGVmZmQ0NTMyYzU4NTBgOyBpdCBjYW5ub3Qgc2VydmUgYXMgYSBtYW5pZmVzdC1yZXNpZGVudCBub25jaXJjdWxhciBsb2NrIGFmdGVyIG1hbmlmZXN0IG1ldGFkYXRhIGNoYW5nZXMuIEFueSByZWdlbmVyYXRlZCBsb2NrIG1pc21hdGNoIGludmFsaWRhdGVzIFBBU1MgYW5kIHJlcXVpcmVzIFN0YWdlIEIgcmVydW4uIFRoZSBzdGFibGUgYmFzZW5hbWUgYGQwMDgtYnVkZ2V0LW1hbmlmZXN0LXYxLmpzb25gIGlzIGFuIGFydGlmYWN0IG5hbWUsIG5vdCB0aGUgc2NoZW1hIHZlcnNpb247IHRoZSBwYWNrZXQsIG1hbmlmZXN0LCB2YWxpZGF0b3IsIGFuZCB0ZXN0cyB1c2UgdjMgY29udHJhY3Qgc2NoZW1hcy4KClN0YWdlIEMgcHJlcmVnaXN0ZXJzIG9ubHkgYSBmdXR1cmUgY29udHJhY3QuIFRoZSBtYW5kYXRvcnkgc2VxdWVuY2UgaXM6IGNvbW1pdCBleGFjdGx5IHRoZXNlIGZvdXIgZmlsZXMgYXQgYSBjbGVhbiBjaGVja3BvaW50OyBvbmx5IHRoZW4gY2FwdHVyZSBgRDAwOC1QUkVSRUctUk9PVC0zYDsgdmFsaWRhdGUgaXRzIGV4YWN0IHBhY2tldC9tYW5pZmVzdC92YWxpZGF0b3IvdGVzdHMgYnl0ZXMgZnJvbSBhIGdlbnVpbmUgcmVjdXJzaXZlIHN1cHBsaWVkIEdpdC1vYmplY3QgYnVuZGxlOyB0aGVuIGNvbnN0cnVjdCBlcXVhbGx5IGdlbnVpbmUgcHJvZHVjZXIgYW5kIHJldmlld2VyIHNvdXJjZS1jaGVja3BvaW50IGJ1bmRsZXM7IGluZGVwZW5kZW50bHkgZXhlY3V0ZSBib3RoIGFkbWl0dGVkIHByb2R1Y2VyczsgcmV2aWV3IElSIGFuZCBkaXN0aW5jdCBQRjsgZnJlZXplIGV4YWN0IHN1YmplY3RzOyBhbmQgb25seSB0aGVuIHZhbGlkYXRlIE8xL08yLCBWLCBhbmQgRS4gVGhlIHByZXJlZyByb290IHRyZWUgY29udGFpbnMgZXhhY3RseSBvbmUgbW9kZS1gNDAwMDBgIGBkZWNpc2lvbnNgIHN1YnRyZWUsIHdob3NlIHRyZWUgY29udGFpbnMgZXhhY3RseSB0aGUgZm91ciBtb2RlLWAxMDA2NDRgIGJhc2VuYW1lczsgY2hlY2twb2ludCB0cmVlcyByZWN1cnNpdmVseSBlbmNvZGUgZXZlcnkgZGlyZWN0b3J5IGNvbXBvbmVudC4gVHJlZXMgdXNlIGNhbm9uaWNhbCBHaXQgYmluYXJ5IGVuY29kaW5nLCBHaXQgbmFtZSBvcmRlcmluZywgbm8gc2xhc2gvTlVML2R1cGxpY2F0ZSBlbnRyeSwgYW5kIG9ubHkgYDQwMDAwYCB0cmVlIG9yIGAxMDA2NDRgIGJsb2IgbW9kZXMuIEV2ZXJ5IG9iamVjdOKAmXMgZGVjbGFyZWQgdHlwZSBhbmQgU0hBLTEgb2JqZWN0IElEIGlzIHJlY29tcHV0ZWQ7IHRyYXZlcnNhbCBlbmZvcmNlcyB0eXBlcywgZXhhY3QgcGF0aHMvYnl0ZXMsIG5vIGV4dHJhIGVudHJpZXMsIGFuZCBleGFjdCByZWFjaGFiaWxpdHkgd2l0aCBubyBtaXNzaW5nIG9yIGV4dHJhbmVvdXMgb2JqZWN0LiBUaGUgc2VsZWN0ZWQgY29tbWl0IHBvbGljeSBpcyBubyBwYXJlbnQsIGV4YWN0bHkgb25lIGJvdW5kZWQgYGF1dGhvcmAgYW5kIG9uZSBgY29tbWl0dGVyYCAoYFRFU1RfT05MWSA8dGVzdEBleGFtcGxlLmludmFsaWQ+IDAgKzAwMDBgKSwgb25lIGV4YWN0IHRyZWUsIGJsYW5rIHNlcGFyYXRvciwgYW5kIGV4YWN0IG1lc3NhZ2U7IHVua25vd24sIGR1cGxpY2F0ZSwgbWFsZm9ybWVkLCBvciBwYXJlbnQgaGVhZGVycyByZWplY3QuIFRlc3RzIGNyb3NzLWNoZWNrIGV2ZXJ5IHN1cHBsaWVkIG9iamVjdCB3aXRoIGBnaXQgaGFzaC1vYmplY3QgLXQgVFlQRSAtLXN0ZGluYCB3aGVuIEdpdCBpcyBhdmFpbGFibGUuIFZhbGlkYXRpb24gbmV2ZXIgY29uc3VsdHMgbXV0YWJsZSBHaXQgb3IgdHJ1c3RzIGNhbGxlciBkaWdlc3QgYXNzZXJ0aW9ucy4gU3ludGhldGljIHJvb3RzIGFyZSBgVEVTVF9PTkxZX05PTl9FVklERU5DRWAgYW5kIG5vbi1hdXRob3JpdGF0aXZlLgoKYEQwMDgtSURFTlRJVFktM2AgYmluZHMgdGhlIHZhbGlkYXRlZCBwcmVyZWcgcm9vdCwgZXhhY3RseSBvbmUgc291cmNlLCB6ZXJvIGRlcGVuZGVuY2llcywgcGFja2V0L21hbmlmZXN0IGxvY2tzLCBhbmQgaXRzIHNvdXJjZSBjb21taXQvdHJlZSBidW5kbGUuIFJYLCBSQywgUlYsIGFuZCBSUCByZXZpZXdlciBpZGVudGl0aWVzIGJpbmQgZXhhY3Qgcm9sZSBjYXBhYmlsaXRpZXMgYW5kIHNlcGFyYXRlIHNvdXJjZSBidW5kbGVzOyBhdXRoZW50aWNhdGlvbiBtZWFucyBzdWNjZXNzZnVsIGJ1bmRsZSB2YWxpZGF0aW9uLCBub3QgYSBwdWJsaWMtaGFzaCBzaWduYXR1cmUuIFJldmlld3MgYXJlIHNldmVyaXR5LXN0cnVjdHVyZWQsIHJlcXVpcmUgZXhhY3Qgc3ViamVjdHMvZ2F0ZXMvY2hlY2tzLCBhbmQgcGVybWl0IG5vIHVucmVzb2x2ZWQgQ3JpdGljYWwgb3IgSGlnaCBmaW5kaW5nLiBUaGUgZ2VuZXJpYyBtYW5pZmVzdCBldmlkZW5jZSBEQUcgaW5jbHVkZXMgdGhlIHByZXJlZyByb290LCBwcm9kdWNlciBhbmQgcmV2aWV3ZXIgaWRlbnRpdGllcywgcmV2aWV3cywgSVIsIFBGLCBmcmVlemUsIE8xL08yLCBWLCBhbmQgRSB3aXRoIGV4YWN0IGRpcmVjdC1yZWZlcmVuY2UgZWRnZXMuCgpGdXR1cmUgZXhlY3V0aW9uIGlzIGZhaWwgY2xvc2VkOiB0aGUgb3V0ZXIgdmFsaWRhdG9yIGNoZWNrcyBhY3R1YWwgc291cmNlIGJ5dGVzIGJlZm9yZSBpc29sYXRlZCBleGVjdXRpb247IHJhdyByZXR1cm5lZCBPIGJ5dGVzIG11c3QgZXF1YWwgc3VwcGxpZWQgTzsgYm90aCBPIHZhbHVlcyBtdXN0IGluZGVwZW5kZW50bHkgdmFsaWRhdGUgYW5kIGJlIHNlbWFudGljYWxseSBlcXVhbDsgc291cmNlLWJ5dGUsIG5vcm1hbGl6ZWQtQVNULCBhbmQgdHdvIG1hbnVhbC1jb3B5IGNoZWNrcyBtdXN0IHBhc3M7IElSIGlzIGV4YWN0LWRlcml2ZWQsIFBGIGlzIGRpc3RpbmN0LCBhbmQgZnJlZXplIGJpbmRzIGV4YWN0IHN1YmplY3RzLiBgZnV0dXJlX3ZlcmRpY3RgIGFjY2VwdHMgZXhhY3RseSAxNSBhcmd1bWVudHMgYW5kIHJldHVybnMgYE9QRU5gIG9uIGV2ZXJ5IG1hbGZvcm1lZCwgaW5jb21wbGV0ZSwgdW5hdXRoZW50aWNhdGVkLCBtaXNtYXRjaGVkLCBvciB1bnJlc29sdmVkIGNoYWluLiBUaGUgdGVzdHMgY29uc3RydWN0IG9uZSB3aG9sbHkgaW4tbWVtb3J5IGBURVNUX09OTFlfTk9OX0VWSURFTkNFYCBzdWNjZXNzZnVsIHdpdG5lc3M6IGFuIEVYRUNVVE9SIHNvdXJjZSB1c2VzIGEgcHJpbWFyeS1zdHlsZSB0cmFuc2l0aW9uIG1hY2hpbmUsIGEgc3RydWN0dXJhbGx5IGRpc3RpbmN0IENIRUNLRVIgc291cmNlIHVzZXMgdGhlIG9yYWNsZS9yZWxhdGlvbi1vcmllbnRlZCBtYWNoaW5lLCBib3RoIGRlcml2ZSBhbGwgNjkgcm93cyBmcm9tIG9ubHkgcGFja2V0L21hbmlmZXN0L2lkZW50aXR5IGJ5dGVzIGluIGlzb2xhdGVkIGludGVycHJldGVycywgYW5kIGV4YWN0IG1hbnVhbC1jb3B5IGZhY3RzIGJpbmQgc2VwYXJhdGUgUlgvUkMgY2hlY2tzIHRoYXQgbm8gc2VtYW50aWMgYW5zd2VyIHRhYmxlIGlzIGVtYmVkZGVkLiBUaGF0IGZpeHR1cmUgbXVzdCByZWFjaCBgQURPUFRfQUxHRUJSQWAgdG8gdGVzdCB0aGUgZnV0dXJlIGNvbnRyYWN0LCB3aGlsZSBldmVyeSBtdXRhdGVkIGNoYWluIHJlbWFpbnMgYE9QRU5gLiBJdCBpcyBub3QgYW4gYWN0dWFsIHByZXJlZyByb290IG9yIGV2aWRlbmNlIGFydGlmYWN0LiBUaGUgcHJlc2VudCBmb3VyIGZpbGVzIGNvbnRhaW4gbm8gcGVyc2lzdGVkIGFjdHVhbCBwcmVyZWcgcm9vdCwgcHJvZHVjZXIvcmV2aWV3ZXIgaWRlbnRpdHksIHJldmlldywgSVIsIFBGLCBmcmVlemUsIE8xL08yLCBWLCBFLCBvciBtYW51YWwtY29weS1mYWN0cyBhcnRpZmFjdC4gRC0wMDggdGhlcmVmb3JlIHJlbWFpbnMgYE9QRU5gLCB1bmZyb3plbiwgYW5kIGBwcm92ZW5hbmNlX3F1YWxpZmllZCA9IGZhbHNlYC4KCiMjIEJ1ZGdldCwgZ2F0ZXMsIHN0b3AvaW52YWxpZGF0aW9uCgpSaXNrIHRpZXIgYEZVTExgOyA5NiBlbmdpbmVlci1ob3VycyBtYXhpbXVtOyBzaXggcHJvamVjdGlvbnM7IDE3IGZhbWlsaWVzOyA2OSByYXcgc3ViY2FzZXM7IDEzIGxhd3M7IHN0b3AgZGF0ZSAqKjIwMjYtMDgtMzAqKi4gU3RvcCB3aXRoIGBPUEVOYCBvbiBidWRnZXQvZGF0ZSBleGhhdXN0aW9uLCBhbnkgdW5yZXNvbHZlZCBDcml0aWNhbC9IaWdoLCBpbmNvbXBsZXRlIEI4IGNlbGwsIG1pc3NpbmcgaG9zdGlsZSBmYW1pbHksIG9yYWNsZSBjb3VwbGluZywgbm9uY2Fub25pY2FsIGFydGlmYWN0LCByYXcgc2NoZW1hIGVzY2FwZSwgb3JhY2xlL2xhdyBjb3VwbGluZywgaG9zdGlsZSByZXByb2R1Y2VyIGFjY2VwdGFuY2UsIG91dHB1dCBkaXNhZ3JlZW1lbnQsIG9yIGFueSBmYWxzZSBsYXcuIE5vIG5hcnJhdGl2ZSB0aWUtYnJlYWsuCgpBbnkgaW50ZXJwcmV0YXRpb24tY2hhbmdpbmcgY29ycmVjdGlvbiwgY29ycHVzL2xhdy9tYXRyaXggY2hhbmdlLCBuZXcgY29udHJhZGljdGlvbiwgdW5yZXNvbHZlZCBDcml0aWNhbC9IaWdoLCBvciBjb21wbGV0ZWQtaGFybmVzcyBpZGVudGl0eSBjaGFuZ2UgaW52YWxpZGF0ZXMgc2VtYW50aWMgU3RhZ2UgQiBhbmQgcmVxdWlyZXMgYSByZXJ1bi4gVGhlcmUgaXMgbm8gY3VycmVudCBmcmVlemUgb3IgZXZpZGVuY2UuIE5vIGFydGlmYWN0IGJleW9uZCB0aGlzIHBhY2tldCwgbWFuaWZlc3QsIHZhbGlkYXRvciwgYW5kIHRlc3RzIGlzIGNyZWF0ZWQgYXQgdGhpcyBzdGFnZS4KCiMjIE5vbmNsYWltcyBhbmQgbW90aXZhdGlvbgoKTm8gcHJvdmlkZXIgcHJpY2VzLCBjbG91ZCBiaWxsaW5nIG1vZGVsLCB0b2tlbiBlcXVpdmFsZW5jZSwgZmFpcm5lc3MvbGl2ZW5lc3MsIGRpc3RyaWJ1dGVkIGZpbmFsaXR5LCBjcm9zcy1wcm92aWRlciBzZXR0bGVtZW50LCBhdXRvbWF0aWMgY29tcGVuc2F0aW9uLCBsaWZlY3ljbGUgY29tcGxldGlvbiwgQ2FwYWJpbGl0eSwgRWZmZWN0LCBQcm9tb3Rpb24sIGFjY2VwdGFuY2UsIG9yIG1lY2hhbmlzbSBpcyBzZWxlY3RlZC4gRXh0ZXJuYWwgcHJpb3IgYXJ0LCBpZiBsYXRlciBjaXRlZCwgbWF5IG1vdGl2YXRlIGhvc3RpbGUgdGVzdHMgb25seSBhbmQgY2Fubm90IGltcG9zZSBhcmNoaXRlY3R1cmUuCgpgYGBzaApQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0xIHB5dGhvbjMgLW0gdW5pdHRlc3QgZGVjaXNpb25zLnRlc3RfZDAwOF9tYW5pZmVzdCAtdgpQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0xIHB5dGhvbjMgZGVjaXNpb25zL2QwMDhfbWFuaWZlc3QucHkgZGVjaXNpb25zL2QwMDgtYnVkZ2V0LW1hbmlmZXN0LXYxLmpzb24KcHl0aG9uMyAtbSBweV9jb21waWxlIGRlY2lzaW9ucy9kMDA4X21hbmlmZXN0LnB5IGRlY2lzaW9ucy90ZXN0X2QwMDhfbWFuaWZlc3QucHkKYGBgCg==","kind":"blob"},"8d75d1da4f9da32a7fb295f42ab06c59e93d42f4":{"data_b64":"NDAwMDAgZGVjaXNpb25zALi+snS8+krrZOe93NccmhSxjtqF","kind":"tree"},"a4081ecc6481b2c0025b0d5bc571fa798e4df150":{"data_b64":"aW1wb3J0IGFzdCxiYXNlNjQsY29weSxoYXNobGliLGltcG9ydGxpYi51dGlsLGluc3BlY3QsanNvbixwYXRobGliLHN1YnByb2Nlc3Msc3lzLHVuaXR0ZXN0CkhFUkU9cGF0aGxpYi5QYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50ClM9aW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oImQwMDh2MyIsSEVSRS8iZDAwOF9tYW5pZmVzdC5weSIpO1Y9aW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhTKTtTLmxvYWRlci5leGVjX21vZHVsZShWKQpNUkFXPShIRVJFLyJkMDA4LWJ1ZGdldC1tYW5pZmVzdC12MS5qc29uIikucmVhZF9ieXRlcygpCl9TT1VSQ0VfQ09OU1RBTlRTPSgiVTY0IiwiS0lORFMiLCJMQVdTIiwiU1RBVFVTRVMiLCJGT1JCSURERU5fSU5QVVRfS0VZUyIsIkJBU0VfRVZFTlQiLCJPUF9GSUVMRFMiLCJVTlNVUFBPUlRFRF9PUFMiLCJVTklUX0NPTVBBVCIsIlBBUkVOVF9DT01QQVQiLCJBVVRIX0NPTlRFWFQiKQpfU09VUkNFX0NPTU1PTj0oIl9wYWlycyIsIndhbGsiLCJjYW5vbmljYWwiLCJleGFjdCIsInRleHQiLCJ1aW50Iiwic2hhIiwidnNoYSIsImNsb25lIiwiYXJ0IiwiZGlnZXN0IiwiaW5kZXgiLCJ2YWxpZGF0ZV9kaW1lbnNpb24iLCJ2YWxpZGF0ZV9wcm92aWRlcl9mYWN0cyIsImRpbWVuc2lvbl9jYXBhY2l0eSIsInBhcmVudF9yZWxhdGlvbiIsInZhbGlkYXRlX3N0YXRlIiwidmFsaWRhdGVfYXV0aG9yaXR5IiwidmFsaWRhdGVfZXZlbnQiLCJldmVudF9iaW5kaW5nIiwiY2xhaW1lZF9pZHMiLCJ2YWxpZGF0ZV90cmFjZV9uYW1lc3BhY2VzIiwiY29uc2VydmF0aW9uIiwiYXBwbHlfcGFpcnMiLCJhdXRob3JpdHlfcmVsYXRpb24iLCJsYXdfdHlwZWQiLCJsYXdfYXV0aG9yaXR5IiwibGF3X2tpbmQiLCJsYXdfaGllcmFyY2h5IiwibGF3X3Jlc2VydmF0aW9uIiwibGF3X2NhbmNlbCIsImxhd19wcm92aWRlciIsImxhd19jb21wb3VuZCIsImxhd19yZWNvdmVyeSIsImxhd19hdHRyaWJ1dGlvbiIsImxhd19zZXBhcmF0aW9uIiwibGF3X2Nhbm9uaWNhbCIpCl9TT1VSQ0VfUFJJTUFSWT0oImF1dGhvcml0eV9jdXJyZW50IiwiZXZlbnRfam9pbiIsInJldGFpbiIsImxlYXNlX2V4cGlyZSIsInByb3ZpZGVyX2FwcGx5IiwiYXBwbHlfbGVhZiIsImNsYXNzaWZ5X2V2ZW50IiwiZGVyaXZlIikKX1NPVVJDRV9PUkFDTEU9KCJvcmFjbGVfc3RlcCIsIm9yYWNsZV9vYnNlcnZhdGlvbiIpCmNsYXNzIF9MaXRlcmFsUmFpc2VzKGFzdC5Ob2RlVHJhbnNmb3JtZXIpOgogZGVmIHZpc2l0X0Z1bmN0aW9uRGVmKHNlbGYsbm9kZSk6CiAgc2VsZi5nZW5lcmljX3Zpc2l0KG5vZGUpO25vZGUuZGVjb3JhdG9yX2xpc3Q9W107cmV0dXJuIG5vZGUKIGRlZiB2aXNpdF9SYWlzZShzZWxmLG5vZGUpOgogIHNlbGYuZ2VuZXJpY192aXNpdChub2RlKQogIGlmIGlzaW5zdGFuY2Uobm9kZS5leGMsYXN0LkNhbGwpIGFuZCBpc2luc3RhbmNlKG5vZGUuZXhjLmZ1bmMsYXN0Lk5hbWUpIGFuZCBub2RlLmV4Yy5mdW5jLmlkPT0iVmFsdWVFcnJvciI6bm9kZS5leGMuYXJncz1bYXN0LkNvbnN0YW50KCJyZWplY3QiKV0KICByZXR1cm4gbm9kZQogZGVmIHZpc2l0X0xhbWJkYShzZWxmLG5vZGUpOnJldHVybiBhc3QuY29weV9sb2NhdGlvbihhc3QuTmFtZSgibGF3X2NhcGFjaXR5Iixhc3QuTG9hZCgpKSxub2RlKQogZGVmIHZpc2l0X0NhbGwoc2VsZixub2RlKToKICBzZWxmLmdlbmVyaWNfdmlzaXQobm9kZSkKICBpZiBpc2luc3RhbmNlKG5vZGUuZnVuYyxhc3QuTmFtZSkgYW5kIG5vZGUuZnVuYy5pZD09ImNhcCI6bm9kZS5mdW5jLmlkPSJsYXdfY2FwYWNpdHkiCiAgcmV0dXJuIG5vZGUKZGVmIHByb2R1Y2VyX3NvdXJjZShyb2xlKToKIG5hbWVzPV9TT1VSQ0VfQ09NTU9OKyhfU09VUkNFX1BSSU1BUlkgaWYgcm9sZT09IkVYRUNVVE9SIiBlbHNlIF9TT1VSQ0VfT1JBQ0xFKQogY2h1bmtzPVsiaW1wb3J0IGpzb25cbmltcG9ydCBoYXNobGliXG5pbXBvcnQgdW5pY29kZWRhdGFcbiJdK1tuKyI9IityZXByKGdldGF0dHIoVixuKSkrIlxuIiBmb3IgbiBpbiBfU09VUkNFX0NPTlNUQU5UU10KIGNodW5rcy5hcHBlbmQoImRlZiBwYXJzZV9ieXRlcyhyYXcpOlxuIHRleHQ9cmF3LmRlY29kZSgndXRmLTgnKVxuIGlmIHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJyx0ZXh0KSE9dGV4dDpcbiAgcmFpc2UgVmFsdWVFcnJvcignTkZDJylcbiB2YWx1ZT1qc29uLmxvYWRzKHRleHQpXG4gaWYgY2Fub25pY2FsKHZhbHVlKSE9cmF3OlxuICByYWlzZSBWYWx1ZUVycm9yKCdjYW5vbmljYWwnKVxuIHJldHVybiB2YWx1ZVxuZGVmIGxhd19jYXBhY2l0eSh6KTpcbiByZXR1cm4gelsnc3RhdGUnXVsnaXNzdWVkJ10gaWYgelsna2luZCddPT0nQ09OU1VNQUJMRScgZWxzZSB6WydzdGF0ZSddWydjYXAnXSBpZiB6WydraW5kJ10gaW4gKCdQRUFLJywnUkFURScpIGVsc2Ugelsnc3RhdGUnXVsnY2FwYWNpdHknXVxuIikKIGZvciBuIGluIG5hbWVzOgogIHM9aW5zcGVjdC5nZXRzb3VyY2UoZ2V0YXR0cihWLG4pKS5yZXBsYWNlKCJNYW5pZmVzdEVycm9yIiwiVmFsdWVFcnJvciIpLnJlcGxhY2UoImV4Y2VwdCBFeGNlcHRpb246IiwiZXhjZXB0IFZhbHVlRXJyb3I6IikucmVwbGFjZSgiY29weS5kZWVwY29weSh4KSIsImpzb24ubG9hZHMoanNvbi5kdW1wcyh4KSkiKQogIHM9cy5yZXBsYWNlKCJsYW1iZGEgejp6WydzdGF0ZSddWydpc3N1ZWQnXSBpZiB6WydraW5kJ109PSdDT05TVU1BQkxFJyBlbHNlIHpbJ3N0YXRlJ11bJ2NhcCddIGlmIHpbJ2tpbmQnXSBpbiAoJ1BFQUsnLCdSQVRFJykgZWxzZSB6WydzdGF0ZSddWydjYXBhY2l0eSddIiwibGF3X2NhcGFjaXR5IikKICBjaHVua3MuYXBwZW5kKHMrIlxuIikKIG1hY2hpbmU9ImRlcml2ZSIgaWYgcm9sZT09IkVYRUNVVE9SIiBlbHNlICJvcmFjbGVfb2JzZXJ2YXRpb24iCiBjaHVua3MuYXBwZW5kKCJkZWYgbGF3X3dob2xlKGlucHV0cyxvYnMpOlxuIHRyeTpcbiAgcmV0dXJuIG9icz09IittYWNoaW5lKyIoY2xvbmUoaW5wdXRzKSlcbiBleGNlcHQgVmFsdWVFcnJvcjpcbiAgcmV0dXJuIEZhbHNlXG4iKQogY2h1bmtzLmFwcGVuZCgiZGVmIGxhd19yZXN1bHRzKGlucHV0cyxvYnMpOlxuIHJldHVybiB7J1dIT0xFX09CU0VSVkFUSU9OX0NMT1NVUkUnOmxhd193aG9sZShpbnB1dHMsb2JzKSwnVFlQRURfSURFTlRJVFlfU0NPUEUnOmxhd190eXBlZChpbnB1dHMsb2JzKSwnRDAwM19BVVRIT1JJVFlfRklSU1QnOmxhd19hdXRob3JpdHkoaW5wdXRzLG9icyksJ1BFUl9LSU5EX0NPTlNFUlZBVElPTic6bGF3X2tpbmQoaW5wdXRzLG9icyksJ1BBUkVOVF9TSUJMSU5HX0NPTlNFUlZBVElPTic6bGF3X2hpZXJhcmNoeShpbnB1dHMsb2JzKSwnUkVTRVJWQVRJT05fQUNRVUlTSVRJT04nOmxhd19yZXNlcnZhdGlvbihpbnB1dHMsb2JzKSwnQ0FOQ0VMTEFUSU9OX1JFRlVORCc6bGF3X2NhbmNlbChpbnB1dHMsb2JzKSwnUFJPVklERVJfUkVDT05DSUxJQVRJT04nOmxhd19wcm92aWRlcihpbnB1dHMsb2JzKSwnQ09NUE9VTkRfQVRPTUlDSVRZJzpsYXdfY29tcG91bmQoaW5wdXRzLG9icyksJ1JFQ09WRVJZX1JFUExBWSc6bGF3X3JlY292ZXJ5KGlucHV0cyxvYnMpLCdBVFRSSUJVVElPTl9NT0RFTF9JTkRFUEVOREVOQ0UnOmxhd19hdHRyaWJ1dGlvbihpbnB1dHMsb2JzKSwnRUZGRUNUX1BST01PVElPTl9TRVBBUkFUSU9OJzpsYXdfc2VwYXJhdGlvbihpbnB1dHMsb2JzKSwnQ0FOT05JQ0FMX0RFVEVSTUlOSVNNJzpsYXdfY2Fub25pY2FsKGlucHV0cyxvYnMpfVxuIikKIGNodW5rcy5hcHBlbmQoImRlZiBwcm9kdWNlKHBhY2tldF9ieXRlcyxtYW5pZmVzdF9ieXRlcyxpZGVudGl0eV9ieXRlcyk6XG4gbWFuaWZlc3Q9cGFyc2VfYnl0ZXMobWFuaWZlc3RfYnl0ZXMpXG4gcm93cz1bXVxuIGZvciBjYXNlIGluIG1hbmlmZXN0WydjYXNlcyddOlxuICBpbnB1dHM9Y2FzZVsnaW5wdXRzJ11cbiAgYXNzZXJ0aW9uPXsnY2FzZV9pZCc6Y2FzZVsnaWQnXX1cbiAgdHJ5OlxuICAgb2JzZXJ2YXRpb249IittYWNoaW5lKyIoaW5wdXRzKVxuICAgbGF3cz1sYXdfcmVzdWx0cyhpbnB1dHMsb2JzZXJ2YXRpb24pXG4gICBpZiBub3QgYWxsKGxhd3MudmFsdWVzKCkpOlxuICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2xhdycpXG4gICBhc3NlcnRpb24udXBkYXRlKHsnY2xhc3NpZmljYXRpb24nOidBQ0NFUFRFRF9MQVdTX1BBU1MnLCdsYXdzJzpsYXdzLCdwYXNzJzpUcnVlfSlcbiAgIGNlbGw9eydjYXNlX2lkJzpjYXNlWydpZCddLCdpbnB1dF9zaGEyNTYnOnZzaGEoaW5wdXRzKSwnb2JzZXJ2YXRpb24nOm9ic2VydmF0aW9ufVxuICBleGNlcHQgVmFsdWVFcnJvcjpcbiAgIGFzc2VydGlvbi51cGRhdGUoeydjbGFzc2lmaWNhdGlvbic6J1NUUlVDVFVSQUxfUkVKRUNUX1BBU1MnLCdsYXdzJzpOb25lLCdwYXNzJzpUcnVlfSlcbiAgIGNlbGw9eydjYXNlX2lkJzpjYXNlWydpZCddLCdpbnB1dF9zaGEyNTYnOnZzaGEoaW5wdXRzKSwncmVqZWN0aW9uJzonUFJJTUFSWV9BTkRfT1JBQ0xFX1JFSkVDVCd9XG4gIHJvd3MuYXBwZW5kKChjZWxsLGFzc2VydGlvbikpXG4gYm9keT17J2Fzc2VydGlvbnMnOlt4WzFdIGZvciB4IGluIHJvd3NdLCdjZWxscyc6W3hbMF0gZm9yIHggaW4gcm93c10sJ21hbmlmZXN0X3NoYTI1Nic6c2hhKG1hbmlmZXN0X2J5dGVzKX1cbiBpZGVudGl0eT17J2J5dGVfbGVuZ3RoJzpsZW4oaWRlbnRpdHlfYnl0ZXMpLCdraW5kJzonUFJPRFVDRVJfSURFTlRJVFknLCdzaGEyNTYnOnNoYShpZGVudGl0eV9ieXRlcyl9XG4gcmV0dXJuIGNhbm9uaWNhbCh7J2lkZW50aXR5JzppZGVudGl0eSwncHJvdmVuYW5jZV9xdWFsaWZpZWQnOlRydWUsJ3NjaGVtYSc6J0QwMDgtTy0zJywnc2VtYW50aWNfYm9keSc6Ym9keX0pXG4iKQogdHJlZT1fTGl0ZXJhbFJhaXNlcygpLnZpc2l0KGFzdC5wYXJzZSgiIi5qb2luKGNodW5rcykpKTthc3QuZml4X21pc3NpbmdfbG9jYXRpb25zKHRyZWUpCiByZXR1cm4gKGFzdC51bnBhcnNlKHRyZWUpKyJcbiIpLmVuY29kZSgpCmRlZiByZXBsYWNlX29iamVjdChidW5kbGUsb2xkX29pZCxraW5kLGRhdGEpOgogbmV3PVYuZ2l0X29pZChraW5kLGRhdGEpO2J1bmRsZVsib2JqZWN0cyJdLnBvcChvbGRfb2lkKTtidW5kbGVbIm9iamVjdHMiXVtuZXddPXsiZGF0YV9iNjQiOmJhc2U2NC5iNjRlbmNvZGUoZGF0YSkuZGVjb2RlKCksImtpbmQiOmtpbmR9O3JldHVybiBuZXcKZGVmIG9iamVjdF9kYXRhKGJ1bmRsZSxvaWQpOnJldHVybiBiYXNlNjQuYjY0ZGVjb2RlKGJ1bmRsZVsib2JqZWN0cyJdW29pZF1bImRhdGFfYjY0Il0pCmRlZiBhdWRpdF9ub19hbnN3ZXJfbGl0ZXJhbHMoc291cmNlLG1hbmlmZXN0KToKIGJvZHk9Vi5zZW1hbnRpY19ib2R5KG1hbmlmZXN0LE1SQVcpO2Fuc3dlcnM9W1YuY2Fub25pY2FsKGJvZHkpLFYuY2Fub25pY2FsKGJvZHlbJ2NlbGxzJ10pLFYuY2Fub25pY2FsKGJvZHlbJ2Fzc2VydGlvbnMnXSldCiBhbnN3ZXJzICs9IFtWLmNhbm9uaWNhbCh4WydvYnNlcnZhdGlvbiddKSBmb3IgeCBpbiBib2R5WydjZWxscyddIGlmICdvYnNlcnZhdGlvbicgaW4geF0KIGZvcmJpZGRlbj17KGxlbih4KSxoYXNobGliLnNoYTI1Nih4KS5oZXhkaWdlc3QoKSkgZm9yIHggaW4gYW5zd2Vyc30KIGZvciBuIGluIGFzdC53YWxrKGFzdC5wYXJzZShzb3VyY2UuZGVjb2RlKCkpKToKICBpZiBpc2luc3RhbmNlKG4sYXN0LkNvbnN0YW50KSBhbmQgaXNpbnN0YW5jZShuLnZhbHVlLChzdHIsYnl0ZXMpKToKICAgcmF3PW4udmFsdWUuZW5jb2RlKCkgaWYgaXNpbnN0YW5jZShuLnZhbHVlLHN0cikgZWxzZSBuLnZhbHVlCiAgIGlmIChsZW4ocmF3KSxoYXNobGliLnNoYTI1NihyYXcpLmhleGRpZ2VzdCgpKSBpbiBmb3JiaWRkZW46cmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ2VtYmVkZGVkIHNlbWFudGljIGFuc3dlciBsaXRlcmFsJykKY2xhc3MgVGVzdEQwMDhTdGFnZUEodW5pdHRlc3QuVGVzdENhc2UpOgogZGVmIG0oc2VsZik6cmV0dXJuIFYucGFyc2VfYnl0ZXMoTVJBVykKIGRlZiBpbnAoc2VsZixuKTpyZXR1cm4gY29weS5kZWVwY29weShuZXh0KGNbImlucHV0cyJdIGZvciBjIGluIHNlbGYubSgpWyJjYXNlcyJdIGlmIGNbImlkIl09PW4pKQogZGVmIG9icyhzZWxmLG4pOnJldHVybiBWLmRlcml2ZShzZWxmLmlucChuKSkKIGRlZiB0ZXN0X21hbmlmZXN0X3N0YWdlX2FfY291bnRzX2I4KHNlbGYpOgogIG0sYz1WLnZhbGlkYXRlX21hbmlmZXN0X2J5dGVzKE1SQVcpO3NlbGYuYXNzZXJ0RXF1YWwoTVJBVyxWLmNhbm9uaWNhbChWLm1hbmlmZXN0X3NwZWMoKSkpO3NlbGYuYXNzZXJ0RXF1YWwoYyx7ImI4X2NlbGxfY291bnQiOjIwNCwiZmFtaWx5X2NvdW50IjoxNywibGF3X2NvdW50IjoxMywicHJvamVjdGlvbl9jb3VudCI6NiwicmF3X3N1YmNhc2VfY291bnQiOjY5LCJzdHJ1Y3R1cmFsX3JlamVjdF9jb3VudCI6OX0pCiAgc2VsZi5hc3NlcnRFcXVhbCgobVsic2VtYW50aWNfc3RhZ2UiXSxtWyJwcm92ZW5hbmNlX3F1YWxpZmllZCJdLG1bImRlY2lzaW9uIl0pLCgiQl9QQVNTIixGYWxzZSx7ImZyb3plbiI6RmFsc2UsImlkIjoiRC0wMDgiLCJzdGF0dXMiOiJPUEVOIn0pKTtzZWxmLmFzc2VydEVxdWFsKG1bInByb3ZlbmFuY2Vfc3RhdHVzIl0sIlNUQUdFX0NfUFJFUkVHSVNURVJFRF9OT19BQ1RVQUxfUk9PVF9PUl9FVklERU5DRSIpO1YudmFsaWRhdGVfZXZpZGVuY2VfZGFnKG1bInByb3ZlbmFuY2UiXVsiZGFnIl0pCiAgZm9yIG5hbWUsdmFsdWUgaW4gKCgic3RhZ2VfYl9zZW1hbnRpY19wcm9qZWN0aW9uIixWLnN0YWdlX2Jfc2VtYW50aWNfcHJvamVjdGlvbihtKSksKCJvX3NlbWFudGljX2JvZHkiLFYub19zZW1hbnRpY19ib2R5X3Byb2plY3Rpb24obSxNUkFXKSkpOgogICByYXc9Vi5jYW5vbmljYWwodmFsdWUpO2xvY2s9bVsic2VtYW50aWNfbG9ja3MiXVtuYW1lXTtzZWxmLmFzc2VydEVxdWFsKChsZW4ocmF3KSxoYXNobGliLnNoYTI1NihyYXcpLmhleGRpZ2VzdCgpKSwobG9ja1siYnl0ZV9sZW5ndGgiXSxsb2NrWyJzaGEyNTYiXSksbmFtZSkKICBmb3Iga2V5IGluICgiZXZpZGVuY2UiLCJmcmVlemUiLCJyZXNvbHV0aW9uIiwiYWRvcHRpb24iKTpzZWxmLmFzc2VydE5vdEluKGtleSxtKQogIGNlbGxzPW1bImI4Il1bIm1hdHJpeCJdO3NlbGYuYXNzZXJ0RXF1YWwobGVuKHt4WyJyZWFzb24iXSBmb3IgeCBpbiBjZWxsc30pLDIwNCk7c2VsZi5hc3NlcnRUcnVlKGFsbCh4WyJjbGFzc2lmaWNhdGlvbiJdIGluIHhbInJlYXNvbiJdIGZvciB4IGluIGNlbGxzKSk7c2VsZi5hc3NlcnRGYWxzZShhbnkoImNvbnN0cmFpbnMgaXRzIHR5cGVkIGFjY291bnRpbmcgb2JzZXJ2YXRpb24iIGluIHhbInJlYXNvbiJdIGZvciB4IGluIGNlbGxzKSkKICBmb3IgcSBpbiAoIlEwNiIsIlEwNyIsIlEwOCIsIlExNCIpOnNlbGYuYXNzZXJ0RXF1YWwobGVuKFt4IGZvciB4IGluIGNlbGxzIGlmIHhbInF1YW50aXR5Il09PXFdKSwxMikKIGRlZiB0ZXN0X2NvcnB1c19yYXdfY2xvc3VyZV9ub19leHBlY3RlZF9mbGFncyhzZWxmKToKICBzdHJ1Y3R1cmFsPXsiY29tcG91bmQtZHVwbGljYXRlLWNoaWxkIiwiZnJlc2huZXNzLXJlcGVhdCIsInBlYWstcmVsZWFzZS1lbnVtLWludmFsaWQiLCJkaW1lbnNpb24tcGFyZW50LWN5Y2xlIiwidW5pdC1raW5kLWluY29tcGF0aWJsZSIsInByb3ZpZGVyLW9wZXJhdGlvbi1jb2xsaXNpb24iLCJuZXN0ZWQtY29tcG91bmQiLCJyZXBsYXktYmluZGluZy1taXNtYXRjaCIsImNvbXBvdW5kLXBhcnRpYWwtY2xhaW0tcmV1c2UifQogIGZvciBjIGluIHNlbGYubSgpWyJjYXNlcyJdOgogICBpZiBjWyJpZCJdIGluIHN0cnVjdHVyYWw6CiAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi5kZXJpdmUoY29weS5kZWVwY29weShjWyJpbnB1dHMiXSkpCiAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi5vcmFjbGVfb2JzZXJ2YXRpb24oY29weS5kZWVwY29weShjWyJpbnB1dHMiXSkpCiAgICBjb250aW51ZQogICBhPVYuZGVyaXZlKGNvcHkuZGVlcGNvcHkoY1siaW5wdXRzIl0pKTtiPVYub3JhY2xlX29ic2VydmF0aW9uKGNvcHkuZGVlcGNvcHkoY1siaW5wdXRzIl0pKTtzZWxmLmFzc2VydEVxdWFsKGEsYixjWyJpZCJdKTtzZWxmLmFzc2VydFRydWUoYWxsKFYubGF3X3Jlc3VsdHMoY1siaW5wdXRzIl0sYSkudmFsdWVzKCkpLGNbImlkIl0pCiAga2V5cz1zZXQoKQogIGRlZiB3YWxrKHgpOgogICBpZiBpc2luc3RhbmNlKHgsZGljdCk6a2V5cy51cGRhdGUoeCk7W3dhbGsodikgZm9yIHYgaW4geC52YWx1ZXMoKV0KICAgZWxpZiBpc2luc3RhbmNlKHgsbGlzdCk6W3dhbGsodikgZm9yIHYgaW4geF0KICB3YWxrKFtjWyJpbnB1dHMiXSBmb3IgYyBpbiBzZWxmLm0oKVsiY2FzZXMiXV0pO3NlbGYuYXNzZXJ0VHJ1ZShWLkZPUkJJRERFTl9JTlBVVF9LRVlTLmlzZGlzam9pbnQoa2V5cykpCiBkZWYgdGVzdF9hdHRlbXB0X2ludmVudG9yeV9wcmVjZWRlbmNlX3JlcGxheShzZWxmKToKICBleHBlY3RlZD17ImF1dGhvcml0eS1kZW5pYWwtbm8tZGVsdGEiOiJERU5ZX0FVVEhPUklUWSIsImRlbmllZC1iZWZvcmUtZmF1bHQiOiJERU5ZX0FVVEhPUklUWSIsInBlYWstb3Zlci1jYXAiOiJERU5ZX0FETUlTU0lPTiIsImVmZmVjdC1zZXBhcmF0aW9uIjoiVU5TVVBQT1JURUQiLCJwcm9tb3Rpb24tc2VwYXJhdGlvbiI6IlVOU1VQUE9SVEVEIiwidW5zdXBwb3J0ZWQtY3Jvc3Mta2luZCI6IlVOU1VQUE9SVEVEIiwicmV0cnktYmVmb3JlLWNvbW1pdCI6IlJFUExBWSIsImxvc3QtcmVzcG9uc2UtcmV0cnkiOiJSRVBMQVkiLCJyZXRhaW5lZC10b21iLWV4cGlyeSI6IlJFQ09OQ0lMRV9FWFBJUkVEIiwiY29tcG91bmQtb25lLWRlbmllZCI6IkRFTllfQURNSVNTSU9OIn0KICBmb3IgbixzdGF0dXMgaW4gZXhwZWN0ZWQuaXRlbXMoKTpzZWxmLmFzc2VydEVxdWFsKHNlbGYub2JzKG4pWyJwaGFzZXMiXVstMV1bInN0YXR1cyJdLHN0YXR1cyxuKQogIGZvciBuIGluICgiYXV0aG9yaXR5LWRlbmlhbC1uby1kZWx0YSIsInBlYWstb3Zlci1jYXAiLCJlZmZlY3Qtc2VwYXJhdGlvbiIsInJldHJ5LWJlZm9yZS1jb21taXQiKToKICAgbz1zZWxmLm9icyhuKTtvcD1uZXh0KHBbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdIGZvciBwIGluIHNlbGYuaW5wKG4pWyJwaGFzZXMiXSBpZiBwLmdldCgia2luZCIpPT0iQVBQTFkiKTtzZWxmLmFzc2VydFRydWUoYW55KHhbIm9wZXJhdGlvbl9pZCJdPT1vcCBmb3IgeCBpbiBvWyJmaW5hbF9zdGF0ZSJdWyJyZXRhaW5lZCJdKSxuKQogIG89c2VsZi5vYnMoImNvbXBvdW5kLW9uZS1kZW5pZWQiKTtpZHM9W29bInBoYXNlcyJdWzBdWyJiZWZvcmUiXV07cmVjb3Jkcz1vWyJmaW5hbF9zdGF0ZSJdWyJyZXRhaW5lZCJdO3NlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY29yZHMpLDMpO3NlbGYuYXNzZXJ0RXF1YWwobGVuKHt4WyJvcGVyYXRpb25faWQiXSBmb3IgeCBpbiByZWNvcmRzfSksMyk7c2VsZi5hc3NlcnRUcnVlKGFsbCh4WyJjYXVzYWxfb3BlcmF0aW9uX2lkIl09PSJPUC1tMiIgZm9yIHggaW4gcmVjb3JkcykpCiBkZWYgdGVzdF9hdXRob3JpdHlfZnVsbF9oYW5kb2ZmX2FuZF9mcmVzaG5lc3Moc2VsZik6CiAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icygiaGFuZG9mZi1nZW5lcmF0aW9uLW1pc21hdGNoIilbInBoYXNlcyJdWzBdWyJzdGF0dXMiXSwiREVOWV9BVVRIT1JJVFkiKQogIGJhc2U9c2VsZi5pbnAoImF1dGhvcml0eS1kZW5pYWwtbm8tZGVsdGEiKQogIGZvciBrIGluIFYuQVVUSF9DT05URVhUOgogICBxPWNvcHkuZGVlcGNvcHkoYmFzZSk7cVsicGhhc2VzIl1bMF1bImF1dGhvcml0eSJdWyJ2ZXJkaWN0Il09IkFMTE9XIjtxWyJwaGFzZXMiXVswXVsiYXV0aG9yaXR5Il1bImhhbmRvZmYiXVtrXT0yIGlmIGs9PSJnZW5lcmF0aW9uIiBlbHNlICJNSVNNQVRDSCIKICAgc2VsZi5hc3NlcnRFcXVhbChWLmRlcml2ZShxKVsicGhhc2VzIl1bMF1bInN0YXR1cyJdLCJERU5ZX0FVVEhPUklUWSIsaykKIGRlZiB0ZXN0X3Byb3ZpZGVyX2xpZmVjeWNsZV9hdHRhY2tzKHNlbGYpOgogIGdvb2Q9c2VsZi5vYnMoInByb3ZpZGVyLWVzdGltYXRlLWludm9pY2UtY3JlZGl0IilbImZpbmFsX3N0YXRlIl1bInByb3ZpZGVyX2ZhY3RzIl07c2VsZi5hc3NlcnRFcXVhbChbeFsic3RhZ2UiXSBmb3IgeCBpbiBnb29kXSxbIkVTVElNQVRFIiwiT0JTRVJWRUQiLCJTRVRUTEVEIiwiQ1JFRElUIl0pCiAgZm9yIG4gaW4gKCJwcm92aWRlci1mb3JrIiwicHJvdmlkZXItYWNjb3VudC1zd2l0Y2giLCJwcm92aWRlci1jcmVkaXQtb3ZlcmJvdW5kIik6c2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icyhuKVsicGhhc2VzIl1bLTFdWyJzdGF0dXMiXSwiREVOWV9BRE1JU1NJT04iLG4pCiAgZm9yIG11dCBpbiAobGFtYmRhIHE6cVsiaW5pdGlhbF9zdGF0ZSJdWyJwcm92aWRlcl9mYWN0cyJdLmFwcGVuZCh7ImFtb3VudCI6MSwiZmFjdF9pZCI6IlgiLCJvcGVyYXRpb25faWQiOiJQWCIsInByaW9yX2ZhY3RfaWQiOk5vbmUsInByb3ZpZGVyX2FjY291bnRfaWQiOiJBIiwic3RhZ2UiOiJTRVRUTEVEIn0pLGxhbWJkYSBxOnFbImluaXRpYWxfc3RhdGUiXVsicHJvdmlkZXJfZmFjdHMiXS5leHRlbmQoW3siYW1vdW50IjoyLCJmYWN0X2lkIjoiRSIsIm9wZXJhdGlvbl9pZCI6IlBFIiwicHJpb3JfZmFjdF9pZCI6Tm9uZSwicHJvdmlkZXJfYWNjb3VudF9pZCI6IkEiLCJzdGFnZSI6IkVTVElNQVRFIn0seyJhbW91bnQiOjIsImZhY3RfaWQiOiJPMSIsIm9wZXJhdGlvbl9pZCI6IlAxIiwicHJpb3JfZmFjdF9pZCI6IkUiLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiQSIsInN0YWdlIjoiT0JTRVJWRUQifSx7ImFtb3VudCI6MiwiZmFjdF9pZCI6Ik8yIiwib3BlcmF0aW9uX2lkIjoiUDIiLCJwcmlvcl9mYWN0X2lkIjoiRSIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJBIiwic3RhZ2UiOiJVTktOT1dOIn1dKSk6CiAgIHE9c2VsZi5pbnAoInByb3ZpZGVyLXVua25vd24iKTttdXQocSkKICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuZGVyaXZlKHEpCiBkZWYgdGVzdF9zaGFyZV9kaW1lbnNpb25fbGVhc2VfcmF0ZV9zZW1hbnRpY3Moc2VsZik6CiAgcz1zZWxmLm9icygic2hhcmUtcGFyZW50LXJldm9rZSIpWyJmaW5hbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMF1bInN0YXRlIl07aD1zWyJyZXZva2VkX2hpc3RvcnkiXVswXTtzZWxmLmFzc2VydEVxdWFsKHNldChoKSx7ImFsbG9jYXRlZCIsImNoaWxkX2lkIiwicmVzZXJ2ZWQiLCJ1c2VkIn0pO3NlbGYuYXNzZXJ0RXF1YWwoaFsiYWxsb2NhdGVkIl0sNikKICBxPXNlbGYuaW5wKCJyYXRlLXZzLXN0b2NrLW5vLWNvbnZlcnNpb24iKTtxWyJpbml0aWFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXVsxXVsidW5pdF9pZCJdPSJ3b3JrZXIiCiAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuZGVyaXZlKHEpCiAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icygibGVhc2UtZ3JhbnQtZXhwaXJlZCIpWyJwaGFzZXMiXVswXVsic3RhdHVzIl0sIkRFTllfQURNSVNTSU9OIik7c2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icygibGVhc2UtZXBvY2gtc2tpcCIpWyJwaGFzZXMiXVstMV1bInN0YXR1cyJdLCJERU5ZX0FETUlTU0lPTiIpCiAgcT1zZWxmLmlucCgicmF0ZS13aW5kb3ctbm90LWVsYXBzZWQiKTtxWyJwaGFzZXMiXVsxXVsibG9naWNhbF9ub3ciXT0xCiAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuZGVyaXZlKHEpCiBkZWYgdGVzdF9lYWNoX2xhd19vYnNlcnZhdGlvbl9tdXRhdGlvbl9hbmRfaW5wdXRfZm9yZ2VyeShzZWxmKToKICBjYXNlcz1bImNvbnN1bWFibGUtcmVzZXJ2ZS1jb21taXQiLCJkZWxlZ2F0aW9uLWF0dHJpYnV0aW9uIiwiYXV0aG9yaXR5LWRlbmlhbC1uby1kZWx0YSIsIndvcmxkLWRpc2NhcmQtc3BlbmQiLCJzaGFyZS1jaGlsZC11c2UiLCJob2xkLWNhbmNlbC11bnVzZWQiLCJsYXRlLXJlc3VsdC1uby1yZWZ1bmQiLCJwcm92aWRlci1lc3RpbWF0ZS1pbnZvaWNlLWNyZWRpdCIsImNvbXBvdW5kLW9uZS1kZW5pZWQiLCJsb3N0LXJlc3BvbnNlLXJldHJ5IiwibW9kZWwtc3Vic3RpdHV0aW9uIiwiZWZmZWN0LXNlcGFyYXRpb24iLCJmcmVzaC1jYWNoZS1yZXVzZSJdCiAgZm9yIGxhdyxuYW1lIGluIHppcChWLkxBV1MsY2FzZXMpOgogICBpbnA9c2VsZi5pbnAobmFtZSk7b2JzPVYuZGVyaXZlKGlucCk7cT1jb3B5LmRlZXBjb3B5KG9icykKICAgaWYgbGF3PT0iVFlQRURfSURFTlRJVFlfU0NPUEUiOnFbImlucHV0X3NoYTI1NiJdPSIwIio2NAogICBlbGlmIGxhdz09IkQwMDNfQVVUSE9SSVRZX0ZJUlNUIjpxWyJwaGFzZXMiXVswXVsic3RhdHVzIl09IkFQUExJRUQiCiAgIGVsaWYgbGF3PT0iUEVSX0tJTkRfQ09OU0VSVkFUSU9OIjpxWyJmaW5hbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMF1bInN0YXRlIl1bbmV4dChpdGVyKHFbImZpbmFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXVswXVsic3RhdGUiXSkpXSs9MQogICBlbGlmIGxhdz09IlBBUkVOVF9TSUJMSU5HX0NPTlNFUlZBVElPTiI6cVsicGhhc2VzIl1bLTFdWyJhZnRlciJdWyJkaW1lbnNpb25zIl1bMF1bInBhcmVudF9idWRnZXRfaWQiXT0iTUlTU0lORyIKICAgZWxpZiBsYXc9PSJSRVNFUlZBVElPTl9BQ1FVSVNJVElPTiI6cVsicGhhc2VzIl1bMF1bInN0YXR1cyJdPSJERU5ZX0FETUlTU0lPTiI7cVsicGhhc2VzIl1bMF1bImFmdGVyIl1bImRpbWVuc2lvbnMiXVswXVsic3RhdGUiXVsiZnJlZSJdLT0xCiAgIGVsaWYgbGF3PT0iQ0FOQ0VMTEFUSU9OX1JFRlVORCI6cVsicGhhc2VzIl1bLTFdWyJhZnRlciJdWyJkaW1lbnNpb25zIl1bMF1bInN0YXRlIl1bImNvbnN1bWVkIl09MAogICBlbGlmIGxhdz09IlBST1ZJREVSX1JFQ09OQ0lMSUFUSU9OIjpxWyJwaGFzZXMiXVstMV1bImFmdGVyIl1bInByb3ZpZGVyX2ZhY3RzIl1bLTFdWyJzdGFnZSJdPSJFU1RJTUFURSIKICAgZWxpZiBsYXc9PSJDT01QT1VORF9BVE9NSUNJVFkiOnFbInBoYXNlcyJdWzBdWyJhZnRlciJdWyJyZXRhaW5lZCJdWzBdWyJjYXVzYWxfb3BlcmF0aW9uX2lkIl09IldST05HIgogICBlbGlmIGxhdz09IlJFQ09WRVJZX1JFUExBWSI6cVsicGhhc2VzIl1bMF1bImFmdGVyIl1bInJldGFpbmVkIl1bMF1bImV4cGlyZXNfYXQiXT0wCiAgIGVsaWYgbGF3PT0iQVRUUklCVVRJT05fTU9ERUxfSU5ERVBFTkRFTkNFIjpxWyJwaGFzZXMiXVswXVsiYWZ0ZXIiXVsicmVzb3VyY2VfYmluZGluZ19wbGFucyJdWzBdWyJkaW1lbnNpb25faWQiXT0iTUlTU0lORyIKICAgZWxpZiBsYXc9PSJFRkZFQ1RfUFJPTU9USU9OX1NFUEFSQVRJT04iOnFbInBoYXNlcyJdWzBdWyJzdGF0dXMiXT0iQVBQTElFRCIKICAgZWxpZiBsYXc9PSJDQU5PTklDQUxfREVURVJNSU5JU00iOnFbImlucHV0X3NoYTI1NiJdPSJmIio2NAogICBlbHNlOnFbInBoYXNlcyJdWzBdWyJhZnRlciJdWyJkaW1lbnNpb25zIl1bMF1bInN0YXRlIl1bbmV4dChpdGVyKHFbInBoYXNlcyJdWzBdWyJhZnRlciJdWyJkaW1lbnNpb25zIl1bMF1bInN0YXRlIl0pKV0rPTEKICAgc2VsZi5hc3NlcnRGYWxzZShWLmxhd19yZXN1bHRzKGlucCxxKVtsYXddLGxhdykKICAgZm9yZ2VkPWNvcHkuZGVlcGNvcHkoaW5wKQogICBpZiBsYXc9PSJEMDAzX0FVVEhPUklUWV9GSVJTVCI6Zm9yZ2VkWyJwaGFzZXMiXVswXVsiYXV0aG9yaXR5Il1bImhhbmRvZmYiXVsiZ2VuZXJhdGlvbiJdKz0xO29ic1sicGhhc2VzIl1bMF1bInN0YXR1cyJdPSJBUFBMSUVEIgogICBlbGlmIGxhdz09IkNPTVBPVU5EX0FUT01JQ0lUWSI6Zm9yZ2VkWyJwaGFzZXMiXVswXVsiZXZlbnQiXVsiY2hpbGRyZW4iXVsxXVsiZXZlbnQiXVsib3BlcmF0aW9uX2lkIl09Zm9yZ2VkWyJwaGFzZXMiXVswXVsiZXZlbnQiXVsiY2hpbGRyZW4iXVswXVsiZXZlbnQiXVsib3BlcmF0aW9uX2lkIl0KICAgZWxpZiBsYXcgaW4gKCJQUk9WSURFUl9SRUNPTkNJTElBVElPTiIsIkFUVFJJQlVUSU9OX01PREVMX0lOREVQRU5ERU5DRSIsIkVGRkVDVF9QUk9NT1RJT05fU0VQQVJBVElPTiIpOmZvcmdlZFsicGhhc2VzIl1bMF1bImV2ZW50Il1bInBsYW5faWQiXT0iTUlTU0lORyIKICAgZWxzZTpmb3JnZWRbInBoYXNlcyJdWzBdWyJldmVudCJdWyJvcGVyYXRpb24iXT0iQUxJQVMiCiAgIHNlbGYuYXNzZXJ0RmFsc2UoVi5sYXdfcmVzdWx0cyhmb3JnZWQscSlbbGF3XSxsYXcpCiBkZWYgdGVzdF9sYXdfYW5kX3ByaW1hcnlfaGVscGVyX2luZGVwZW5kZW5jZShzZWxmKToKICBpbnA9c2VsZi5pbnAoImNvbXBvdW5kLWFsbC1vci1ub25lIik7b2JzPVYuZGVyaXZlKGlucCk7cHJpbWFyeT0oImFwcGx5X2xlYWYiLCJjbGFzc2lmeV9ldmVudCIsImV2ZW50X2pvaW4iLCJhdXRob3JpdHlfY3VycmVudCIsImRlcml2ZSIpO29sZD17bjpnZXRhdHRyKFYsbikgZm9yIG4gaW4gcHJpbWFyeX0KICB0cnk6CiAgIGZvciBuIGluIHByaW1hcnk6c2V0YXR0cihWLG4sbGFtYmRhICphLCoqazooXyBmb3IgXyBpbiAoKSkudGhyb3coUnVudGltZUVycm9yKG4pKSkKICAgc2VsZi5hc3NlcnRFcXVhbChWLm9yYWNsZV9vYnNlcnZhdGlvbihpbnApLG9icyk7c2VsZi5hc3NlcnRUcnVlKGFsbChWLmxhd19yZXN1bHRzKGlucCxvYnMpLnZhbHVlcygpKSkKICBmaW5hbGx5OgogICBmb3IgbixmIGluIG9sZC5pdGVtcygpOnNldGF0dHIoVixuLGYpCiAgZm9yIGksaGVscGVyIGluIGVudW1lcmF0ZShWLkxBV19IRUxQRVJTKToKICAgb3JpZ2luYWw9Vi5vcmFjbGVfb2JzZXJ2YXRpb24KICAgdHJ5OgogICAgaWYgaTpWLm9yYWNsZV9vYnNlcnZhdGlvbj1sYW1iZGEgKl86KF8gZm9yIF8gaW4gKCkpLnRocm93KFJ1bnRpbWVFcnJvcigib3JhY2xlIGFsaWFzIikpO3NlbGYuYXNzZXJ0VHJ1ZShoZWxwZXIoaW5wLG9icyksVi5MQVdTW2ldKQogICBmaW5hbGx5OlYub3JhY2xlX29ic2VydmF0aW9uPW9yaWdpbmFsCiBkZWYgdGVzdF9jM19leGFjdF9yZXBsYXlzX2NsYWltX3NldHMoc2VsZik6CiAgZm9yIG4gaW4gKCJwcm92aWRlci1hZnRlci1yZWxvYWQtcmVwbGF5Iiwic2hhcmUtYWZ0ZXItcmVsb2FkLXJlcGxheSIsImxlYXNlLWFmdGVyLXJlbG9hZC1yZXBsYXkiLCJjb21wb3VuZC1hZnRlci1yZWxvYWQtcmVwbGF5Iik6CiAgIGlucD1zZWxmLmlucChuKTtvPVYuZGVyaXZlKGlucCk7c2VsZi5hc3NlcnRFcXVhbChvLFYub3JhY2xlX29ic2VydmF0aW9uKGlucCkpO3NlbGYuYXNzZXJ0RXF1YWwob1sicGhhc2VzIl1bLTFdWyJzdGF0dXMiXSwiUkVQTEFZIixuKTtvdXRlcj1pbnBbInBoYXNlcyJdWzBdWyJldmVudCJdO3JlY29yZHM9W3ggZm9yIHggaW4gb1siZmluYWxfc3RhdGUiXVsicmV0YWluZWQiXSBpZiB4WyJjYXVzYWxfb3BlcmF0aW9uX2lkIl09PW91dGVyWyJvcGVyYXRpb25faWQiXV07c2VsZi5hc3NlcnRUcnVlKHJlY29yZHMpO3NlbGYuYXNzZXJ0VHJ1ZShhbGwoeFsiY2xhaW1lZF9pZHMiXT09Vi5jbGFpbWVkX2lkcyhvdXRlcikgZm9yIHggaW4gcmVjb3JkcykpCiAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icygic2hhcmUtY2hpbGQtcmVtaW50IilbInBoYXNlcyJdWy0xXVsic3RhdHVzIl0sIlJFUExBWSIpCiAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuZGVyaXZlKHNlbGYuaW5wKCJjb21wb3VuZC1wYXJ0aWFsLWNsYWltLXJldXNlIikpCiBkZWYgdGVzdF9jM19wYXJlbnRfd29ybGRfYW5kX3N0cnVjdHVyYWxfcmVwb3J0aW5nKHNlbGYpOgogIGJhc2U9c2VsZi5pbnAoInJhdGUtdnMtc3RvY2stbm8tY29udmVyc2lvbiIpCiAgZm9yIG11dCBpbiAobGFtYmRhIHE6KHFbImluaXRpYWxfc3RhdGUiXVsiZGltZW5zaW9ucyJdWzFdLl9fc2V0aXRlbV9fKCJwYXJlbnRfYnVkZ2V0X2lkIixxWyJpbml0aWFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXVswXVsiZGltZW5zaW9uX2lkIl0pKSxsYW1iZGEgcToocVsiaW5pdGlhbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMV0uX19zZXRpdGVtX18oIm93bmVyX2lkIiwiT1RIRVIiKSxxWyJpbml0aWFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXVsxXS5fX3NldGl0ZW1fXygicGFyZW50X2J1ZGdldF9pZCIscVsiaW5pdGlhbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMF1bImRpbWVuc2lvbl9pZCJdKSksbGFtYmRhIHE6cVsiaW5pdGlhbF9zdGF0ZSJdWyJ3b3JsZHMiXVswXS5fX3NldGl0ZW1fXygiZXh0cmEiLCJYIiksbGFtYmRhIHE6cVsiaW5pdGlhbF9zdGF0ZSJdWyJ3b3JsZHMiXS5hcHBlbmQoeyJ3b3JsZF9pZCI6IldPUkxELUEifSkpOgogICBxPWNvcHkuZGVlcGNvcHkoYmFzZSk7bXV0KHEpCiAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVi5NYW5pZmVzdEVycm9yKTpWLmRlcml2ZShxKQogIG09c2VsZi5tKCk7Ym9keT1WLnNlbWFudGljX2JvZHkobSxNUkFXKTthY2NlcHRlZD1beCBmb3IgeCBpbiBib2R5WyJhc3NlcnRpb25zIl0gaWYgeFsiY2xhc3NpZmljYXRpb24iXT09IkFDQ0VQVEVEX0xBV1NfUEFTUyJdO3JlamVjdGVkPVt4IGZvciB4IGluIGJvZHlbImFzc2VydGlvbnMiXSBpZiB4WyJjbGFzc2lmaWNhdGlvbiJdPT0iU1RSVUNUVVJBTF9SRUpFQ1RfUEFTUyJdO3NlbGYuYXNzZXJ0RXF1YWwoKGxlbihhY2NlcHRlZCksbGVuKHJlamVjdGVkKSksKDYwLDkpKTtzZWxmLmFzc2VydFRydWUoYWxsKHhbInBhc3MiXSBhbmQgeFsibGF3cyJdIGlzIG5vdCBOb25lIGFuZCBhbGwoeFsibGF3cyJdLnZhbHVlcygpKSBmb3IgeCBpbiBhY2NlcHRlZCkpO3NlbGYuYXNzZXJ0VHJ1ZShhbGwoeFsicGFzcyJdIGFuZCB4WyJsYXdzIl0gaXMgTm9uZSBmb3IgeCBpbiByZWplY3RlZCkpCiBkZWYgdGVzdF9jM19uYW1lZF9sYXdfZXhhY3RfZm9yZ2VyaWVzKHNlbGYpOgogIGNoZWNrcz1bXQogIGlucD1zZWxmLmlucCgiY29tcG91bmQtYWxsLW9yLW5vbmUiKTtvYnM9Vi5kZXJpdmUoaW5wKTtxPWNvcHkuZGVlcGNvcHkoaW5wKTtxWyJwaGFzZXMiXVswXVsiZXZlbnQiXVsiY2hpbGRyZW4iXVswXVsiZXZlbnQiXVsiYWN0b3JfaWQiXT0iRk9SR0VEIjtjaGVja3MuYXBwZW5kKChWLmxhd19hdXRob3JpdHkscSxvYnMpKTtjaGVja3MuYXBwZW5kKChWLmxhd19jb21wb3VuZCxxLG9icykpCiAgaW5wPXNlbGYuaW5wKCJjb25zdW1hYmxlLXJlc2VydmUtY29tbWl0Iik7b2JzPVYuZGVyaXZlKGlucCk7cT1jb3B5LmRlZXBjb3B5KG9icyk7cVsicGhhc2VzIl1bMF1bImFmdGVyIl1bImRpbWVuc2lvbnMiXVswXVsic3RhdGUiXVsicmVzZXJ2ZWQiXSs9MTtjaGVja3MuZXh0ZW5kKCgoVi5sYXdfcmVzZXJ2YXRpb24saW5wLHEpLChWLmxhd19raW5kLGlucCxxKSkpCiAgaW5wPXNlbGYuaW5wKCJ3b3JsZC1kaXNjYXJkLXNwZW5kIik7b2JzPVYuZGVyaXZlKGlucCk7cT1jb3B5LmRlZXBjb3B5KG9icyk7cVsicGhhc2VzIl1bLTFdWyJhZnRlciJdWyJkaW1lbnNpb25zIl1bMF1bInN0YXRlIl1bInJlc2VydmVkIl0rPTE7Y2hlY2tzLmFwcGVuZCgoVi5sYXdfY2FuY2VsLGlucCxxKSkKICBpbnA9c2VsZi5pbnAoImxvc3QtcmVzcG9uc2UtcmV0cnkiKTtvYnM9Vi5kZXJpdmUoaW5wKTtxPWNvcHkuZGVlcGNvcHkob2JzKTtxWyJwaGFzZXMiXVswXVsiYWZ0ZXIiXVsicmV0YWluZWQiXVswXVsib3V0Y29tZSJdPSJBUFBMSUVEIjtxWyJwaGFzZXMiXVswXVsiYWZ0ZXIiXVsicmV0YWluZWQiXVswXVsiYXR0ZW1wdGVkX2F0Il0rPTE7Y2hlY2tzLmFwcGVuZCgoVi5sYXdfcmVjb3ZlcnksaW5wLHEpKQogIGlucD1zZWxmLmlucCgiZWZmZWN0LXNlcGFyYXRpb24iKTtvYnM9Vi5kZXJpdmUoaW5wKTtxPWNvcHkuZGVlcGNvcHkoaW5wKTtxWyJwaGFzZXMiXVswXVsiZXZlbnQiXVsib3BlcmF0aW9uIl09IkFMSUFTIjtjaGVja3MuYXBwZW5kKChWLmxhd19zZXBhcmF0aW9uLHEsb2JzKSkKICBpbnA9c2VsZi5pbnAoImRlbGVnYXRpb24tYXR0cmlidXRpb24iKTtvYnM9Vi5kZXJpdmUoaW5wKTtxPWNvcHkuZGVlcGNvcHkoaW5wKTtxWyJwaGFzZXMiXVswXVsiZXZlbnQiXVsiYWN0b3JfaWQiXT0iT1RIRVIiO2NoZWNrcy5hcHBlbmQoKFYubGF3X2F0dHJpYnV0aW9uLHEsb2JzKSkKICBpbnA9c2VsZi5pbnAoImZyZXNoLWNhY2hlLXJldXNlIik7b2JzPVYuZGVyaXZlKGlucCk7cT1jb3B5LmRlZXBjb3B5KG9icyk7cVsicGhhc2VzIl1bMF1bImFmdGVyIl1bIndvcmxkcyJdPVt7IndvcmxkX2lkIjoiV09STEQtQSIsIngiOjF9XTtjaGVja3MuYXBwZW5kKChWLmxhd190eXBlZCxpbnAscSkpCiAgb2xkPVYub3JhY2xlX29ic2VydmF0aW9uCiAgdHJ5OgogICBWLm9yYWNsZV9vYnNlcnZhdGlvbj1sYW1iZGEgKl86b2JzCiAgIGZvciBoZWxwZXIsYSxiIGluIGNoZWNrczpzZWxmLmFzc2VydEZhbHNlKGhlbHBlcihhLGIpLGhlbHBlci5fX25hbWVfXykKICBmaW5hbGx5OlYub3JhY2xlX29ic2VydmF0aW9uPW9sZAogZGVmIHRlc3Rfc3RhZ2VfYl9leGFjdF9yZXByb2R1Y2VycyhzZWxmKToKICBmb3IgbiBpbiAoInByb3ZpZGVyLW9wZXJhdGlvbi1jb2xsaXNpb24iLCJuZXN0ZWQtY29tcG91bmQiKToKICAgcT1zZWxmLmlucChuKQogICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi5kZXJpdmUocSkKICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYub3JhY2xlX29ic2VydmF0aW9uKHEpCiAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icygicHJvdmlkZXItdW5rbm93bi1kaXJlY3Qtc2V0dGxlIilbInBoYXNlcyJdWy0xXVsic3RhdHVzIl0sIkRFTllfQURNSVNTSU9OIikKICBnb29kPXNlbGYub2JzKCJwcm92aWRlci11bmtub3duLW9ic2VydmVkLXNldHRsZWQiKTtzZWxmLmFzc2VydEVxdWFsKFt4WyJzdGFnZSJdIGZvciB4IGluIGdvb2RbImZpbmFsX3N0YXRlIl1bInByb3ZpZGVyX2ZhY3RzIl1dLFsiRVNUSU1BVEUiLCJVTktOT1dOIiwiT0JTRVJWRUQiLCJTRVRUTEVEIl0pCiAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9icygicmF0ZS1sYXN0LXJlZmlsbC1yZWdyZXNzaW9uIilbInBoYXNlcyJdWzBdWyJzdGF0dXMiXSwiREVOWV9BRE1JU1NJT04iKTtzZWxmLmFzc2VydEVxdWFsKHNlbGYub2JzKCJsZWFzZS1lcG9jaC16ZXJvIilbInBoYXNlcyJdWzBdWyJzdGF0dXMiXSwiREVOWV9BRE1JU1NJT04iKQogIHNoPXNlbGYub2JzKCJzaGFyZS11c2VkLXJldm9rZS1yZWFsbG9jYXRlIilbImZpbmFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXVswXVsic3RhdGUiXTtzZWxmLmFzc2VydEVxdWFsKHNldChzaFsicmV2b2tlZF9oaXN0b3J5Il1bMF0pLHsiYWxsb2NhdGVkIiwiY2hpbGRfaWQiLCJyZXNlcnZlZCIsInVzZWQifSk7c2VsZi5hc3NlcnRFcXVhbChzdW0oeFsiYWxsb2NhdGVkIl0gZm9yIHggaW4gc2hbImNoaWxkcmVuIl0pK3N1bSh4WyJ1c2VkIl0gZm9yIHggaW4gc2hbInJldm9rZWRfaGlzdG9yeSJdKSwxMCkKICBxPXNlbGYuaW5wKCJmcmVzaC1jYWNoZS1yZXVzZSIpO3FbImluaXRpYWxfc3RhdGUiXVsicmV0YWluZWQiXT1beyJhdHRlbXB0ZWRfYXQiOjAsImJpbmRpbmdfc2hhMjU2IjoiMCIqNjQsImNhdXNhbF9vcGVyYXRpb25faWQiOiJGT1JHRUQiLCJjbGFpbWVkX2lkcyI6WyJGT1JHRUQiXSwiZXhwaXJlc19hdCI6MjAsIm9wZXJhdGlvbl9pZCI6IkZPUkdFRCIsIm91dGNvbWUiOiJBUFBMSUVEIn1dCiAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuZGVyaXZlKHEpCiAgcVsiaW5pdGlhbF9zdGF0ZSJdWyJyZXRhaW5lZCJdPVtdO3FbImluaXRpYWxfc3RhdGUiXVsidG9tYnN0b25lcyJdPVt7ImJpbmRpbmdfc2hhMjU2IjoiMCIqNjQsImNhdXNhbF9vcGVyYXRpb25faWQiOiJGT1JHRUQiLCJjbGFpbWVkX2lkcyI6WyJGT1JHRUQiXSwib3BlcmF0aW9uX2lkIjoiRk9SR0VEIiwib3V0Y29tZSI6IkFQUExJRUQiLCJyZXRpcmVkX2F0IjoxfV0KICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi5vcmFjbGVfb2JzZXJ2YXRpb24ocSkKICBmb3IgbmFtZSxraW5kLHJlY29yZHMgaW4gKCgic2hhcmUtY2hpbGQtdXNlIiwiU0hBUkUiLCgiY2hpbGRyZW4iLHsiYWxsb2NhdGVkIjoxLCJjaGlsZF9pZCI6IkdMT0JBTC1YIiwicmVzZXJ2ZWQiOjAsInVzZWQiOjB9KSksKCJsZWFzZS1yZW5ldy1lcG9jaCIsIkxFQVNFIiwoImFjdGl2ZSIseyJlcG9jaCI6MSwiZXhwaXJlc19hdCI6MzAsImxlYXNlX2lkIjoiR0xPQkFMLVgiLCJ1c2VzIjowfSkpKToKICAgcT1zZWxmLmlucChuYW1lKTtkPWNvcHkuZGVlcGNvcHkocVsiaW5pdGlhbF9zdGF0ZSJdWyJkaW1lbnNpb25zIl1bMF0pO2RbImRpbWVuc2lvbl9pZCJdKz0iLTIiO2RbInN0YXRlIl1bcmVjb3Jkc1swXV09W3JlY29yZHNbMV1dO3FbImluaXRpYWxfc3RhdGUiXVsiZGltZW5zaW9ucyJdWzBdWyJzdGF0ZSJdW3JlY29yZHNbMF1dPVtjb3B5LmRlZXBjb3B5KHJlY29yZHNbMV0pXTtxWyJpbml0aWFsX3N0YXRlIl1bImRpbWVuc2lvbnMiXS5hcHBlbmQoZCkKICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuZGVyaXZlKHEpCiBkZWYgdGVzdF9sMTFfY29tcG91bmRfZWZmZWN0X2FuZF9sYXdfc2Fib3RhZ2Uoc2VsZik6CiAgY2VsbHM9W3ggZm9yIHggaW4gc2VsZi5tKClbImI4Il1bIm1hdHJpeCJdIGlmIHhbImxhdyJdPT0iTDExIl07c2VsZi5hc3NlcnRFcXVhbChsZW4oY2VsbHMpLDE3KTtzZWxmLmFzc2VydFRydWUoYWxsKHhbImNsYXNzaWZpY2F0aW9uIl09PSJBUFBMSUNBQkxFIiBhbmQgImRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHMiIGluIHhbInJlYXNvbiJdIGZvciB4IGluIGNlbGxzKSkKICBxPXNlbGYuaW5wKCJjb21wb3VuZC1hbGwtb3Itbm9uZSIpO2NoaWxkPXFbInBoYXNlcyJdWzBdWyJldmVudCJdWyJjaGlsZHJlbiJdWzFdO2NoaWxkWyJldmVudCJdWyJvcGVyYXRpb24iXT0iRUZGRUNUX0FVVEhPUklaRSI7bz1WLmRlcml2ZShxKTtzZWxmLmFzc2VydEVxdWFsKG9bInBoYXNlcyJdWzBdWyJzdGF0dXMiXSwiREVOWV9BRE1JU1NJT04iKTtyZWM9e3hbIm9wZXJhdGlvbl9pZCJdOnggZm9yIHggaW4gb1siZmluYWxfc3RhdGUiXVsicmV0YWluZWQiXX07c2VsZi5hc3NlcnRFcXVhbChyZWNbY2hpbGRbImV2ZW50Il1bIm9wZXJhdGlvbl9pZCJdXVsib3V0Y29tZSJdLCJVTlNVUFBPUlRFRCIpO3NlbGYuYXNzZXJ0RXF1YWwocmVjW3FbInBoYXNlcyJdWzBdWyJldmVudCJdWyJjaGlsZHJlbiJdWzBdWyJldmVudCJdWyJvcGVyYXRpb25faWQiXV1bIm91dGNvbWUiXSwiQVBQTElFRCIpCiAgaW5wPXNlbGYuaW5wKCJwcm92aWRlci11bmtub3duLWRpcmVjdC1zZXR0bGUiKTtvYnM9Vi5kZXJpdmUoaW5wKTtmb3JnZWQ9Y29weS5kZWVwY29weShvYnMpO2ZvcmdlZFsicGhhc2VzIl1bLTFdWyJzdGF0dXMiXT0iQVBQTElFRCI7Zm9yZ2VkWyJwaGFzZXMiXVstMV1bImFmdGVyIl1bInByb3ZpZGVyX2ZhY3RzIl0uYXBwZW5kKHsiYW1vdW50Ijo5LCJmYWN0X2lkIjoiRk9SR0VEIiwib3BlcmF0aW9uX2lkIjoiRk9SR0VEIiwicHJpb3JfZmFjdF9pZCI6aW5wWyJwaGFzZXMiXVsxXVsiZXZlbnQiXVsicHJvdmlkZXJfZmFjdF9pZCJdLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInN0YWdlIjoiU0VUVExFRCJ9KQogIGJhZD1zZWxmLmlucCgicHJvdmlkZXItb3BlcmF0aW9uLWNvbGxpc2lvbiIpO2Jhc2U9c2VsZi5vYnMoInByb3ZpZGVyLWVzdGltYXRlLWludm9pY2UtY3JlZGl0Iik7b2xkX28sb2xkX3Y9Vi5vcmFjbGVfb2JzZXJ2YXRpb24sVi52YWxpZGF0ZV9zdGF0ZQogIHRyeToKICAgVi5vcmFjbGVfb2JzZXJ2YXRpb249bGFtYmRhICpfOm9icztWLnZhbGlkYXRlX3N0YXRlPWxhbWJkYSAqYSwqKms6KHt9LCB7fSwge30pCiAgIHNlbGYuYXNzZXJ0RmFsc2UoVi5sYXdfcHJvdmlkZXIoaW5wLGZvcmdlZCkpO3NlbGYuYXNzZXJ0VHJ1ZShWLmxhd193aG9sZShpbnAsb2JzKSk7c2VsZi5hc3NlcnRGYWxzZShWLmxhd190eXBlZChiYWQsYmFzZSkpCiAgZmluYWxseTpWLm9yYWNsZV9vYnNlcnZhdGlvbixWLnZhbGlkYXRlX3N0YXRlPW9sZF9vLG9sZF92CiBkZWYgdGVzdF9yZWZlcmVuY2Vfb19ub25xdWFsaWZ5aW5nX2FuZF9mdXR1cmVfb3BlbihzZWxmKToKICBtPXNlbGYubSgpO289Vi5yZWZlcmVuY2VfbyhtLE1SQVcpO3NlbGYuYXNzZXJ0RmFsc2Uob1sicHJvdmVuYW5jZV9xdWFsaWZpZWQiXSk7Vi52YWxpZGF0ZV9vX3ZhbHVlKG8sbSxNUkFXKQogIHBhY2tldD0oSEVSRS8iRC0wMDgtUEFDS0VULm1kIikucmVhZF9ieXRlcygpO3ZhbGlkYXRvcj0oSEVSRS8iZDAwOF9tYW5pZmVzdC5weSIpLnJlYWRfYnl0ZXMoKTtWLnZhbGlkYXRlX2FydGlmYWN0cyhNUkFXLHBhY2tldCx2YWxpZGF0b3IpCiAgZm9yIGJhZF9wYWNrZXQsYmFkX3ZhbGlkYXRvciBpbiAoKHBhY2tldCtiIngiLHZhbGlkYXRvciksKHBhY2tldCx2YWxpZGF0b3IrYiJ4IikpOgogICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi52YWxpZGF0ZV9hcnRpZmFjdHMoTVJBVyxiYWRfcGFja2V0LGJhZF92YWxpZGF0b3IpCiAgcT1jb3B5LmRlZXBjb3B5KG8pO3FbInNlbWFudGljX2JvZHkiXVsibWFuaWZlc3Rfc2hhMjU2Il09IjAiKjY0CiAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYudmFsaWRhdGVfb192YWx1ZShxLG0sTVJBVykKICBzZWxmLmFzc2VydEVxdWFsKFYuZnV0dXJlX3ZlcmRpY3QoKSwiT1BFTiIpO3NlbGYuYXNzZXJ0RXF1YWwoVi5mdXR1cmVfdmVyZGljdChiImZvcmdlZCIpLCJPUEVOIikKIGRlZiB0ZXN0X2Nhbm9uaWNhbF9hbmRfY2xpKHNlbGYpOgogIGZvciByYXcgaW4gKGIneyJhIjoxLCJhIjoxfVxuJyxiJ3siYSI6MS4wfVxuJyxiJ3siYSI6MTg0NDY3NDQwNzM3MDk1NTE2MTZ9XG4nLGIneyJhIjoxfVxuICcpOgogICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi5wYXJzZV9ieXRlcyhyYXcpCiAgcD1zdWJwcm9jZXNzLnJ1bihbc3lzLmV4ZWN1dGFibGUsc3RyKEhFUkUvImQwMDhfbWFuaWZlc3QucHkiKSxzdHIoSEVSRS8iZDAwOC1idWRnZXQtbWFuaWZlc3QtdjEuanNvbiIpXSxjYXB0dXJlX291dHB1dD1UcnVlLHRleHQ9VHJ1ZSk7c2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsMCxwLnN0ZGVycik7c2VsZi5hc3NlcnRJbigicmF3X3N1YmNhc2VfY291bnQ9NjkiLHAuc3Rkb3V0KTtzZWxmLmFzc2VydEluKCJzdHJ1Y3R1cmFsX3JlamVjdF9jb3VudD05IixwLnN0ZG91dCkKICBwPXN1YnByb2Nlc3MucnVuKFtzeXMuZXhlY3V0YWJsZSxzdHIoSEVSRS8iZDAwOF9tYW5pZmVzdC5weSIpLCItLWdlbmVyYXRlIl0sY2FwdHVyZV9vdXRwdXQ9VHJ1ZSk7c2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dCxNUkFXKQogZGVmIHN5bnRoZXRpY19yb290KHNlbGYpOgogIGZpbGVzPXtwOihIRVJFL3BhdGhsaWIuUHVyZVBvc2l4UGF0aChwKS5uYW1lKS5yZWFkX2J5dGVzKCkgZm9yIHAgaW4gVi5TVEFHRV9DX1BBVEhTfTtwYXRocz17cDpWLmdpdF9vaWQoImJsb2IiLGIpIGZvciBwLGIgaW4gZmlsZXMuaXRlbXMoKX07YnVuZGxlPVYuZ2l0X2J1bmRsZShmaWxlcywiRDAwOCBzeW50aGV0aWMgd2l0bmVzcyIpO3Jhdz1WLmNhbm9uaWNhbCh7ImNvbW1pdF9vaWQiOmJ1bmRsZVsiY29tbWl0X29pZCJdLCJsYWJlbCI6IlRFU1RfT05MWV9OT05fRVZJREVOQ0UiLCJvYmplY3RzIjpidW5kbGVbIm9iamVjdHMiXSwicGF0aHMiOnBhdGhzLCJzY2hlbWEiOiJEMDA4LVBSRVJFRy1ST09ULTMiLCJ0cmVlX29pZCI6YnVuZGxlWyJ0cmVlX29pZCJdfSk7cmV0dXJuIHJhdyxmaWxlcwogZGVmIHN0YWdlX2NfY2hhaW4oc2VsZik6CiAgcm9vdCxmaWxlcz1zZWxmLnN5bnRoZXRpY19yb290KCk7cGFja2V0PWZpbGVzW1YuU1RBR0VfQ19QQVRIU1swXV07dmFsaWRhdG9yPWZpbGVzW1YuU1RBR0VfQ19QQVRIU1syXV07bT1zZWxmLm0oKTtzb3VyY2VzPXtyOnByb2R1Y2VyX3NvdXJjZShyKSBmb3IgciBpbiBWLlBST0RVQ0VSX1JPTEVTfTtpZGVudGl0aWVzPXt9CiAgZm9yIHJvbGUgaW4gVi5QUk9EVUNFUl9ST0xFUzoKICAgcGF0aD0iZnV0dXJlL2QwMDhfIityb2xlLmxvd2VyKCkrIl92My9wcm9kdWNlci5weSI7c3JjPXNvdXJjZXNbcm9sZV07bG9ja3M9e1YuU1RBR0VfQ19QQVRIU1swXTpwYWNrZXQsVi5TVEFHRV9DX1BBVEhTWzFdOk1SQVd9O2lkZW50aXRpZXNbcm9sZV09Vi5jYW5vbmljYWwoeyJkZXBlbmRlbmNpZXMiOltdLCJsb2NrcyI6Vi5pbnZlbnRvcnkobG9ja3MpLCJwcmVyZWdfcm9vdCI6Vi5hcnQoIlBSRVJFR19ST09UIixyb290KSwicm9sZSI6cm9sZSwic2NoZW1hIjoiRDAwOC1JREVOVElUWS0zIiwic291cmNlX2NoZWNrcG9pbnQiOlYuc291cmNlX2NoZWNrcG9pbnRfYnVuZGxlKHBhdGgsc3JjKSwic291cmNlcyI6Vi5pbnZlbnRvcnkoe3BhdGg6c3JjfSl9KQogIHJldmlld2VyX3NvdXJjZXM9e307cmV2aWV3ZXJfaWRzPXt9CiAgZm9yIHJvbGUgaW4gVi5SRVZJRVdFUl9ST0xFUzoKICAgcGF0aD0iZnV0dXJlL2QwMDhfcmV2aWV3ZXJfIityb2xlLmxvd2VyKCkrIl92My9yZXZpZXdlci50eHQiO3NyYz0oIlRFU1RfT05MWSBpbmRlcGVuZGVudCByZXZpZXdlciAiK3JvbGUrIlxuIikuZW5jb2RlKCk7cmV2aWV3ZXJfc291cmNlc1tyb2xlXT17cGF0aDpzcmN9O3Jldmlld2VyX2lkc1tyb2xlXT1WLmNhbm9uaWNhbCh7ImNhcGFiaWxpdGllcyI6Vi5SRVZJRVdfQ0FQU1tyb2xlXSwicHJlcmVnX3Jvb3QiOlYuYXJ0KCJQUkVSRUdfUk9PVCIscm9vdCksInJvbGUiOnJvbGUsInNjaGVtYSI6IkQwMDgtUkVWSUVXRVItSURFTlRJVFktMyIsInNvdXJjZV9jaGVja3BvaW50IjpWLnNvdXJjZV9jaGVja3BvaW50X2J1bmRsZShwYXRoLHNyYyksInNvdXJjZXMiOlYuaW52ZW50b3J5KHtwYXRoOnNyY30pfSkKICBwcm9kdWNlcl9pZHM9aWRlbnRpdGllcztzdWJqZWN0cz17IlJYIjpWLnByb2R1Y2VyX3N1YmplY3QoIkVYRUNVVE9SIixpZGVudGl0aWVzWyJFWEVDVVRPUiJdKSwiUkMiOlYucHJvZHVjZXJfc3ViamVjdCgiQ0hFQ0tFUiIsaWRlbnRpdGllc1siQ0hFQ0tFUiJdKSwiUlYiOlYuZXZhbHVhdG9yX3N1YmplY3Qocm9vdCxNUkFXLHBhY2tldCx2YWxpZGF0b3IpfTtyZXZpZXdzPXt9CiAgZm9yIHJvbGUgaW4gKCJSWCIsIlJDIiwiUlYiKToKICAgcmV2aWV3c1tyb2xlXT1WLmNhbm9uaWNhbCh7ImNoZWNrcyI6Vi5SRVZJRVdfQ0hFQ0tTW3JvbGVdLCJmaW5kaW5ncyI6W3siZmluZGluZ19pZCI6Ik1BTlVBTC1DT1BZLSIrcm9sZSwicmVzb2x2ZWQiOlRydWUsInNldmVyaXR5IjoiSU5GTyIsInRleHQiOiJtYW51YWwgc2VtYW50aWMgY29weSBpbnNwZWN0aW9uIGZvdW5kIG5vIGVtYmVkZGVkIG9ic2VydmF0aW9uIG9yIGFuc3dlciB0YWJsZSJ9XSwiZ2F0ZSI6Vi5SRVZJRVdfR0FURVNbcm9sZV0sInJldmlld2VyX2lkZW50aXR5IjpWLmFydCgiUkVWSUVXRVJfSURFTlRJVFkiLHJldmlld2VyX2lkc1tyb2xlXSksInJvbGUiOnJvbGUsInNjaGVtYSI6IkQwMDgtUkVWSUVXLTMiLCJzdWJqZWN0IjpzdWJqZWN0c1tyb2xlXSwidmVyZGljdCI6IlBBU1MifSkKICBpcj1WLmNhbm9uaWNhbCh7ImNoZWNrcyI6eyJtYW51YWxfc2VtYW50aWNfY29weV9jaGVja3NfcGFzcyI6VHJ1ZSwibm9ybWFsaXplZF9hc3RfZGlzdGluY3QiOlRydWUsInNvdXJjZV9ieXRlc19kaXN0aW5jdCI6VHJ1ZX0sInByb2R1Y2VyX2lkZW50aXRpZXMiOnsiQ0hFQ0tFUiI6Vi5hcnQoIkNIRUNLRVJfSURFTlRJVFkiLGlkZW50aXRpZXNbIkNIRUNLRVIiXSksIkVYRUNVVE9SIjpWLmFydCgiRVhFQ1VUT1JfSURFTlRJVFkiLGlkZW50aXRpZXNbIkVYRUNVVE9SIl0pfSwicmV2aWV3ZXJfaWRlbnRpdGllcyI6e3I6Vi5hcnQocisiX0lERU5USVRZIixyZXZpZXdlcl9pZHNbcl0pIGZvciByIGluICgiUlgiLCJSQyIsIlJWIil9LCJyZXZpZXdzIjp7cjpWLmFydChyKyJfUkVWSUVXIixyZXZpZXdzW3JdKSBmb3IgciBpbiAoIlJYIiwiUkMiLCJSViIpfSwic2NoZW1hIjoiRDAwOC1JUi0zIiwic3ViamVjdHMiOnN1YmplY3RzfSkKICBwZnN1YmplY3Q9Vi5wcmVmcmVlemVfc3ViamVjdChyb290LGlyLE1SQVcscGFja2V0LHZhbGlkYXRvcixwcm9kdWNlcl9pZHMscmV2aWV3ZXJfaWRzKTtyZXZpZXdzWyJSUCJdPVYuY2Fub25pY2FsKHsiY2hlY2tzIjpWLlJFVklFV19DSEVDS1NbIlJQIl0sImZpbmRpbmdzIjpbeyJmaW5kaW5nX2lkIjoiTUFOVUFMLUNPUFktUlAiLCJyZXNvbHZlZCI6VHJ1ZSwic2V2ZXJpdHkiOiJJTkZPIiwidGV4dCI6Im1hbnVhbCBjb3B5IGZhY3RzIGFuZCBleGFjdCBmcmVlemUgc3ViamVjdCBpbmRlcGVuZGVudGx5IGNoZWNrZWQifV0sImdhdGUiOlYuUkVWSUVXX0dBVEVTWyJSUCJdLCJyZXZpZXdlcl9pZGVudGl0eSI6Vi5hcnQoIlJFVklFV0VSX0lERU5USVRZIixyZXZpZXdlcl9pZHNbIlJQIl0pLCJyb2xlIjoiUlAiLCJzY2hlbWEiOiJEMDA4LVJFVklFVy0zIiwic3ViamVjdCI6cGZzdWJqZWN0LCJ2ZXJkaWN0IjoiUEFTUyJ9KTtwZj1WLmNhbm9uaWNhbCh7InByZV9mcmVlemVfcmV2aWV3IjpWLmFydCgiUlBfUkVWSUVXIixyZXZpZXdzWyJSUCJdKSwicmV2aWV3ZXJfaWRlbnRpdHkiOlYuYXJ0KCJSUF9JREVOVElUWSIscmV2aWV3ZXJfaWRzWyJSUCJdKSwic2NoZW1hIjoiRDAwOC1QRi0zIiwic3ViamVjdCI6cGZzdWJqZWN0fSk7ZnJlZXplPVYuY2Fub25pY2FsKHsiaW5kZXBlbmRlbmNlX3JlcG9ydCI6Vi5hcnQoIklSIixpciksInByZV9mcmVlemUiOlYuYXJ0KCJQRiIscGYpLCJwcmVyZWdfcm9vdCI6Vi5hcnQoIlBSRVJFR19ST09UIixyb290KSwic2NoZW1hIjoiRDAwOC1GUkVFWkUtMyIsInN1YmplY3QiOnBmc3ViamVjdH0pCiAgbz17cjpWLmNhbm9uaWNhbChWLnNlbWFudGljX29fdmFsdWUobSxNUkFXLGlkZW50aXRpZXNbcl0pKSBmb3IgciBpbiBWLlBST0RVQ0VSX1JPTEVTfTt2PVYuY2Fub25pY2FsKHsiYWxsX2xhd3NfcGFzcyI6VHJ1ZSwiZnJlZXplIjpWLmFydCgiRlJFRVpFIixmcmVlemUpLCJpbmRlcGVuZGVuY2VfcmVwb3J0IjpWLmFydCgiSVIiLGlyKSwibzEiOlYuYXJ0KCJPMSIsb1siRVhFQ1VUT1IiXSksIm8yIjpWLmFydCgiTzIiLG9bIkNIRUNLRVIiXSksIm9fc2VtYW50aWNzX2VxdWFsIjpUcnVlLCJwcm9kdWNlcnNfZXhlY3V0ZWQiOlRydWUsInNjaGVtYSI6IkQwMDgtVi0zIiwidmFsaWQiOlRydWV9KTtkYWc9bVsicHJvdmVuYW5jZSJdWyJkYWciXTttYW51YWw9Vi5jYW5vbmljYWwoeyJjaGVja3MiOlt7ImFuc3dlcl9saXRlcmFsc19hYnNlbnQiOlRydWUsImNvbXBsZXRlZCI6VHJ1ZSwicmV2aWV3ZXJfcm9sZSI6IlJYIiwic291cmNlIjpWLmFydCgiRVhFQ1VUT1JfU09VUkNFIixzb3VyY2VzWyJFWEVDVVRPUiJdKX0seyJhbnN3ZXJfbGl0ZXJhbHNfYWJzZW50IjpUcnVlLCJjb21wbGV0ZWQiOlRydWUsInJldmlld2VyX3JvbGUiOiJSQyIsInNvdXJjZSI6Vi5hcnQoIkNIRUNLRVJfU09VUkNFIixzb3VyY2VzWyJDSEVDS0VSIl0pfV0sInNjaGVtYSI6IkQwMDgtTUFOVUFMLUNPUFktRkFDVFMtMyJ9KTtlPVYuY2Fub25pY2FsKHsiZGFnIjpkYWcsImZyZWV6ZSI6Vi5hcnQoIkZSRUVaRSIsZnJlZXplKSwiaW5kZXBlbmRlbmNlX3JlcG9ydCI6Vi5hcnQoIklSIixpciksIm1hbnVhbF9jb3B5X2ZhY3RzIjpWLmFydCgiTUFOVUFMX0NPUFlfRkFDVFMiLG1hbnVhbCksIm8xIjpWLmFydCgiTzEiLG9bIkVYRUNVVE9SIl0pLCJvMiI6Vi5hcnQoIk8yIixvWyJDSEVDS0VSIl0pLCJwcmVfZnJlZXplIjpWLmFydCgiUEYiLHBmKSwic2NoZW1hIjoiRDAwOC1FLTMiLCJ2IjpWLmFydCgiViIsdiksInZlcmRpY3QiOiJBRE9QVF9BTEdFQlJBIn0pCiAgYnVuZGxlcz17cjp7ImlkZW50aXR5X3JhdyI6aWRlbnRpdGllc1tyXSwic291cmNlcyI6eyJmdXR1cmUvZDAwOF8iK3IubG93ZXIoKSsiX3YzL3Byb2R1Y2VyLnB5Ijpzb3VyY2VzW3JdfSwiZGVwZW5kZW5jaWVzIjp7fSwibG9ja3MiOntWLlNUQUdFX0NfUEFUSFNbMF06cGFja2V0LFYuU1RBR0VfQ19QQVRIU1sxXTpNUkFXfX0gZm9yIHIgaW4gVi5QUk9EVUNFUl9ST0xFU307YnVuZGxlc1sicmV2aWV3ZXJfaWRzIl09cmV2aWV3ZXJfaWRzO2J1bmRsZXNbInJldmlld3MiXT1yZXZpZXdzO2J1bmRsZXNbInJldmlld2VyX3NvdXJjZXMiXT1yZXZpZXdlcl9zb3VyY2VzCiAgYXJncz0oZSx2LGZyZWV6ZSxwZixpcixyb290LGZpbGVzLE1SQVcscGFja2V0LHZhbGlkYXRvcixidW5kbGVzLG9bIkVYRUNVVE9SIl0sb1siQ0hFQ0tFUiJdLGRhZyxtYW51YWwpCiAgcmV0dXJuIHsiYXJncyI6YXJncywic291cmNlcyI6c291cmNlcywibyI6bywiaXIiOmlyLCJyZXZpZXdzIjpyZXZpZXdzLCJyb290Ijpyb290LCJmaWxlcyI6ZmlsZXN9CiBkZWYgdGVzdF9zdGFnZV9jX2Z1bGxfc3VjY2Vzc2Z1bF9jaGFpbihzZWxmKToKICBjPXNlbGYuc3RhZ2VfY19jaGFpbigpO209c2VsZi5tKCkKICBmb3Igc3JjIGluIGNbInNvdXJjZXMiXS52YWx1ZXMoKTpWLnNjYW5fc291cmNlKHNyYyk7YXVkaXRfbm9fYW5zd2VyX2xpdGVyYWxzKHNyYyxtKQogIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY1sic291cmNlcyJdWyJFWEVDVVRPUiJdLGNbInNvdXJjZXMiXVsiQ0hFQ0tFUiJdKTtzZWxmLmFzc2VydE5vdEVxdWFsKFYubm9ybWFsaXplZF9hc3QoY1sic291cmNlcyJdWyJFWEVDVVRPUiJdKSxWLm5vcm1hbGl6ZWRfYXN0KGNbInNvdXJjZXMiXVsiQ0hFQ0tFUiJdKSk7c2VsZi5hc3NlcnRFcXVhbChWLnNlbWFudGljX29fYnl0ZXMoY1sibyJdWyJFWEVDVVRPUiJdKSxWLnNlbWFudGljX29fYnl0ZXMoY1sibyJdWyJDSEVDS0VSIl0pKTtzZWxmLmFzc2VydEVxdWFsKFYuZnV0dXJlX3ZlcmRpY3QoKmNbImFyZ3MiXSksIkFET1BUX0FMR0VCUkEiKQogZGVmIHRlc3Rfc3RhZ2VfY19zdWNjZXNzX2NoYWluX2FsbF9hcmd1bWVudF9hdHRhY2tzX29wZW4oc2VsZik6CiAgYz1zZWxmLnN0YWdlX2NfY2hhaW4oKTthcmdzPWxpc3QoY1siYXJncyJdKTtzZWxmLmFzc2VydEVxdWFsKGxlbihhcmdzKSwxNSkKICBmb3IgaSx4IGluIGVudW1lcmF0ZShhcmdzKToKICAgcT1saXN0KGFyZ3MpCiAgIGlmIGlzaW5zdGFuY2UoeCxieXRlcyk6cVtpXT14K2IieCIKICAgZWxpZiBpc2luc3RhbmNlKHgsZGljdCk6cVtpXT1jb3B5LmRlZXBjb3B5KHgpO3FbaV1bIkZPUkdFRCJdPVRydWUKICAgZWxzZTpzZWxmLmZhaWwoInVuYXR0YWNrYWJsZSBhcmd1bWVudCAiK3N0cihpKSkKICAgc2VsZi5hc3NlcnRFcXVhbChWLmZ1dHVyZV92ZXJkaWN0KCpxKSwiT1BFTiIsaSkKICBmb3Igcm9sZSBpbiBWLlJFVklFV0VSX1JPTEVTOgogICBxPWxpc3QoYXJncyk7Yj1jb3B5LmRlZXBjb3B5KHFbMTBdKTtiWyJyZXZpZXdlcl9pZHMiXVtyb2xlXSs9YiJ4IjtxWzEwXT1iO3NlbGYuYXNzZXJ0RXF1YWwoVi5mdXR1cmVfdmVyZGljdCgqcSksIk9QRU4iLHJvbGUpCiAgIHE9bGlzdChhcmdzKTtiPWNvcHkuZGVlcGNvcHkocVsxMF0pO3Jldmlldz1WLnBhcnNlX2J5dGVzKGJbInJldmlld3MiXVtyb2xlXSk7cmV2aWV3WyJmaW5kaW5ncyJdPVt7ImZpbmRpbmdfaWQiOiJPUEVOIiwicmVzb2x2ZWQiOkZhbHNlLCJzZXZlcml0eSI6IkhJR0giLCJ0ZXh0IjoidW5yZXNvbHZlZCJ9XTtiWyJyZXZpZXdzIl1bcm9sZV09Vi5jYW5vbmljYWwocmV2aWV3KTtxWzEwXT1iO3NlbGYuYXNzZXJ0RXF1YWwoVi5mdXR1cmVfdmVyZGljdCgqcSksIk9QRU4iLHJvbGUrIiByZXZpZXciKQogIHE9bGlzdChhcmdzKTtpcj1WLnBhcnNlX2J5dGVzKHFbNF0pO2lyWyJjaGVja3MiXVsibWFudWFsX3NlbWFudGljX2NvcHlfY2hlY2tzX3Bhc3MiXT1GYWxzZTtxWzRdPVYuY2Fub25pY2FsKGlyKTtzZWxmLmFzc2VydEVxdWFsKFYuZnV0dXJlX3ZlcmRpY3QoKnEpLCJPUEVOIikKICBxPWxpc3QoYXJncyk7bWFudWFsPVYucGFyc2VfYnl0ZXMocVsxNF0pO21hbnVhbFsiY2hlY2tzIl1bMF1bImFuc3dlcl9saXRlcmFsc19hYnNlbnQiXT1GYWxzZTtxWzE0XT1WLmNhbm9uaWNhbChtYW51YWwpO3NlbGYuYXNzZXJ0RXF1YWwoVi5mdXR1cmVfdmVyZGljdCgqcSksIk9QRU4iKQogIHE9bGlzdChhcmdzKTtiPWNvcHkuZGVlcGNvcHkocVsxMF0pO3NyYz1uZXh0KGl0ZXIoYlsiRVhFQ1VUT1IiXVsic291cmNlcyJdKSk7YlsiRVhFQ1VUT1IiXVsic291cmNlcyJdW3NyY10rPWIiXG4jIGFuc3dlciB0YWJsZSI7cVsxMF09YjtzZWxmLmFzc2VydEVxdWFsKFYuZnV0dXJlX3ZlcmRpY3QoKnEpLCJPUEVOIikKIGRlZiB0ZXN0X3N0YWdlX2Nfcm9vdF9zY2FubmVyX2RhZ19mYWlsX2Nsb3NlZChzZWxmKToKICByb290LGZpbGVzPXNlbGYuc3ludGhldGljX3Jvb3QoKTtWLnZhbGlkYXRlX3ByZXJlZ19yb290KHJvb3QsZmlsZXMpCiAgZm9yIG11dCBpbiAobGFtYmRhIHg6eFsicGF0aHMiXS5fX3NldGl0ZW1fXyhWLlNUQUdFX0NfUEFUSFNbMF0sIjAiKjQwKSxsYW1iZGEgeDp4Ll9fc2V0aXRlbV9fKCJ0cmVlX29pZCIsIjAiKjQwKSxsYW1iZGEgeDp4Ll9fc2V0aXRlbV9fKCJjb21taXRfb2lkIiwiMCIqNDApKToKICAgcT1WLnBhcnNlX2J5dGVzKHJvb3QpO211dChxKQogICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFYuTWFuaWZlc3RFcnJvcik6Vi52YWxpZGF0ZV9wcmVyZWdfcm9vdChWLmNhbm9uaWNhbChxKSxmaWxlcykKICBnb29kPWIiaW1wb3J0IGpzb25cbmRlZiBoZWxwZXIoeCk6XG4gcmV0dXJuIGpzb24ubG9hZHMoeC5kZWNvZGUoKSlcbmRlZiBwcm9kdWNlKHBhY2tldF9ieXRlcyxtYW5pZmVzdF9ieXRlcyxpZGVudGl0eV9ieXRlcyk6XG4gcmV0dXJuIG1hbmlmZXN0X2J5dGVzXG4iO1Yuc2Nhbl9zb3VyY2UoZ29vZCkKICBhdHRhY2tzPShiImltcG9ydCBvc1xuZGVmIHByb2R1Y2UocGFja2V0X2J5dGVzLG1hbmlmZXN0X2J5dGVzLGlkZW50aXR5X2J5dGVzKTogcmV0dXJuIG1hbmlmZXN0X2J5dGVzXG4iLGIieD0xXG5kZWYgcHJvZHVjZShwYWNrZXRfYnl0ZXMsbWFuaWZlc3RfYnl0ZXMsaWRlbnRpdHlfYnl0ZXMpOiByZXR1cm4gbWFuaWZlc3RfYnl0ZXNcbiIsYiJYPWxlbihbXSlcbmRlZiBwcm9kdWNlKHBhY2tldF9ieXRlcyxtYW5pZmVzdF9ieXRlcyxpZGVudGl0eV9ieXRlcyk6IHJldHVybiBtYW5pZmVzdF9ieXRlc1xuIixiIkBzdGF0aWNtZXRob2RcbmRlZiBoZWxwZXIoKTogcmV0dXJuIDFcbmRlZiBwcm9kdWNlKHBhY2tldF9ieXRlcyxtYW5pZmVzdF9ieXRlcyxpZGVudGl0eV9ieXRlcyk6IHJldHVybiBtYW5pZmVzdF9ieXRlc1xuIixiImRlZiBwcm9kdWNlKHBhY2tldF9ieXRlcyxtYW5pZmVzdF9ieXRlcyxpZGVudGl0eV9ieXRlcyk6IHJhaXNlIFJ1bnRpbWVFcnJvcigneCcpXG4iLGIiZGVmIHByb2R1Y2UocGFja2V0X2J5dGVzLG1hbmlmZXN0X2J5dGVzLGlkZW50aXR5X2J5dGVzKTpcbiB0cnk6IHJldHVybiBtYW5pZmVzdF9ieXRlc1xuIGV4Y2VwdCBFeGNlcHRpb246IHJldHVybiBwYWNrZXRfYnl0ZXNcbiIsYiJpbXBvcnQganNvblxuZGVmIHByb2R1Y2UocGFja2V0X2J5dGVzLG1hbmlmZXN0X2J5dGVzLGlkZW50aXR5X2J5dGVzKTpcbiBqc29uLmxvYWRzPXByb2R1Y2VcbiByZXR1cm4gbWFuaWZlc3RfYnl0ZXNcbiIsYiJkZWYgcHJvZHVjZShwYWNrZXRfYnl0ZXMsbWFuaWZlc3RfYnl0ZXMsaWRlbnRpdHlfYnl0ZXMpOiByZXR1cm4gb3BlbigneCcpXG4iLGIiZGVmIHByb2R1Y2UocGFja2V0X2J5dGVzLG1hbmlmZXN0X2J5dGVzLGlkZW50aXR5X2J5dGVzKTogcmV0dXJuIG1hbmlmZXN0X2J5dGVzLl9fY2xhc3NfX1xuIixiImRlZiBmKHByb2R1Y2UpOiByZXR1cm4gcHJvZHVjZVxuZGVmIHByb2R1Y2UocGFja2V0X2J5dGVzLG1hbmlmZXN0X2J5dGVzLGlkZW50aXR5X2J5dGVzKTogcmV0dXJuIG1hbmlmZXN0X2J5dGVzXG4iLGIiZGVmIHByb2R1Y2UocGFja2V0X2J5dGVzLG1hbmlmZXN0X2J5dGVzLGlkZW50aXR5X2J5dGVzLCp4KTogcmV0dXJuIG1hbmlmZXN0X2J5dGVzXG4iKQogIGZvciBzcmMgaW4gYXR0YWNrczoKICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWLk1hbmlmZXN0RXJyb3IpOlYuc2Nhbl9zb3VyY2Uoc3JjKQogIGRhZz1jb3B5LmRlZXBjb3B5KHNlbGYubSgpWyJwcm92ZW5hbmNlIl1bImRhZyJdKTtWLnZhbGlkYXRlX2V2aWRlbmNlX2RhZyhkYWcpCiAgZm9yIG11dCBpbiAobGFtYmRhIGQ6ZFsiZWRnZXMiXS5wb3AoKSxsYW1iZGEgZDpkWyJlZGdlcyJdLmFwcGVuZCh7ImZyb20iOiJST09UIiwidG8iOiJFIn0pLGxhbWJkYSBkOmRbImVkZ2VzIl1bMF0uX19zZXRpdGVtX18oInRvIiwiTUlTU0lORyIpKToKICAgcT1jb3B5LmRlZXBjb3B5KGRhZyk7bXV0KHEpCiAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVi5NYW5pZmVzdEVycm9yKTpWLnZhbGlkYXRlX2V2aWRlbmNlX2RhZyhxKQogIGZvciBmaW5kaW5ncyBpbiAoW3siZmluZGluZ19pZCI6IkYiLCJyZXNvbHZlZCI6RmFsc2UsInNldmVyaXR5IjoiQ1JJVElDQUwiLCJ0ZXh0Ijoib3BlbiJ9XSxbXSwiYmFkIik6CiAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVi5NYW5pZmVzdEVycm9yKTpWLnZhbGlkYXRlX2ZpbmRpbmdzKGZpbmRpbmdzKQogIHNlbGYuYXNzZXJ0RXF1YWwoVi5mdXR1cmVfdmVyZGljdCgqKFtiInt9XG4iXSoxNCkpLCJPUEVOIik7c2VsZi5hc3NlcnRFcXVhbChWLmZ1dHVyZV92ZXJkaWN0KCooW2Iie31cbiJdKjE1KSksIk9QRU4iKTtzZWxmLmFzc2VydEVxdWFsKFYuZnV0dXJlX3ZlcmRpY3QoKihbYiJ7fVxuIl0qMTYpKSwiT1BFTiIpCiBkZWYgdGVzdF9nZW51aW5lX3JlY3Vyc2l2ZV9naXRfYnVuZGxlc19hbmRfYXR0YWNrcyhzZWxmKToKICByb290LGZpbGVzPXNlbGYuc3ludGhldGljX3Jvb3QoKTt4PVYucGFyc2VfYnl0ZXMocm9vdCk7YnVuZGxlPXtrOmNvcHkuZGVlcGNvcHkoeFtrXSkgZm9yIGsgaW4gKCJjb21taXRfb2lkIiwib2JqZWN0cyIsInRyZWVfb2lkIil9O1YudmFsaWRhdGVfZ2l0X2J1bmRsZShidW5kbGUsZmlsZXMsIkQwMDggc3ludGhldGljIHdpdG5lc3MiKQogIHRvcD1WLl9wYXJzZV90cmVlKG9iamVjdF9kYXRhKGJ1bmRsZSxidW5kbGVbInRyZWVfb2lkIl0pKTtzZWxmLmFzc2VydEVxdWFsKFsobSxuKSBmb3IgbSxuLF8gaW4gdG9wXSxbKCI0MDAwMCIsImRlY2lzaW9ucyIpXSk7ZGVjX29pZD10b3BbMF1bMl07c2VsZi5hc3NlcnRFcXVhbChbbiBmb3IgXyxuLF8gaW4gVi5fcGFyc2VfdHJlZShvYmplY3RfZGF0YShidW5kbGUsZGVjX29pZCkpXSxzb3J0ZWQocGF0aGxpYi5QdXJlUG9zaXhQYXRoKHApLm5hbWUgZm9yIHAgaW4gZmlsZXMpKQogIGdpdD1fX2ltcG9ydF9fKCdzaHV0aWwnKS53aGljaCgnZ2l0JykKICBpZiBnaXQ6CiAgIGZvciBvaWQsbyBpbiBidW5kbGVbIm9iamVjdHMiXS5pdGVtcygpOgogICAgZGF0YT1iYXNlNjQuYjY0ZGVjb2RlKG9bImRhdGFfYjY0Il0pO3A9c3VicHJvY2Vzcy5ydW4oW2dpdCwiaGFzaC1vYmplY3QiLCItdCIsb1sia2luZCJdLCItLXN0ZGluIl0saW5wdXQ9ZGF0YSxjYXB0dXJlX291dHB1dD1UcnVlKTtzZWxmLmFzc2VydEVxdWFsKHAucmV0dXJuY29kZSwwLHAuc3RkZXJyKTtzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnN0cmlwKCkuZGVjb2RlKCksb2lkKQogIGF0dGFja3M9W10KICBmbGF0PVYuZ2l0X2J1bmRsZSh7cDpmaWxlc1twXSBmb3IgcCBpbiBmaWxlc30sIkQwMDggc3ludGhldGljIHdpdG5lc3MiKTtyb290X2RhdGE9YiIiLmpvaW4oKCIxMDA2NDQgIitwKyJcMCIpLmVuY29kZSgpK2J5dGVzLmZyb21oZXgoVi5naXRfb2lkKCJibG9iIixmaWxlc1twXSkpIGZvciBwIGluIHNvcnRlZChmaWxlcykpO29sZD1mbGF0WyJ0cmVlX29pZCJdO25ldz1yZXBsYWNlX29iamVjdChmbGF0LG9sZCwidHJlZSIscm9vdF9kYXRhKTtmbGF0WyJ0cmVlX29pZCJdPW5ldztjb21taXQ9cmVwbGFjZV9vYmplY3QoZmxhdCxmbGF0WyJjb21taXRfb2lkIl0sImNvbW1pdCIsVi5naXRfY29tbWl0X2RhdGEobmV3LCJEMDA4IHN5bnRoZXRpYyB3aXRuZXNzIikpO2ZsYXRbImNvbW1pdF9vaWQiXT1jb21taXQ7YXR0YWNrcy5hcHBlbmQoZmxhdCkKICBmb3IgdHJlZV9kYXRhIGluIChWLmdpdF90cmVlX2RhdGEoWygiMTAwNzU1IiwiZGVjaXNpb25zIixkZWNfb2lkKV0pLFYuZ2l0X3RyZWVfZGF0YShbKCI0MDAwMCIsInoiLGRlY19vaWQpLCgiNDAwMDAiLCJhIixkZWNfb2lkKV0pLFYuZ2l0X3RyZWVfZGF0YShbKCI0MDAwMCIsImRlY2lzaW9ucyIsZGVjX29pZCksKCI0MDAwMCIsImRlY2lzaW9ucyIsZGVjX29pZCldKSxWLmdpdF90cmVlX2RhdGEoWygiMTAwNjQ0IiwiZGVjaXNpb25zIixkZWNfb2lkKV0pLGIiIik6CiAgIHE9Y29weS5kZWVwY29weShidW5kbGUpO29sZD1xWyJ0cmVlX29pZCJdO25ldz1yZXBsYWNlX29iamVjdChxLG9sZCwidHJlZSIsdHJlZV9kYXRhKTtxWyJ0cmVlX29pZCJdPW5ldztxWyJjb21taXRfb2lkIl09cmVwbGFjZV9vYmplY3QocSxxWyJjb21taXRfb2lkIl0sImNvbW1pdCIsVi5naXRfY29tbWl0X2RhdGEobmV3LCJEMDA4IHN5bnRoZXRpYyB3aXRuZXNzIikpO2F0dGFja3MuYXBwZW5kKHEpCiAgZm9yIGNvbW1pdF9kYXRhIGluICgoInRyZWUgIitidW5kbGVbInRyZWVfb2lkIl0rIlxucGFyZW50ICIrIjAiKjQwKyJcbmF1dGhvciBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAwICswMDAwXG5jb21taXR0ZXIgVEVTVF9PTkxZIDx0ZXN0QGV4YW1wbGUuaW52YWxpZD4gMCArMDAwMFxuXG5EMDA4IHN5bnRoZXRpYyB3aXRuZXNzXG4iKS5lbmNvZGUoKSwoInRyZWUgIitidW5kbGVbInRyZWVfb2lkIl0rIlxuYXV0aG9yIFggPHhAeT4gLTEgKzk5OTlcbmNvbW1pdHRlciBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAwICswMDAwXG5cbkQwMDggc3ludGhldGljIHdpdG5lc3NcbiIpLmVuY29kZSgpLCgidHJlZSAiK2J1bmRsZVsidHJlZV9vaWQiXSsiXG5hdXRob3IgVEVTVF9PTkxZIDx0ZXN0QGV4YW1wbGUuaW52YWxpZD4gMCArMDAwMFxuYXV0aG9yIFRFU1RfT05MWSA8dGVzdEBleGFtcGxlLmludmFsaWQ+IDAgKzAwMDBcbmNvbW1pdHRlciBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAwICswMDAwXG5cbkQwMDggc3ludGhldGljIHdpdG5lc3NcbiIpLmVuY29kZSgpLFYuZ2l0X2NvbW1pdF9kYXRhKGJ1bmRsZVsidHJlZV9vaWQiXSwid3JvbmcgbWVzc2FnZSIpKToKICAgcT1jb3B5LmRlZXBjb3B5KGJ1bmRsZSk7cVsiY29tbWl0X29pZCJdPXJlcGxhY2Vfb2JqZWN0KHEscVsiY29tbWl0X29pZCJdLCJjb21taXQiLGNvbW1pdF9kYXRhKTthdHRhY2tzLmFwcGVuZChxKQogIHE9Y29weS5kZWVwY29weShidW5kbGUpO2V4dHJhPWIiZXh0cmEiO29pZD1WLmdpdF9vaWQoImJsb2IiLGV4dHJhKTtxWyJvYmplY3RzIl1bb2lkXT17ImRhdGFfYjY0IjpiYXNlNjQuYjY0ZW5jb2RlKGV4dHJhKS5kZWNvZGUoKSwia2luZCI6ImJsb2IifTthdHRhY2tzLmFwcGVuZChxKQogIGZvciBxIGluIGF0dGFja3M6CiAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVi5NYW5pZmVzdEVycm9yKTpWLnZhbGlkYXRlX2dpdF9idW5kbGUocSxmaWxlcywiRDAwOCBzeW50aGV0aWMgd2l0bmVzcyIpCiAgcGF0aD0iZnV0dXJlL2QwMDhfZXhlY3V0b3JfdjMvcHJvZHVjZXIucHkiO3NyYz1wcm9kdWNlcl9zb3VyY2UoIkVYRUNVVE9SIik7Y3A9Vi5zb3VyY2VfY2hlY2twb2ludF9idW5kbGUocGF0aCxzcmMpO1YudmFsaWRhdGVfc291cmNlX2NoZWNrcG9pbnQoY3AscGF0aCxzcmMpO3NlbGYuYXNzZXJ0RXF1YWwoVi5fcGFyc2VfdHJlZShvYmplY3RfZGF0YShjcCxjcFsidHJlZV9vaWQiXSkpWzBdWzoyXSwoIjQwMDAwIiwiZnV0dXJlIikpCiAgZm9yIG11dGF0ZSBpbiAobGFtYmRhIHE6cVsib2JqZWN0cyJdLnBvcChuZXh0KG9pZCBmb3Igb2lkLG8gaW4gcVsib2JqZWN0cyJdLml0ZW1zKCkgaWYgb1sia2luZCJdPT0idHJlZSIgYW5kIG9pZCE9cVsidHJlZV9vaWQiXSkpLGxhbWJkYSBxOnFbIm9iamVjdHMiXS5fX3NldGl0ZW1fXyhWLmdpdF9vaWQoImJsb2IiLGIianVuayIpLHsiZGF0YV9iNjQiOmJhc2U2NC5iNjRlbmNvZGUoYiJqdW5rIikuZGVjb2RlKCksImtpbmQiOiJibG9iIn0pLGxhbWJkYSBxOnEuX19zZXRpdGVtX18oInBhdGgiLCJmdXR1cmUvb3RoZXIucHkiKSk6CiAgIHE9Y29weS5kZWVwY29weShjcCk7bXV0YXRlKHEpCiAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVi5NYW5pZmVzdEVycm9yKTpWLnZhbGlkYXRlX3NvdXJjZV9jaGVja3BvaW50KHEscGF0aCxzcmMpCiBkZWYgdGVzdF9zdGFnZV9jX3YzX2NvbnRyYWN0X25vX2FjdHVhbF9hcnRpZmFjdHMoc2VsZik6CiAgdGV4dD0oSEVSRS8iZDAwOF9tYW5pZmVzdC5weSIpLnJlYWRfdGV4dCgpKyhIRVJFLyJkMDA4LWJ1ZGdldC1tYW5pZmVzdC12MS5qc29uIikucmVhZF90ZXh0KCk7CiAgZm9yIHRva2VuIGluICgiRDAwOC1QUkVSRUctUk9PVC0zIiwiRDAwOC1JREVOVElUWS0zIiwiRDAwOC1SRVZJRVdFUi1JREVOVElUWS0zIiwiRDAwOC1SRVZJRVctMyIsIkQwMDgtSVItMyIsIkQwMDgtUEYtMyIsIkQwMDgtRlJFRVpFLTMiLCJEMDA4LU8tMyIsIkQwMDgtVi0zIiwiRDAwOC1FLTMiLCJEMDA4LU1BTlVBTC1DT1BZLUZBQ1RTLTMiKTpzZWxmLmFzc2VydEluKHRva2VuLHRleHQpCiAgbT1zZWxmLm0oKTtzZWxmLmFzc2VydEVxdWFsKG1bInByb3ZlbmFuY2UiXVsic3RhdHVzIl0sIk5PX1JPT1RfT1JfRVZJREVOQ0VfWUVUIik7c2VsZi5hc3NlcnRGYWxzZShtWyJwcm92ZW5hbmNlX3F1YWxpZmllZCJdKTtzZWxmLmFzc2VydEVxdWFsKFYuZnV0dXJlX3ZlcmRpY3QoKSwiT1BFTiIpCiAgZGVmcz1bbi5uYW1lIGZvciBuIGluIGFzdC5wYXJzZSgoSEVSRS8iZDAwOF9tYW5pZmVzdC5weSIpLnJlYWRfdGV4dCgpKS5ib2R5IGlmIGlzaW5zdGFuY2UobiwoYXN0LkZ1bmN0aW9uRGVmLGFzdC5DbGFzc0RlZikpXTtzZWxmLmFzc2VydEVxdWFsKGxlbihkZWZzKSxsZW4oc2V0KGRlZnMpKSkKaWYgX19uYW1lX189PSJfX21haW5fXyI6dW5pdHRlc3QubWFpbigpCg==","kind":"blob"},"b8beb274bcfa4aeb64e7bddcd71c9a14b18eda85":{"data_b64":"MTAwNjQ0IEQtMDA4LVBBQ0tFVC5tZACI7UuZecCht49AjsEgwe66pJ4coTEwMDY0NCBkMDA4LWJ1ZGdldC1tYW5pZmVzdC12MS5qc29uAO5yfXJmWUkndYIFfIOi8eNaS7IpMTAwNjQ0IGQwMDhfbWFuaWZlc3QucHkALaOh34PqL4bHo1WIXjDDz2sd6o4xMDA2NDQgdGVzdF9kMDA4X21hbmlmZXN0LnB5AKQIHsxkgbLAAlsNW8Vx+nmOTfFQ","kind":"tree"},"d07faf4aaf903af23a3d3892a0668cba7746de36":{"data_b64":"dHJlZSA4ZDc1ZDFkYTRmOWRhMzJhN2ZiMjk1ZjQyYWIwNmM1OWU5M2Q0MmY0CmF1dGhvciBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAwICswMDAwCmNvbW1pdHRlciBURVNUX09OTFkgPHRlc3RAZXhhbXBsZS5pbnZhbGlkPiAwICswMDAwCgpEMDA4IGNhbm9uaWNhbCBwb3N0LWNvbW1pdCByb290Cg==","kind":"commit"},"ee727d72665949277582057c83a2f1e35a4bb229":{"data_b64":"eyJhbGdlYnJhIjp7ImlkIjoiVFlQRURfQlVER0VUX0FMR0VCUkEiLCJsYXdfa2luZHMiOlsiQ09OU1VNQUJMRSIsIlBFQUsiLCJSQVRFIiwiTEVBU0UiLCJTSEFSRSJdLCJwYXJlbnRfY29tcGF0aWJpbGl0eSI6W10sInJlcHJlc2VudGF0aW9uX25ldXRyYWwiOnRydWV9LCJiOCI6eyJsYXdzIjp7IkwwMSI6InJlc2VydmF0aW9uIGFjcXVpc2l0aW9uL2NvbW1pdC9yZWxlYXNlIiwiTDAyIjoicGFydGlhbC9mYWlsZWQgY29uc3VtcHRpb24iLCJMMDMiOiJyZWZ1bmQvbm9ucmVmdW5kIiwiTDA0IjoibGVhc2UgZ3JhbnQvZXhwaXJ5L3JlbmV3L3Jldm9rZSIsIkwwNSI6InNoYXJlL3BlYWsvcmF0ZSIsIkwwNiI6InBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiIsIkwwNyI6ImNvbmN1cnJlbnQgcmVzZXJ2YXRpb24iLCJMMDgiOiJjb250aW5nZW5jeS9lc2Nyb3cvb3ZlcnJ1biIsIkwwOSI6ImNhbmNlbGxhdGlvbiB0aW1pbmciLCJMMTAiOiJhdHRyaWJ1dGlvbi9yZWNvbmNpbGlhdGlvbiIsIkwxMSI6InByb3ZpZGVyIGNoYXJnZSBkaXN0aW5jdCBmcm9tIHNlbWFudGljIGNvbnN1bXB0aW9uIiwiTDEyIjoibm8gYXV0b21hdGljIHJlZnVuZCBmb3IgZmFpbHVyZSwgY2FuY2VsbGF0aW9uLCBsYXRlIG91dHB1dCwgb3IgZGlzY2FyZGVkIFdvcmxkIHdvcmsifSwibWF0cml4IjpbeyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlEwMSIsInJlYXNvbiI6IlEwMS9MMDEgQVBQTElDQUJMRTogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5OyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTAxIiwicmVhc29uIjoiUTAxL0wwMiBBUFBMSUNBQkxFOiBjb21wdXRlIHN0b2NrIGFuZCBjb25jdXJyZW50IGV4ZWN1dGlvbiBvY2N1cGFuY3k7IHBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAzIiwicXVhbnRpdHkiOiJRMDEiLCJyZWFzb24iOiJRMDEvTDAzIEFQUExJQ0FCTEU6IGNvbXB1dGUgc3RvY2sgYW5kIGNvbmN1cnJlbnQgZXhlY3V0aW9uIG9jY3VwYW5jeTsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6Ik5fQSIsImxhdyI6IkwwNCIsInF1YW50aXR5IjoiUTAxIiwicmVhc29uIjoiUTAxL0wwNCBOX0EgcmVwcmVzZW50YXRpb24tbmV1dHJhbDogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5IGhhcyBubyBsZWFzZSBncmFudC9leHBpcnkvcmVuZXcvcmV2b2tlIHN0YXRlIG9yIGxpZmVjeWNsZTsgbm8gc3RvcmFnZSwgc2NoZWR1bGVyLCBvciBtZWNoYW5pc20gaW5mZXJlbmNlIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDUiLCJxdWFudGl0eSI6IlEwMSIsInJlYXNvbiI6IlEwMS9MMDUgQVBQTElDQUJMRTogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5OyBzaGFyZSBhbGxvY2F0aW9uLCBwZWFrIG9jY3VwYW5jeSwgb3IgcmF0ZSBidWNrZXQgZmFsc2lmaWVkIGJ5IGNhcGFjaXR5IGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA2IiwicXVhbnRpdHkiOiJRMDEiLCJyZWFzb24iOiJRMDEvTDA2IEFQUExJQ0FCTEU6IGNvbXB1dGUgc3RvY2sgYW5kIGNvbmN1cnJlbnQgZXhlY3V0aW9uIG9jY3VwYW5jeTsgcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIGZhbHNpZmllZCBieSByZW1pbnQgb3Igb3ZlcnN1YnNjcmlwdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMDEiLCJyZWFzb24iOiJRMDEvTDA3IEFQUExJQ0FCTEU6IGNvbXB1dGUgc3RvY2sgYW5kIGNvbmN1cnJlbnQgZXhlY3V0aW9uIG9jY3VwYW5jeTsgY29uY3VycmVudCByZXNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgYWRtaXR0aW5nIG92ZXJsYXBwaW5nIGNhcGFjaXR5IGFib3ZlIGNhcCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA4IiwicXVhbnRpdHkiOiJRMDEiLCJyZWFzb24iOiJRMDEvTDA4IEFQUExJQ0FCTEU6IGNvbXB1dGUgc3RvY2sgYW5kIGNvbmN1cnJlbnQgZXhlY3V0aW9uIG9jY3VwYW5jeTsgZXNjcm93L2NvbnRpbmdlbmN5L292ZXJydW4gZmFsc2lmaWVkIGJ5IHVucmVzZXJ2ZWQgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDkiLCJxdWFudGl0eSI6IlEwMSIsInJlYXNvbiI6IlEwMS9MMDkgQVBQTElDQUJMRTogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5OyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlEwMSIsInJlYXNvbiI6IlEwMS9MMTAgQVBQTElDQUJMRTogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5OyBhY3Rvci9jb21taXQvd29ybGQvcmVzb3VyY2UgYXR0cmlidXRpb24gYW5kIHJlY29uY2lsaWF0aW9uIGZhbHNpZmllZCBieSBqb2luIG1pc21hdGNoIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTEiLCJxdWFudGl0eSI6IlEwMSIsInJlYXNvbiI6IlEwMS9MMTEgQVBQTElDQUJMRTogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5IGlzIGEgc2VtYW50aWMgcXVhbnRpdHkgZGlzdGluY3QgZnJvbSBwcm92aWRlciBhY2NvdW50IGNoYXJnZSBmYWN0czsgbmVpdGhlciB2YWx1ZSwgdW5pdCwgbGlmZWN5Y2xlLCBub3IgcmVjb25jaWxpYXRpb24gbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTIiLCJxdWFudGl0eSI6IlEwMSIsInJlYXNvbiI6IlEwMS9MMTIgQVBQTElDQUJMRTogY29tcHV0ZSBzdG9jayBhbmQgY29uY3VycmVudCBleGVjdXRpb24gb2NjdXBhbmN5OyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTAyIiwicmVhc29uIjoiUTAyL0wwMSBBUFBMSUNBQkxFOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlOyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTAyIiwicmVhc29uIjoiUTAyL0wwMiBBUFBMSUNBQkxFOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTAyIiwicmVhc29uIjoiUTAyL0wwMyBBUFBMSUNBQkxFOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA0IiwicXVhbnRpdHkiOiJRMDIiLCJyZWFzb24iOiJRMDIvTDA0IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlIGhhcyBubyBsZWFzZSBncmFudC9leHBpcnkvcmVuZXcvcmV2b2tlIHN0YXRlIG9yIGxpZmVjeWNsZTsgbm8gc3RvcmFnZSwgc2NoZWR1bGVyLCBvciBtZWNoYW5pc20gaW5mZXJlbmNlIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDUiLCJxdWFudGl0eSI6IlEwMiIsInJlYXNvbiI6IlEwMi9MMDUgQVBQTElDQUJMRTogdG9rZW4gc3RvY2sgYW5kIGlycmV2ZXJzaWJsZSBnZW5lcmF0aW9uIHVzZTsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA2IiwicXVhbnRpdHkiOiJRMDIiLCJyZWFzb24iOiJRMDIvTDA2IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlIGhhcyBubyBwYXJlbnQtY2hpbGQvc2libGluZyBjb25zZXJ2YXRpb24gc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNyIsInF1YW50aXR5IjoiUTAyIiwicmVhc29uIjoiUTAyL0wwNyBBUFBMSUNBQkxFOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlOyBjb25jdXJyZW50IHJlc2VydmF0aW9uIGZhbHNpZmllZCBieSBhZG1pdHRpbmcgb3ZlcmxhcHBpbmcgY2FwYWNpdHkgYWJvdmUgY2FwIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDgiLCJxdWFudGl0eSI6IlEwMiIsInJlYXNvbiI6IlEwMi9MMDggQVBQTElDQUJMRTogdG9rZW4gc3RvY2sgYW5kIGlycmV2ZXJzaWJsZSBnZW5lcmF0aW9uIHVzZTsgZXNjcm93L2NvbnRpbmdlbmN5L292ZXJydW4gZmFsc2lmaWVkIGJ5IHVucmVzZXJ2ZWQgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDkiLCJxdWFudGl0eSI6IlEwMiIsInJlYXNvbiI6IlEwMi9MMDkgQVBQTElDQUJMRTogdG9rZW4gc3RvY2sgYW5kIGlycmV2ZXJzaWJsZSBnZW5lcmF0aW9uIHVzZTsgY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHRpbWluZyBmYWxzaWZpZWQgYnkgcHJlbWF0dXJlIHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEwIiwicXVhbnRpdHkiOiJRMDIiLCJyZWFzb24iOiJRMDIvTDEwIEFQUExJQ0FCTEU6IHRva2VuIHN0b2NrIGFuZCBpcnJldmVyc2libGUgZ2VuZXJhdGlvbiB1c2U7IGFjdG9yL2NvbW1pdC93b3JsZC9yZXNvdXJjZSBhdHRyaWJ1dGlvbiBhbmQgcmVjb25jaWxpYXRpb24gZmFsc2lmaWVkIGJ5IGpvaW4gbWlzbWF0Y2gifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMSIsInF1YW50aXR5IjoiUTAyIiwicmVhc29uIjoiUTAyL0wxMSBBUFBMSUNBQkxFOiB0b2tlbiBzdG9jayBhbmQgaXJyZXZlcnNpYmxlIGdlbmVyYXRpb24gdXNlIGlzIGEgc2VtYW50aWMgcXVhbnRpdHkgZGlzdGluY3QgZnJvbSBwcm92aWRlciBhY2NvdW50IGNoYXJnZSBmYWN0czsgbmVpdGhlciB2YWx1ZSwgdW5pdCwgbGlmZWN5Y2xlLCBub3IgcmVjb25jaWxpYXRpb24gbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTIiLCJxdWFudGl0eSI6IlEwMiIsInJlYXNvbiI6IlEwMi9MMTIgQVBQTElDQUJMRTogdG9rZW4gc3RvY2sgYW5kIGlycmV2ZXJzaWJsZSBnZW5lcmF0aW9uIHVzZTsgZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlEwMyIsInJlYXNvbiI6IlEwMy9MMDEgQVBQTElDQUJMRTogdGltZSBsZWFzZS9leHBpcnkgYW5kIGVsYXBzZWQtcmF0ZSB3aW5kb3dzOyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTAzIiwicmVhc29uIjoiUTAzL0wwMiBBUFBMSUNBQkxFOiB0aW1lIGxlYXNlL2V4cGlyeSBhbmQgZWxhcHNlZC1yYXRlIHdpbmRvd3M7IHBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAzIiwicXVhbnRpdHkiOiJRMDMiLCJyZWFzb24iOiJRMDMvTDAzIEFQUExJQ0FCTEU6IHRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93czsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDQiLCJxdWFudGl0eSI6IlEwMyIsInJlYXNvbiI6IlEwMy9MMDQgQVBQTElDQUJMRTogdGltZSBsZWFzZS9leHBpcnkgYW5kIGVsYXBzZWQtcmF0ZSB3aW5kb3dzOyBsZWFzZSBncmFudC9vY2N1cGFuY3kvZXhwaXJ5L2Vwb2NoL3Jldm9rZSBsaWZlY3ljbGUgZmFsc2lmaWVkIGJ5IHN0YWxlIGF1dGhvcml0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMDMiLCJyZWFzb24iOiJRMDMvTDA1IEFQUExJQ0FCTEU6IHRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93czsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNiIsInF1YW50aXR5IjoiUTAzIiwicmVhc29uIjoiUTAzL0wwNiBBUFBMSUNBQkxFOiB0aW1lIGxlYXNlL2V4cGlyeSBhbmQgZWxhcHNlZC1yYXRlIHdpbmRvd3M7IHBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgcmVtaW50IG9yIG92ZXJzdWJzY3JpcHRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNyIsInF1YW50aXR5IjoiUTAzIiwicmVhc29uIjoiUTAzL0wwNyBBUFBMSUNBQkxFOiB0aW1lIGxlYXNlL2V4cGlyeSBhbmQgZWxhcHNlZC1yYXRlIHdpbmRvd3M7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTAzIiwicmVhc29uIjoiUTAzL0wwOCBBUFBMSUNBQkxFOiB0aW1lIGxlYXNlL2V4cGlyeSBhbmQgZWxhcHNlZC1yYXRlIHdpbmRvd3M7IGVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA5IiwicXVhbnRpdHkiOiJRMDMiLCJyZWFzb24iOiJRMDMvTDA5IEFQUExJQ0FCTEU6IHRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93czsgY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHRpbWluZyBmYWxzaWZpZWQgYnkgcHJlbWF0dXJlIHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEwIiwicXVhbnRpdHkiOiJRMDMiLCJyZWFzb24iOiJRMDMvTDEwIEFQUExJQ0FCTEU6IHRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93czsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMDMiLCJyZWFzb24iOiJRMDMvTDExIEFQUExJQ0FCTEU6IHRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93cyBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEyIiwicXVhbnRpdHkiOiJRMDMiLCJyZWFzb24iOiJRMDMvTDEyIEFQUExJQ0FCTEU6IHRpbWUgbGVhc2UvZXhwaXJ5IGFuZCBlbGFwc2VkLXJhdGUgd2luZG93czsgZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlEwNCIsInJlYXNvbiI6IlEwNC9MMDEgQVBQTElDQUJMRTogZW5lcmd5IHN0b2NrIGFuZCBtZXRlcmVkIGlycmV2ZXJzaWJsZSB1c2U7IHJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAyIiwicXVhbnRpdHkiOiJRMDQiLCJyZWFzb24iOiJRMDQvTDAyIEFQUExJQ0FCTEU6IGVuZXJneSBzdG9jayBhbmQgbWV0ZXJlZCBpcnJldmVyc2libGUgdXNlOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTA0IiwicmVhc29uIjoiUTA0L0wwMyBBUFBMSUNBQkxFOiBlbmVyZ3kgc3RvY2sgYW5kIG1ldGVyZWQgaXJyZXZlcnNpYmxlIHVzZTsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6Ik5fQSIsImxhdyI6IkwwNCIsInF1YW50aXR5IjoiUTA0IiwicmVhc29uIjoiUTA0L0wwNCBOX0EgcmVwcmVzZW50YXRpb24tbmV1dHJhbDogZW5lcmd5IHN0b2NrIGFuZCBtZXRlcmVkIGlycmV2ZXJzaWJsZSB1c2UgaGFzIG5vIGxlYXNlIGdyYW50L2V4cGlyeS9yZW5ldy9yZXZva2Ugc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTA0IiwicmVhc29uIjoiUTA0L0wwNSBBUFBMSUNBQkxFOiBlbmVyZ3kgc3RvY2sgYW5kIG1ldGVyZWQgaXJyZXZlcnNpYmxlIHVzZTsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA2IiwicXVhbnRpdHkiOiJRMDQiLCJyZWFzb24iOiJRMDQvTDA2IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiBlbmVyZ3kgc3RvY2sgYW5kIG1ldGVyZWQgaXJyZXZlcnNpYmxlIHVzZSBoYXMgbm8gcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIHN0YXRlIG9yIGxpZmVjeWNsZTsgbm8gc3RvcmFnZSwgc2NoZWR1bGVyLCBvciBtZWNoYW5pc20gaW5mZXJlbmNlIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDciLCJxdWFudGl0eSI6IlEwNCIsInJlYXNvbiI6IlEwNC9MMDcgQVBQTElDQUJMRTogZW5lcmd5IHN0b2NrIGFuZCBtZXRlcmVkIGlycmV2ZXJzaWJsZSB1c2U7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTA0IiwicmVhc29uIjoiUTA0L0wwOCBBUFBMSUNBQkxFOiBlbmVyZ3kgc3RvY2sgYW5kIG1ldGVyZWQgaXJyZXZlcnNpYmxlIHVzZTsgZXNjcm93L2NvbnRpbmdlbmN5L292ZXJydW4gZmFsc2lmaWVkIGJ5IHVucmVzZXJ2ZWQgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDkiLCJxdWFudGl0eSI6IlEwNCIsInJlYXNvbiI6IlEwNC9MMDkgQVBQTElDQUJMRTogZW5lcmd5IHN0b2NrIGFuZCBtZXRlcmVkIGlycmV2ZXJzaWJsZSB1c2U7IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSB0aW1pbmcgZmFsc2lmaWVkIGJ5IHByZW1hdHVyZSByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMCIsInF1YW50aXR5IjoiUTA0IiwicmVhc29uIjoiUTA0L0wxMCBBUFBMSUNBQkxFOiBlbmVyZ3kgc3RvY2sgYW5kIG1ldGVyZWQgaXJyZXZlcnNpYmxlIHVzZTsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMDQiLCJyZWFzb24iOiJRMDQvTDExIEFQUExJQ0FCTEU6IGVuZXJneSBzdG9jayBhbmQgbWV0ZXJlZCBpcnJldmVyc2libGUgdXNlIGlzIGEgc2VtYW50aWMgcXVhbnRpdHkgZGlzdGluY3QgZnJvbSBwcm92aWRlciBhY2NvdW50IGNoYXJnZSBmYWN0czsgbmVpdGhlciB2YWx1ZSwgdW5pdCwgbGlmZWN5Y2xlLCBub3IgcmVjb25jaWxpYXRpb24gbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTIiLCJxdWFudGl0eSI6IlEwNCIsInJlYXNvbiI6IlEwNC9MMTIgQVBQTElDQUJMRTogZW5lcmd5IHN0b2NrIGFuZCBtZXRlcmVkIGlycmV2ZXJzaWJsZSB1c2U7IGZhaWx1cmUvY2FuY2VsL2xhdGUvZGlzY2FyZCBub25yZWZ1bmQgZmFsc2lmaWVkIGJ5IGF1dG9tYXRpYyByZXN0b3JhdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAxIiwicXVhbnRpdHkiOiJRMDUiLCJyZWFzb24iOiJRMDUvTDAxIEFQUExJQ0FCTEU6IHByb3ZpZGVyIGFjY291bnQgZXN0aW1hdGUtdG8tc2V0dGxlbWVudCBmYWN0czsgcmVzZXJ2ZWQvZnJlZS9hY3F1aXJlZC9yZWxlYXNlZCBzdGF0ZSBmYWxzaWZpZWQgYnkgYW4gdW5iYWxhbmNlZCB0cmFuc2l0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDIiLCJxdWFudGl0eSI6IlEwNSIsInJlYXNvbiI6IlEwNS9MMDIgQVBQTElDQUJMRTogcHJvdmlkZXIgYWNjb3VudCBlc3RpbWF0ZS10by1zZXR0bGVtZW50IGZhY3RzOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTA1IiwicmVhc29uIjoiUTA1L0wwMyBBUFBMSUNBQkxFOiBwcm92aWRlciBhY2NvdW50IGVzdGltYXRlLXRvLXNldHRsZW1lbnQgZmFjdHM7IHJlZnVuZGFibGUvbm9ucmVmdW5kYWJsZSBwYXJ0aXRpb24gZmFsc2lmaWVkIGJ5IGltcGxpY2l0IHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJOX0EiLCJsYXciOiJMMDQiLCJxdWFudGl0eSI6IlEwNSIsInJlYXNvbiI6IlEwNS9MMDQgTl9BIHJlcHJlc2VudGF0aW9uLW5ldXRyYWw6IHByb3ZpZGVyIGFjY291bnQgZXN0aW1hdGUtdG8tc2V0dGxlbWVudCBmYWN0cyBoYXMgbm8gbGVhc2UgZ3JhbnQvZXhwaXJ5L3JlbmV3L3Jldm9rZSBzdGF0ZSBvciBsaWZlY3ljbGU7IG5vIHN0b3JhZ2UsIHNjaGVkdWxlciwgb3IgbWVjaGFuaXNtIGluZmVyZW5jZSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMDUiLCJyZWFzb24iOiJRMDUvTDA1IEFQUExJQ0FCTEU6IHByb3ZpZGVyIGFjY291bnQgZXN0aW1hdGUtdG8tc2V0dGxlbWVudCBmYWN0czsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA2IiwicXVhbnRpdHkiOiJRMDUiLCJyZWFzb24iOiJRMDUvTDA2IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiBwcm92aWRlciBhY2NvdW50IGVzdGltYXRlLXRvLXNldHRsZW1lbnQgZmFjdHMgaGFzIG5vIHBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiBzdGF0ZSBvciBsaWZlY3ljbGU7IG5vIHN0b3JhZ2UsIHNjaGVkdWxlciwgb3IgbWVjaGFuaXNtIGluZmVyZW5jZSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMDUiLCJyZWFzb24iOiJRMDUvTDA3IEFQUExJQ0FCTEU6IHByb3ZpZGVyIGFjY291bnQgZXN0aW1hdGUtdG8tc2V0dGxlbWVudCBmYWN0czsgY29uY3VycmVudCByZXNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgYWRtaXR0aW5nIG92ZXJsYXBwaW5nIGNhcGFjaXR5IGFib3ZlIGNhcCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA4IiwicXVhbnRpdHkiOiJRMDUiLCJyZWFzb24iOiJRMDUvTDA4IEFQUExJQ0FCTEU6IHByb3ZpZGVyIGFjY291bnQgZXN0aW1hdGUtdG8tc2V0dGxlbWVudCBmYWN0czsgZXNjcm93L2NvbnRpbmdlbmN5L292ZXJydW4gZmFsc2lmaWVkIGJ5IHVucmVzZXJ2ZWQgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDkiLCJxdWFudGl0eSI6IlEwNSIsInJlYXNvbiI6IlEwNS9MMDkgQVBQTElDQUJMRTogcHJvdmlkZXIgYWNjb3VudCBlc3RpbWF0ZS10by1zZXR0bGVtZW50IGZhY3RzOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlEwNSIsInJlYXNvbiI6IlEwNS9MMTAgQVBQTElDQUJMRTogcHJvdmlkZXIgYWNjb3VudCBlc3RpbWF0ZS10by1zZXR0bGVtZW50IGZhY3RzOyBhY3Rvci9jb21taXQvd29ybGQvcmVzb3VyY2UgYXR0cmlidXRpb24gYW5kIHJlY29uY2lsaWF0aW9uIGZhbHNpZmllZCBieSBqb2luIG1pc21hdGNoIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTEiLCJxdWFudGl0eSI6IlEwNSIsInJlYXNvbiI6IlEwNS9MMTEgQVBQTElDQUJMRTogcHJvdmlkZXIgYWNjb3VudCBlc3RpbWF0ZS10by1zZXR0bGVtZW50IGZhY3RzIGlzIGEgc2VtYW50aWMgcXVhbnRpdHkgZGlzdGluY3QgZnJvbSBwcm92aWRlciBhY2NvdW50IGNoYXJnZSBmYWN0czsgbmVpdGhlciB2YWx1ZSwgdW5pdCwgbGlmZWN5Y2xlLCBub3IgcmVjb25jaWxpYXRpb24gbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTIiLCJxdWFudGl0eSI6IlEwNSIsInJlYXNvbiI6IlEwNS9MMTIgQVBQTElDQUJMRTogcHJvdmlkZXIgYWNjb3VudCBlc3RpbWF0ZS10by1zZXR0bGVtZW50IGZhY3RzOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTA2IiwicmVhc29uIjoiUTA2L0wwMSBBUFBMSUNBQkxFOiBjb250ZXh0LXN0b3JhZ2Ugc3RvY2ssIHJlc2VydmF0aW9uLCBldmljdGlvbiBhbmQgcmV1c2U7IHJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAyIiwicXVhbnRpdHkiOiJRMDYiLCJyZWFzb24iOiJRMDYvTDAyIEFQUExJQ0FCTEU6IGNvbnRleHQtc3RvcmFnZSBzdG9jaywgcmVzZXJ2YXRpb24sIGV2aWN0aW9uIGFuZCByZXVzZTsgcGFydGlhbCBvciBmYWlsZWQgdXNlIGZhbHNpZmllZCBieSBlcmFzaW5nIGluY3VycmVkIHF1YW50aXR5In0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDMiLCJxdWFudGl0eSI6IlEwNiIsInJlYXNvbiI6IlEwNi9MMDMgQVBQTElDQUJMRTogY29udGV4dC1zdG9yYWdlIHN0b2NrLCByZXNlcnZhdGlvbiwgZXZpY3Rpb24gYW5kIHJldXNlOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA0IiwicXVhbnRpdHkiOiJRMDYiLCJyZWFzb24iOiJRMDYvTDA0IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiBjb250ZXh0LXN0b3JhZ2Ugc3RvY2ssIHJlc2VydmF0aW9uLCBldmljdGlvbiBhbmQgcmV1c2UgaGFzIG5vIGxlYXNlIGdyYW50L2V4cGlyeS9yZW5ldy9yZXZva2Ugc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTA2IiwicmVhc29uIjoiUTA2L0wwNSBBUFBMSUNBQkxFOiBjb250ZXh0LXN0b3JhZ2Ugc3RvY2ssIHJlc2VydmF0aW9uLCBldmljdGlvbiBhbmQgcmV1c2U7IHNoYXJlIGFsbG9jYXRpb24sIHBlYWsgb2NjdXBhbmN5LCBvciByYXRlIGJ1Y2tldCBmYWxzaWZpZWQgYnkgY2FwYWNpdHkgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6Ik5fQSIsImxhdyI6IkwwNiIsInF1YW50aXR5IjoiUTA2IiwicmVhc29uIjoiUTA2L0wwNiBOX0EgcmVwcmVzZW50YXRpb24tbmV1dHJhbDogY29udGV4dC1zdG9yYWdlIHN0b2NrLCByZXNlcnZhdGlvbiwgZXZpY3Rpb24gYW5kIHJldXNlIGhhcyBubyBwYXJlbnQtY2hpbGQvc2libGluZyBjb25zZXJ2YXRpb24gc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNyIsInF1YW50aXR5IjoiUTA2IiwicmVhc29uIjoiUTA2L0wwNyBBUFBMSUNBQkxFOiBjb250ZXh0LXN0b3JhZ2Ugc3RvY2ssIHJlc2VydmF0aW9uLCBldmljdGlvbiBhbmQgcmV1c2U7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTA2IiwicmVhc29uIjoiUTA2L0wwOCBBUFBMSUNBQkxFOiBjb250ZXh0LXN0b3JhZ2Ugc3RvY2ssIHJlc2VydmF0aW9uLCBldmljdGlvbiBhbmQgcmV1c2U7IGVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA5IiwicXVhbnRpdHkiOiJRMDYiLCJyZWFzb24iOiJRMDYvTDA5IEFQUExJQ0FCTEU6IGNvbnRleHQtc3RvcmFnZSBzdG9jaywgcmVzZXJ2YXRpb24sIGV2aWN0aW9uIGFuZCByZXVzZTsgY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHRpbWluZyBmYWxzaWZpZWQgYnkgcHJlbWF0dXJlIHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEwIiwicXVhbnRpdHkiOiJRMDYiLCJyZWFzb24iOiJRMDYvTDEwIEFQUExJQ0FCTEU6IGNvbnRleHQtc3RvcmFnZSBzdG9jaywgcmVzZXJ2YXRpb24sIGV2aWN0aW9uIGFuZCByZXVzZTsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMDYiLCJyZWFzb24iOiJRMDYvTDExIEFQUExJQ0FCTEU6IGNvbnRleHQtc3RvcmFnZSBzdG9jaywgcmVzZXJ2YXRpb24sIGV2aWN0aW9uIGFuZCByZXVzZSBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEyIiwicXVhbnRpdHkiOiJRMDYiLCJyZWFzb24iOiJRMDYvTDEyIEFQUExJQ0FCTEU6IGNvbnRleHQtc3RvcmFnZSBzdG9jaywgcmVzZXJ2YXRpb24sIGV2aWN0aW9uIGFuZCByZXVzZTsgZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlEwNyIsInJlYXNvbiI6IlEwNy9MMDEgQVBQTElDQUJMRTogcmV0cmlldmFsIHJlcXVlc3QgcmF0ZSwgcmVzZXJ2ZWQgc2VydmljZSBhbmQgZGVsaXZlcmVkIHVzZTsgcmVzZXJ2ZWQvZnJlZS9hY3F1aXJlZC9yZWxlYXNlZCBzdGF0ZSBmYWxzaWZpZWQgYnkgYW4gdW5iYWxhbmNlZCB0cmFuc2l0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDIiLCJxdWFudGl0eSI6IlEwNyIsInJlYXNvbiI6IlEwNy9MMDIgQVBQTElDQUJMRTogcmV0cmlldmFsIHJlcXVlc3QgcmF0ZSwgcmVzZXJ2ZWQgc2VydmljZSBhbmQgZGVsaXZlcmVkIHVzZTsgcGFydGlhbCBvciBmYWlsZWQgdXNlIGZhbHNpZmllZCBieSBlcmFzaW5nIGluY3VycmVkIHF1YW50aXR5In0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDMiLCJxdWFudGl0eSI6IlEwNyIsInJlYXNvbiI6IlEwNy9MMDMgQVBQTElDQUJMRTogcmV0cmlldmFsIHJlcXVlc3QgcmF0ZSwgcmVzZXJ2ZWQgc2VydmljZSBhbmQgZGVsaXZlcmVkIHVzZTsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDQiLCJxdWFudGl0eSI6IlEwNyIsInJlYXNvbiI6IlEwNy9MMDQgQVBQTElDQUJMRTogcmV0cmlldmFsIHJlcXVlc3QgcmF0ZSwgcmVzZXJ2ZWQgc2VydmljZSBhbmQgZGVsaXZlcmVkIHVzZTsgbGVhc2UgZ3JhbnQvb2NjdXBhbmN5L2V4cGlyeS9lcG9jaC9yZXZva2UgbGlmZWN5Y2xlIGZhbHNpZmllZCBieSBzdGFsZSBhdXRob3JpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTA3IiwicmVhc29uIjoiUTA3L0wwNSBBUFBMSUNBQkxFOiByZXRyaWV2YWwgcmVxdWVzdCByYXRlLCByZXNlcnZlZCBzZXJ2aWNlIGFuZCBkZWxpdmVyZWQgdXNlOyBzaGFyZSBhbGxvY2F0aW9uLCBwZWFrIG9jY3VwYW5jeSwgb3IgcmF0ZSBidWNrZXQgZmFsc2lmaWVkIGJ5IGNhcGFjaXR5IGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJOX0EiLCJsYXciOiJMMDYiLCJxdWFudGl0eSI6IlEwNyIsInJlYXNvbiI6IlEwNy9MMDYgTl9BIHJlcHJlc2VudGF0aW9uLW5ldXRyYWw6IHJldHJpZXZhbCByZXF1ZXN0IHJhdGUsIHJlc2VydmVkIHNlcnZpY2UgYW5kIGRlbGl2ZXJlZCB1c2UgaGFzIG5vIHBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiBzdGF0ZSBvciBsaWZlY3ljbGU7IG5vIHN0b3JhZ2UsIHNjaGVkdWxlciwgb3IgbWVjaGFuaXNtIGluZmVyZW5jZSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMDciLCJyZWFzb24iOiJRMDcvTDA3IEFQUExJQ0FCTEU6IHJldHJpZXZhbCByZXF1ZXN0IHJhdGUsIHJlc2VydmVkIHNlcnZpY2UgYW5kIGRlbGl2ZXJlZCB1c2U7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTA3IiwicmVhc29uIjoiUTA3L0wwOCBBUFBMSUNBQkxFOiByZXRyaWV2YWwgcmVxdWVzdCByYXRlLCByZXNlcnZlZCBzZXJ2aWNlIGFuZCBkZWxpdmVyZWQgdXNlOyBlc2Nyb3cvY29udGluZ2VuY3kvb3ZlcnJ1biBmYWxzaWZpZWQgYnkgdW5yZXNlcnZlZCBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOSIsInF1YW50aXR5IjoiUTA3IiwicmVhc29uIjoiUTA3L0wwOSBBUFBMSUNBQkxFOiByZXRyaWV2YWwgcmVxdWVzdCByYXRlLCByZXNlcnZlZCBzZXJ2aWNlIGFuZCBkZWxpdmVyZWQgdXNlOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlEwNyIsInJlYXNvbiI6IlEwNy9MMTAgQVBQTElDQUJMRTogcmV0cmlldmFsIHJlcXVlc3QgcmF0ZSwgcmVzZXJ2ZWQgc2VydmljZSBhbmQgZGVsaXZlcmVkIHVzZTsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMDciLCJyZWFzb24iOiJRMDcvTDExIEFQUExJQ0FCTEU6IHJldHJpZXZhbCByZXF1ZXN0IHJhdGUsIHJlc2VydmVkIHNlcnZpY2UgYW5kIGRlbGl2ZXJlZCB1c2UgaXMgYSBzZW1hbnRpYyBxdWFudGl0eSBkaXN0aW5jdCBmcm9tIHByb3ZpZGVyIGFjY291bnQgY2hhcmdlIGZhY3RzOyBuZWl0aGVyIHZhbHVlLCB1bml0LCBsaWZlY3ljbGUsIG5vciByZWNvbmNpbGlhdGlvbiBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgb3RoZXIifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMiIsInF1YW50aXR5IjoiUTA3IiwicmVhc29uIjoiUTA3L0wxMiBBUFBMSUNBQkxFOiByZXRyaWV2YWwgcmVxdWVzdCByYXRlLCByZXNlcnZlZCBzZXJ2aWNlIGFuZCBkZWxpdmVyZWQgdXNlOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTA4IiwicmVhc29uIjoiUTA4L0wwMSBBUFBMSUNBQkxFOiBjb21wYWN0aW9uIHdvcmsgc3RvY2ssIGZhaWxlZCB3b3JrIGFuZCBvdXRwdXQgcmV1c2U7IHJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAyIiwicXVhbnRpdHkiOiJRMDgiLCJyZWFzb24iOiJRMDgvTDAyIEFQUExJQ0FCTEU6IGNvbXBhY3Rpb24gd29yayBzdG9jaywgZmFpbGVkIHdvcmsgYW5kIG91dHB1dCByZXVzZTsgcGFydGlhbCBvciBmYWlsZWQgdXNlIGZhbHNpZmllZCBieSBlcmFzaW5nIGluY3VycmVkIHF1YW50aXR5In0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDMiLCJxdWFudGl0eSI6IlEwOCIsInJlYXNvbiI6IlEwOC9MMDMgQVBQTElDQUJMRTogY29tcGFjdGlvbiB3b3JrIHN0b2NrLCBmYWlsZWQgd29yayBhbmQgb3V0cHV0IHJldXNlOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA0IiwicXVhbnRpdHkiOiJRMDgiLCJyZWFzb24iOiJRMDgvTDA0IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiBjb21wYWN0aW9uIHdvcmsgc3RvY2ssIGZhaWxlZCB3b3JrIGFuZCBvdXRwdXQgcmV1c2UgaGFzIG5vIGxlYXNlIGdyYW50L2V4cGlyeS9yZW5ldy9yZXZva2Ugc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTA4IiwicmVhc29uIjoiUTA4L0wwNSBBUFBMSUNBQkxFOiBjb21wYWN0aW9uIHdvcmsgc3RvY2ssIGZhaWxlZCB3b3JrIGFuZCBvdXRwdXQgcmV1c2U7IHNoYXJlIGFsbG9jYXRpb24sIHBlYWsgb2NjdXBhbmN5LCBvciByYXRlIGJ1Y2tldCBmYWxzaWZpZWQgYnkgY2FwYWNpdHkgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6Ik5fQSIsImxhdyI6IkwwNiIsInF1YW50aXR5IjoiUTA4IiwicmVhc29uIjoiUTA4L0wwNiBOX0EgcmVwcmVzZW50YXRpb24tbmV1dHJhbDogY29tcGFjdGlvbiB3b3JrIHN0b2NrLCBmYWlsZWQgd29yayBhbmQgb3V0cHV0IHJldXNlIGhhcyBubyBwYXJlbnQtY2hpbGQvc2libGluZyBjb25zZXJ2YXRpb24gc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNyIsInF1YW50aXR5IjoiUTA4IiwicmVhc29uIjoiUTA4L0wwNyBBUFBMSUNBQkxFOiBjb21wYWN0aW9uIHdvcmsgc3RvY2ssIGZhaWxlZCB3b3JrIGFuZCBvdXRwdXQgcmV1c2U7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTA4IiwicmVhc29uIjoiUTA4L0wwOCBBUFBMSUNBQkxFOiBjb21wYWN0aW9uIHdvcmsgc3RvY2ssIGZhaWxlZCB3b3JrIGFuZCBvdXRwdXQgcmV1c2U7IGVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA5IiwicXVhbnRpdHkiOiJRMDgiLCJyZWFzb24iOiJRMDgvTDA5IEFQUExJQ0FCTEU6IGNvbXBhY3Rpb24gd29yayBzdG9jaywgZmFpbGVkIHdvcmsgYW5kIG91dHB1dCByZXVzZTsgY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHRpbWluZyBmYWxzaWZpZWQgYnkgcHJlbWF0dXJlIHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEwIiwicXVhbnRpdHkiOiJRMDgiLCJyZWFzb24iOiJRMDgvTDEwIEFQUExJQ0FCTEU6IGNvbXBhY3Rpb24gd29yayBzdG9jaywgZmFpbGVkIHdvcmsgYW5kIG91dHB1dCByZXVzZTsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMDgiLCJyZWFzb24iOiJRMDgvTDExIEFQUExJQ0FCTEU6IGNvbXBhY3Rpb24gd29yayBzdG9jaywgZmFpbGVkIHdvcmsgYW5kIG91dHB1dCByZXVzZSBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEyIiwicXVhbnRpdHkiOiJRMDgiLCJyZWFzb24iOiJRMDgvTDEyIEFQUExJQ0FCTEU6IGNvbXBhY3Rpb24gd29yayBzdG9jaywgZmFpbGVkIHdvcmsgYW5kIG91dHB1dCByZXVzZTsgZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMDEgQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgcmVzZXJ2ZWQvZnJlZS9hY3F1aXJlZC9yZWxlYXNlZCBzdGF0ZSBmYWxzaWZpZWQgYnkgYW4gdW5iYWxhbmNlZCB0cmFuc2l0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDIiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMDIgQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgcGFydGlhbCBvciBmYWlsZWQgdXNlIGZhbHNpZmllZCBieSBlcmFzaW5nIGluY3VycmVkIHF1YW50aXR5In0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDMiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMDMgQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDQiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMDQgQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgbGVhc2UgZ3JhbnQvb2NjdXBhbmN5L2V4cGlyeS9lcG9jaC9yZXZva2UgbGlmZWN5Y2xlIGZhbHNpZmllZCBieSBzdGFsZSBhdXRob3JpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTA5IiwicmVhc29uIjoiUTA5L0wwNSBBUFBMSUNBQkxFOiB0b29sL3NlcnZpY2UgbGVhc2UgcGx1cyByZXNlcnZlZCBpbnZvY2F0aW9uIGNhcGFjaXR5OyBzaGFyZSBhbGxvY2F0aW9uLCBwZWFrIG9jY3VwYW5jeSwgb3IgcmF0ZSBidWNrZXQgZmFsc2lmaWVkIGJ5IGNhcGFjaXR5IGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA2IiwicXVhbnRpdHkiOiJRMDkiLCJyZWFzb24iOiJRMDkvTDA2IEFQUExJQ0FCTEU6IHRvb2wvc2VydmljZSBsZWFzZSBwbHVzIHJlc2VydmVkIGludm9jYXRpb24gY2FwYWNpdHk7IHBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgcmVtaW50IG9yIG92ZXJzdWJzY3JpcHRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNyIsInF1YW50aXR5IjoiUTA5IiwicmVhc29uIjoiUTA5L0wwNyBBUFBMSUNBQkxFOiB0b29sL3NlcnZpY2UgbGVhc2UgcGx1cyByZXNlcnZlZCBpbnZvY2F0aW9uIGNhcGFjaXR5OyBjb25jdXJyZW50IHJlc2VydmF0aW9uIGZhbHNpZmllZCBieSBhZG1pdHRpbmcgb3ZlcmxhcHBpbmcgY2FwYWNpdHkgYWJvdmUgY2FwIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDgiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMDggQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgZXNjcm93L2NvbnRpbmdlbmN5L292ZXJydW4gZmFsc2lmaWVkIGJ5IHVucmVzZXJ2ZWQgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDkiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMDkgQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHRpbWluZyBmYWxzaWZpZWQgYnkgcHJlbWF0dXJlIHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEwIiwicXVhbnRpdHkiOiJRMDkiLCJyZWFzb24iOiJRMDkvTDEwIEFQUExJQ0FCTEU6IHRvb2wvc2VydmljZSBsZWFzZSBwbHVzIHJlc2VydmVkIGludm9jYXRpb24gY2FwYWNpdHk7IGFjdG9yL2NvbW1pdC93b3JsZC9yZXNvdXJjZSBhdHRyaWJ1dGlvbiBhbmQgcmVjb25jaWxpYXRpb24gZmFsc2lmaWVkIGJ5IGpvaW4gbWlzbWF0Y2gifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMSIsInF1YW50aXR5IjoiUTA5IiwicmVhc29uIjoiUTA5L0wxMSBBUFBMSUNBQkxFOiB0b29sL3NlcnZpY2UgbGVhc2UgcGx1cyByZXNlcnZlZCBpbnZvY2F0aW9uIGNhcGFjaXR5IGlzIGEgc2VtYW50aWMgcXVhbnRpdHkgZGlzdGluY3QgZnJvbSBwcm92aWRlciBhY2NvdW50IGNoYXJnZSBmYWN0czsgbmVpdGhlciB2YWx1ZSwgdW5pdCwgbGlmZWN5Y2xlLCBub3IgcmVjb25jaWxpYXRpb24gbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTIiLCJxdWFudGl0eSI6IlEwOSIsInJlYXNvbiI6IlEwOS9MMTIgQVBQTElDQUJMRTogdG9vbC9zZXJ2aWNlIGxlYXNlIHBsdXMgcmVzZXJ2ZWQgaW52b2NhdGlvbiBjYXBhY2l0eTsgZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlExMCIsInJlYXNvbiI6IlExMC9MMDEgQVBQTElDQUJMRTogY2hpbGQtd29yayBzaGFyZSBhbGxvY2F0aW9uIGFuZCBjb25jdXJyZW50IHBlYWsgb2NjdXBhbmN5OyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTEwIiwicmVhc29uIjoiUTEwL0wwMiBBUFBMSUNBQkxFOiBjaGlsZC13b3JrIHNoYXJlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbnQgcGVhayBvY2N1cGFuY3k7IHBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAzIiwicXVhbnRpdHkiOiJRMTAiLCJyZWFzb24iOiJRMTAvTDAzIEFQUExJQ0FCTEU6IGNoaWxkLXdvcmsgc2hhcmUgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVudCBwZWFrIG9jY3VwYW5jeTsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDQiLCJxdWFudGl0eSI6IlExMCIsInJlYXNvbiI6IlExMC9MMDQgQVBQTElDQUJMRTogY2hpbGQtd29yayBzaGFyZSBhbGxvY2F0aW9uIGFuZCBjb25jdXJyZW50IHBlYWsgb2NjdXBhbmN5OyBsZWFzZSBncmFudC9vY2N1cGFuY3kvZXhwaXJ5L2Vwb2NoL3Jldm9rZSBsaWZlY3ljbGUgZmFsc2lmaWVkIGJ5IHN0YWxlIGF1dGhvcml0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMTAiLCJyZWFzb24iOiJRMTAvTDA1IEFQUExJQ0FCTEU6IGNoaWxkLXdvcmsgc2hhcmUgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVudCBwZWFrIG9jY3VwYW5jeTsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNiIsInF1YW50aXR5IjoiUTEwIiwicmVhc29uIjoiUTEwL0wwNiBBUFBMSUNBQkxFOiBjaGlsZC13b3JrIHNoYXJlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbnQgcGVhayBvY2N1cGFuY3k7IHBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgcmVtaW50IG9yIG92ZXJzdWJzY3JpcHRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNyIsInF1YW50aXR5IjoiUTEwIiwicmVhc29uIjoiUTEwL0wwNyBBUFBMSUNBQkxFOiBjaGlsZC13b3JrIHNoYXJlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbnQgcGVhayBvY2N1cGFuY3k7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTEwIiwicmVhc29uIjoiUTEwL0wwOCBBUFBMSUNBQkxFOiBjaGlsZC13b3JrIHNoYXJlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbnQgcGVhayBvY2N1cGFuY3k7IGVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA5IiwicXVhbnRpdHkiOiJRMTAiLCJyZWFzb24iOiJRMTAvTDA5IEFQUExJQ0FCTEU6IGNoaWxkLXdvcmsgc2hhcmUgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVudCBwZWFrIG9jY3VwYW5jeTsgY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHRpbWluZyBmYWxzaWZpZWQgYnkgcHJlbWF0dXJlIHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEwIiwicXVhbnRpdHkiOiJRMTAiLCJyZWFzb24iOiJRMTAvTDEwIEFQUExJQ0FCTEU6IGNoaWxkLXdvcmsgc2hhcmUgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVudCBwZWFrIG9jY3VwYW5jeTsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMTAiLCJyZWFzb24iOiJRMTAvTDExIEFQUExJQ0FCTEU6IGNoaWxkLXdvcmsgc2hhcmUgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVudCBwZWFrIG9jY3VwYW5jeSBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEyIiwicXVhbnRpdHkiOiJRMTAiLCJyZWFzb24iOiJRMTAvTDEyIEFQUExJQ0FCTEU6IGNoaWxkLXdvcmsgc2hhcmUgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVudCBwZWFrIG9jY3VwYW5jeTsgZmFpbHVyZS9jYW5jZWwvbGF0ZS9kaXNjYXJkIG5vbnJlZnVuZCBmYWxzaWZpZWQgYnkgYXV0b21hdGljIHJlc3RvcmF0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDEiLCJxdWFudGl0eSI6IlExMSIsInJlYXNvbiI6IlExMS9MMDEgQVBQTElDQUJMRTogZmFpbGVkL3NwZWN1bGF0aXZlIHJlc2VydmF0aW9uIGFuZCBpbmN1cnJlZCBub25yZWZ1bmQ7IHJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAyIiwicXVhbnRpdHkiOiJRMTEiLCJyZWFzb24iOiJRMTEvTDAyIEFQUExJQ0FCTEU6IGZhaWxlZC9zcGVjdWxhdGl2ZSByZXNlcnZhdGlvbiBhbmQgaW5jdXJyZWQgbm9ucmVmdW5kOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTExIiwicmVhc29uIjoiUTExL0wwMyBBUFBMSUNBQkxFOiBmYWlsZWQvc3BlY3VsYXRpdmUgcmVzZXJ2YXRpb24gYW5kIGluY3VycmVkIG5vbnJlZnVuZDsgcmVmdW5kYWJsZS9ub25yZWZ1bmRhYmxlIHBhcnRpdGlvbiBmYWxzaWZpZWQgYnkgaW1wbGljaXQgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6Ik5fQSIsImxhdyI6IkwwNCIsInF1YW50aXR5IjoiUTExIiwicmVhc29uIjoiUTExL0wwNCBOX0EgcmVwcmVzZW50YXRpb24tbmV1dHJhbDogZmFpbGVkL3NwZWN1bGF0aXZlIHJlc2VydmF0aW9uIGFuZCBpbmN1cnJlZCBub25yZWZ1bmQgaGFzIG5vIGxlYXNlIGdyYW50L2V4cGlyeS9yZW5ldy9yZXZva2Ugc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTExIiwicmVhc29uIjoiUTExL0wwNSBBUFBMSUNBQkxFOiBmYWlsZWQvc3BlY3VsYXRpdmUgcmVzZXJ2YXRpb24gYW5kIGluY3VycmVkIG5vbnJlZnVuZDsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNiIsInF1YW50aXR5IjoiUTExIiwicmVhc29uIjoiUTExL0wwNiBBUFBMSUNBQkxFOiBmYWlsZWQvc3BlY3VsYXRpdmUgcmVzZXJ2YXRpb24gYW5kIGluY3VycmVkIG5vbnJlZnVuZDsgcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIGZhbHNpZmllZCBieSByZW1pbnQgb3Igb3ZlcnN1YnNjcmlwdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMTEiLCJyZWFzb24iOiJRMTEvTDA3IEFQUExJQ0FCTEU6IGZhaWxlZC9zcGVjdWxhdGl2ZSByZXNlcnZhdGlvbiBhbmQgaW5jdXJyZWQgbm9ucmVmdW5kOyBjb25jdXJyZW50IHJlc2VydmF0aW9uIGZhbHNpZmllZCBieSBhZG1pdHRpbmcgb3ZlcmxhcHBpbmcgY2FwYWNpdHkgYWJvdmUgY2FwIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDgiLCJxdWFudGl0eSI6IlExMSIsInJlYXNvbiI6IlExMS9MMDggQVBQTElDQUJMRTogZmFpbGVkL3NwZWN1bGF0aXZlIHJlc2VydmF0aW9uIGFuZCBpbmN1cnJlZCBub25yZWZ1bmQ7IGVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA5IiwicXVhbnRpdHkiOiJRMTEiLCJyZWFzb24iOiJRMTEvTDA5IEFQUExJQ0FCTEU6IGZhaWxlZC9zcGVjdWxhdGl2ZSByZXNlcnZhdGlvbiBhbmQgaW5jdXJyZWQgbm9ucmVmdW5kOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlExMSIsInJlYXNvbiI6IlExMS9MMTAgQVBQTElDQUJMRTogZmFpbGVkL3NwZWN1bGF0aXZlIHJlc2VydmF0aW9uIGFuZCBpbmN1cnJlZCBub25yZWZ1bmQ7IGFjdG9yL2NvbW1pdC93b3JsZC9yZXNvdXJjZSBhdHRyaWJ1dGlvbiBhbmQgcmVjb25jaWxpYXRpb24gZmFsc2lmaWVkIGJ5IGpvaW4gbWlzbWF0Y2gifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMSIsInF1YW50aXR5IjoiUTExIiwicmVhc29uIjoiUTExL0wxMSBBUFBMSUNBQkxFOiBmYWlsZWQvc3BlY3VsYXRpdmUgcmVzZXJ2YXRpb24gYW5kIGluY3VycmVkIG5vbnJlZnVuZCBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEyIiwicXVhbnRpdHkiOiJRMTEiLCJyZWFzb24iOiJRMTEvTDEyIEFQUExJQ0FCTEU6IGZhaWxlZC9zcGVjdWxhdGl2ZSByZXNlcnZhdGlvbiBhbmQgaW5jdXJyZWQgbm9ucmVmdW5kOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTEyIiwicmVhc29uIjoiUTEyL0wwMSBBUFBMSUNBQkxFOiBldmFsdWF0aW9uL2FnZ3JlZ2F0aW9uIHJlc2VydmF0aW9uIGFuZCBjaGlsZCBhdHRyaWJ1dGlvbjsgcmVzZXJ2ZWQvZnJlZS9hY3F1aXJlZC9yZWxlYXNlZCBzdGF0ZSBmYWxzaWZpZWQgYnkgYW4gdW5iYWxhbmNlZCB0cmFuc2l0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDIiLCJxdWFudGl0eSI6IlExMiIsInJlYXNvbiI6IlExMi9MMDIgQVBQTElDQUJMRTogZXZhbHVhdGlvbi9hZ2dyZWdhdGlvbiByZXNlcnZhdGlvbiBhbmQgY2hpbGQgYXR0cmlidXRpb247IHBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAzIiwicXVhbnRpdHkiOiJRMTIiLCJyZWFzb24iOiJRMTIvTDAzIEFQUExJQ0FCTEU6IGV2YWx1YXRpb24vYWdncmVnYXRpb24gcmVzZXJ2YXRpb24gYW5kIGNoaWxkIGF0dHJpYnV0aW9uOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiTl9BIiwibGF3IjoiTDA0IiwicXVhbnRpdHkiOiJRMTIiLCJyZWFzb24iOiJRMTIvTDA0IE5fQSByZXByZXNlbnRhdGlvbi1uZXV0cmFsOiBldmFsdWF0aW9uL2FnZ3JlZ2F0aW9uIHJlc2VydmF0aW9uIGFuZCBjaGlsZCBhdHRyaWJ1dGlvbiBoYXMgbm8gbGVhc2UgZ3JhbnQvZXhwaXJ5L3JlbmV3L3Jldm9rZSBzdGF0ZSBvciBsaWZlY3ljbGU7IG5vIHN0b3JhZ2UsIHNjaGVkdWxlciwgb3IgbWVjaGFuaXNtIGluZmVyZW5jZSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMTIiLCJyZWFzb24iOiJRMTIvTDA1IEFQUExJQ0FCTEU6IGV2YWx1YXRpb24vYWdncmVnYXRpb24gcmVzZXJ2YXRpb24gYW5kIGNoaWxkIGF0dHJpYnV0aW9uOyBzaGFyZSBhbGxvY2F0aW9uLCBwZWFrIG9jY3VwYW5jeSwgb3IgcmF0ZSBidWNrZXQgZmFsc2lmaWVkIGJ5IGNhcGFjaXR5IGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA2IiwicXVhbnRpdHkiOiJRMTIiLCJyZWFzb24iOiJRMTIvTDA2IEFQUExJQ0FCTEU6IGV2YWx1YXRpb24vYWdncmVnYXRpb24gcmVzZXJ2YXRpb24gYW5kIGNoaWxkIGF0dHJpYnV0aW9uOyBwYXJlbnQtY2hpbGQvc2libGluZyBjb25zZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IHJlbWludCBvciBvdmVyc3Vic2NyaXB0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDciLCJxdWFudGl0eSI6IlExMiIsInJlYXNvbiI6IlExMi9MMDcgQVBQTElDQUJMRTogZXZhbHVhdGlvbi9hZ2dyZWdhdGlvbiByZXNlcnZhdGlvbiBhbmQgY2hpbGQgYXR0cmlidXRpb247IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTEyIiwicmVhc29uIjoiUTEyL0wwOCBBUFBMSUNBQkxFOiBldmFsdWF0aW9uL2FnZ3JlZ2F0aW9uIHJlc2VydmF0aW9uIGFuZCBjaGlsZCBhdHRyaWJ1dGlvbjsgZXNjcm93L2NvbnRpbmdlbmN5L292ZXJydW4gZmFsc2lmaWVkIGJ5IHVucmVzZXJ2ZWQgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDkiLCJxdWFudGl0eSI6IlExMiIsInJlYXNvbiI6IlExMi9MMDkgQVBQTElDQUJMRTogZXZhbHVhdGlvbi9hZ2dyZWdhdGlvbiByZXNlcnZhdGlvbiBhbmQgY2hpbGQgYXR0cmlidXRpb247IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSB0aW1pbmcgZmFsc2lmaWVkIGJ5IHByZW1hdHVyZSByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMCIsInF1YW50aXR5IjoiUTEyIiwicmVhc29uIjoiUTEyL0wxMCBBUFBMSUNBQkxFOiBldmFsdWF0aW9uL2FnZ3JlZ2F0aW9uIHJlc2VydmF0aW9uIGFuZCBjaGlsZCBhdHRyaWJ1dGlvbjsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMTIiLCJyZWFzb24iOiJRMTIvTDExIEFQUExJQ0FCTEU6IGV2YWx1YXRpb24vYWdncmVnYXRpb24gcmVzZXJ2YXRpb24gYW5kIGNoaWxkIGF0dHJpYnV0aW9uIGlzIGEgc2VtYW50aWMgcXVhbnRpdHkgZGlzdGluY3QgZnJvbSBwcm92aWRlciBhY2NvdW50IGNoYXJnZSBmYWN0czsgbmVpdGhlciB2YWx1ZSwgdW5pdCwgbGlmZWN5Y2xlLCBub3IgcmVjb25jaWxpYXRpb24gbWF5IGJlIGluZmVycmVkIGZyb20gdGhlIG90aGVyIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTIiLCJxdWFudGl0eSI6IlExMiIsInJlYXNvbiI6IlExMi9MMTIgQVBQTElDQUJMRTogZXZhbHVhdGlvbi9hZ2dyZWdhdGlvbiByZXNlcnZhdGlvbiBhbmQgY2hpbGQgYXR0cmlidXRpb247IGZhaWx1cmUvY2FuY2VsL2xhdGUvZGlzY2FyZCBub25yZWZ1bmQgZmFsc2lmaWVkIGJ5IGF1dG9tYXRpYyByZXN0b3JhdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAxIiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDAxIEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IHJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAyIiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDAyIEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IHBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAzIiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDAzIEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IHJlZnVuZGFibGUvbm9ucmVmdW5kYWJsZSBwYXJ0aXRpb24gZmFsc2lmaWVkIGJ5IGltcGxpY2l0IHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA0IiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDA0IEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IGxlYXNlIGdyYW50L29jY3VwYW5jeS9leHBpcnkvZXBvY2gvcmV2b2tlIGxpZmVjeWNsZSBmYWxzaWZpZWQgYnkgc3RhbGUgYXV0aG9yaXR5In0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDUiLCJxdWFudGl0eSI6IlExMyIsInJlYXNvbiI6IlExMy9MMDUgQVBQTElDQUJMRTogY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHJlbGVhc2UgYW5kIGluY3VycmVkIHVzZTsgc2hhcmUgYWxsb2NhdGlvbiwgcGVhayBvY2N1cGFuY3ksIG9yIHJhdGUgYnVja2V0IGZhbHNpZmllZCBieSBjYXBhY2l0eSBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNiIsInF1YW50aXR5IjoiUTEzIiwicmVhc29uIjoiUTEzL0wwNiBBUFBMSUNBQkxFOiBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgcmVsZWFzZSBhbmQgaW5jdXJyZWQgdXNlOyBwYXJlbnQtY2hpbGQvc2libGluZyBjb25zZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IHJlbWludCBvciBvdmVyc3Vic2NyaXB0aW9uIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDciLCJxdWFudGl0eSI6IlExMyIsInJlYXNvbiI6IlExMy9MMDcgQVBQTElDQUJMRTogY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHJlbGVhc2UgYW5kIGluY3VycmVkIHVzZTsgY29uY3VycmVudCByZXNlcnZhdGlvbiBmYWxzaWZpZWQgYnkgYWRtaXR0aW5nIG92ZXJsYXBwaW5nIGNhcGFjaXR5IGFib3ZlIGNhcCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA4IiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDA4IEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IGVzY3Jvdy9jb250aW5nZW5jeS9vdmVycnVuIGZhbHNpZmllZCBieSB1bnJlc2VydmVkIGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA5IiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDA5IEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSB0aW1pbmcgZmFsc2lmaWVkIGJ5IHByZW1hdHVyZSByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMCIsInF1YW50aXR5IjoiUTEzIiwicmVhc29uIjoiUTEzL0wxMCBBUFBMSUNBQkxFOiBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgcmVsZWFzZSBhbmQgaW5jdXJyZWQgdXNlOyBhY3Rvci9jb21taXQvd29ybGQvcmVzb3VyY2UgYXR0cmlidXRpb24gYW5kIHJlY29uY2lsaWF0aW9uIGZhbHNpZmllZCBieSBqb2luIG1pc21hdGNoIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTEiLCJxdWFudGl0eSI6IlExMyIsInJlYXNvbiI6IlExMy9MMTEgQVBQTElDQUJMRTogY2FuY2VsbGF0aW9uIHJlcXVlc3QvZWZmZWN0aXZlIHJlbGVhc2UgYW5kIGluY3VycmVkIHVzZSBpcyBhIHNlbWFudGljIHF1YW50aXR5IGRpc3RpbmN0IGZyb20gcHJvdmlkZXIgYWNjb3VudCBjaGFyZ2UgZmFjdHM7IG5laXRoZXIgdmFsdWUsIHVuaXQsIGxpZmVjeWNsZSwgbm9yIHJlY29uY2lsaWF0aW9uIG1heSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBvdGhlciJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDEyIiwicXVhbnRpdHkiOiJRMTMiLCJyZWFzb24iOiJRMTMvTDEyIEFQUExJQ0FCTEU6IGNhbmNlbGxhdGlvbiByZXF1ZXN0L2VmZmVjdGl2ZSByZWxlYXNlIGFuZCBpbmN1cnJlZCB1c2U7IGZhaWx1cmUvY2FuY2VsL2xhdGUvZGlzY2FyZCBub25yZWZ1bmQgZmFsc2lmaWVkIGJ5IGF1dG9tYXRpYyByZXN0b3JhdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAxIiwicXVhbnRpdHkiOiJRMTQiLCJyZWFzb24iOiJRMTQvTDAxIEFQUExJQ0FCTEU6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGU7IHJlc2VydmVkL2ZyZWUvYWNxdWlyZWQvcmVsZWFzZWQgc3RhdGUgZmFsc2lmaWVkIGJ5IGFuIHVuYmFsYW5jZWQgdHJhbnNpdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAyIiwicXVhbnRpdHkiOiJRMTQiLCJyZWFzb24iOiJRMTQvTDAyIEFQUExJQ0FCTEU6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGU7IHBhcnRpYWwgb3IgZmFpbGVkIHVzZSBmYWxzaWZpZWQgYnkgZXJhc2luZyBpbmN1cnJlZCBxdWFudGl0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDAzIiwicXVhbnRpdHkiOiJRMTQiLCJyZWFzb24iOiJRMTQvTDAzIEFQUExJQ0FCTEU6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGU7IHJlZnVuZGFibGUvbm9ucmVmdW5kYWJsZSBwYXJ0aXRpb24gZmFsc2lmaWVkIGJ5IGltcGxpY2l0IHJlZnVuZCJ9LHsiY2xhc3NpZmljYXRpb24iOiJOX0EiLCJsYXciOiJMMDQiLCJxdWFudGl0eSI6IlExNCIsInJlYXNvbiI6IlExNC9MMDQgTl9BIHJlcHJlc2VudGF0aW9uLW5ldXRyYWw6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGUgaGFzIG5vIGxlYXNlIGdyYW50L2V4cGlyeS9yZW5ldy9yZXZva2Ugc3RhdGUgb3IgbGlmZWN5Y2xlOyBubyBzdG9yYWdlLCBzY2hlZHVsZXIsIG9yIG1lY2hhbmlzbSBpbmZlcmVuY2UifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNSIsInF1YW50aXR5IjoiUTE0IiwicmVhc29uIjoiUTE0L0wwNSBBUFBMSUNBQkxFOiBjYWNoZS9yZXVzZSBmcmVzaG5lc3MgZGVjaXNpb24sIGF2b2lkZWQgd29yayBhbmQgc3RhbGUgcmVjb21wdXRlOyBzaGFyZSBhbGxvY2F0aW9uLCBwZWFrIG9jY3VwYW5jeSwgb3IgcmF0ZSBidWNrZXQgZmFsc2lmaWVkIGJ5IGNhcGFjaXR5IGV4Y2VzcyJ9LHsiY2xhc3NpZmljYXRpb24iOiJOX0EiLCJsYXciOiJMMDYiLCJxdWFudGl0eSI6IlExNCIsInJlYXNvbiI6IlExNC9MMDYgTl9BIHJlcHJlc2VudGF0aW9uLW5ldXRyYWw6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGUgaGFzIG5vIHBhcmVudC1jaGlsZC9zaWJsaW5nIGNvbnNlcnZhdGlvbiBzdGF0ZSBvciBsaWZlY3ljbGU7IG5vIHN0b3JhZ2UsIHNjaGVkdWxlciwgb3IgbWVjaGFuaXNtIGluZmVyZW5jZSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMTQiLCJyZWFzb24iOiJRMTQvTDA3IEFQUExJQ0FCTEU6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGU7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTE0IiwicmVhc29uIjoiUTE0L0wwOCBBUFBMSUNBQkxFOiBjYWNoZS9yZXVzZSBmcmVzaG5lc3MgZGVjaXNpb24sIGF2b2lkZWQgd29yayBhbmQgc3RhbGUgcmVjb21wdXRlOyBlc2Nyb3cvY29udGluZ2VuY3kvb3ZlcnJ1biBmYWxzaWZpZWQgYnkgdW5yZXNlcnZlZCBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOSIsInF1YW50aXR5IjoiUTE0IiwicmVhc29uIjoiUTE0L0wwOSBBUFBMSUNBQkxFOiBjYWNoZS9yZXVzZSBmcmVzaG5lc3MgZGVjaXNpb24sIGF2b2lkZWQgd29yayBhbmQgc3RhbGUgcmVjb21wdXRlOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlExNCIsInJlYXNvbiI6IlExNC9MMTAgQVBQTElDQUJMRTogY2FjaGUvcmV1c2UgZnJlc2huZXNzIGRlY2lzaW9uLCBhdm9pZGVkIHdvcmsgYW5kIHN0YWxlIHJlY29tcHV0ZTsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMTQiLCJyZWFzb24iOiJRMTQvTDExIEFQUExJQ0FCTEU6IGNhY2hlL3JldXNlIGZyZXNobmVzcyBkZWNpc2lvbiwgYXZvaWRlZCB3b3JrIGFuZCBzdGFsZSByZWNvbXB1dGUgaXMgYSBzZW1hbnRpYyBxdWFudGl0eSBkaXN0aW5jdCBmcm9tIHByb3ZpZGVyIGFjY291bnQgY2hhcmdlIGZhY3RzOyBuZWl0aGVyIHZhbHVlLCB1bml0LCBsaWZlY3ljbGUsIG5vciByZWNvbmNpbGlhdGlvbiBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgb3RoZXIifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMiIsInF1YW50aXR5IjoiUTE0IiwicmVhc29uIjoiUTE0L0wxMiBBUFBMSUNBQkxFOiBjYWNoZS9yZXVzZSBmcmVzaG5lc3MgZGVjaXNpb24sIGF2b2lkZWQgd29yayBhbmQgc3RhbGUgcmVjb21wdXRlOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wwMSBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wwMiBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wwMyBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNCIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wwNCBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyBsZWFzZSBncmFudC9vY2N1cGFuY3kvZXhwaXJ5L2Vwb2NoL3Jldm9rZSBsaWZlY3ljbGUgZmFsc2lmaWVkIGJ5IHN0YWxlIGF1dGhvcml0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMTUiLCJyZWFzb24iOiJRMTUvTDA1IEFQUExJQ0FCTEU6IGRlbGVnYXRlZCBjaGlsZCBzaGFyZSBhbmQgYWNjb3VudGFibGUgYXR0cmlidXRpb247IHNoYXJlIGFsbG9jYXRpb24sIHBlYWsgb2NjdXBhbmN5LCBvciByYXRlIGJ1Y2tldCBmYWxzaWZpZWQgYnkgY2FwYWNpdHkgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDYiLCJxdWFudGl0eSI6IlExNSIsInJlYXNvbiI6IlExNS9MMDYgQVBQTElDQUJMRTogZGVsZWdhdGVkIGNoaWxkIHNoYXJlIGFuZCBhY2NvdW50YWJsZSBhdHRyaWJ1dGlvbjsgcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIGZhbHNpZmllZCBieSByZW1pbnQgb3Igb3ZlcnN1YnNjcmlwdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMTUiLCJyZWFzb24iOiJRMTUvTDA3IEFQUExJQ0FCTEU6IGRlbGVnYXRlZCBjaGlsZCBzaGFyZSBhbmQgYWNjb3VudGFibGUgYXR0cmlidXRpb247IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wwOCBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyBlc2Nyb3cvY29udGluZ2VuY3kvb3ZlcnJ1biBmYWxzaWZpZWQgYnkgdW5yZXNlcnZlZCBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOSIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wwOSBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlExNSIsInJlYXNvbiI6IlExNS9MMTAgQVBQTElDQUJMRTogZGVsZWdhdGVkIGNoaWxkIHNoYXJlIGFuZCBhY2NvdW50YWJsZSBhdHRyaWJ1dGlvbjsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMTUiLCJyZWFzb24iOiJRMTUvTDExIEFQUExJQ0FCTEU6IGRlbGVnYXRlZCBjaGlsZCBzaGFyZSBhbmQgYWNjb3VudGFibGUgYXR0cmlidXRpb24gaXMgYSBzZW1hbnRpYyBxdWFudGl0eSBkaXN0aW5jdCBmcm9tIHByb3ZpZGVyIGFjY291bnQgY2hhcmdlIGZhY3RzOyBuZWl0aGVyIHZhbHVlLCB1bml0LCBsaWZlY3ljbGUsIG5vciByZWNvbmNpbGlhdGlvbiBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgb3RoZXIifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMiIsInF1YW50aXR5IjoiUTE1IiwicmVhc29uIjoiUTE1L0wxMiBBUFBMSUNBQkxFOiBkZWxlZ2F0ZWQgY2hpbGQgc2hhcmUgYW5kIGFjY291bnRhYmxlIGF0dHJpYnV0aW9uOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wwMSBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wwMiBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wwMyBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNCIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wwNCBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyBsZWFzZSBncmFudC9vY2N1cGFuY3kvZXhwaXJ5L2Vwb2NoL3Jldm9rZSBsaWZlY3ljbGUgZmFsc2lmaWVkIGJ5IHN0YWxlIGF1dGhvcml0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMTYiLCJyZWFzb24iOiJRMTYvTDA1IEFQUExJQ0FCTEU6IHN1YnN0aXR1dGlvbiByZWxlYXNlL3JlYWNxdWlyZSB3aXRoIHJlc291cmNlIGJpbmRpbmc7IHNoYXJlIGFsbG9jYXRpb24sIHBlYWsgb2NjdXBhbmN5LCBvciByYXRlIGJ1Y2tldCBmYWxzaWZpZWQgYnkgY2FwYWNpdHkgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDYiLCJxdWFudGl0eSI6IlExNiIsInJlYXNvbiI6IlExNi9MMDYgQVBQTElDQUJMRTogc3Vic3RpdHV0aW9uIHJlbGVhc2UvcmVhY3F1aXJlIHdpdGggcmVzb3VyY2UgYmluZGluZzsgcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIGZhbHNpZmllZCBieSByZW1pbnQgb3Igb3ZlcnN1YnNjcmlwdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMTYiLCJyZWFzb24iOiJRMTYvTDA3IEFQUExJQ0FCTEU6IHN1YnN0aXR1dGlvbiByZWxlYXNlL3JlYWNxdWlyZSB3aXRoIHJlc291cmNlIGJpbmRpbmc7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wwOCBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyBlc2Nyb3cvY29udGluZ2VuY3kvb3ZlcnJ1biBmYWxzaWZpZWQgYnkgdW5yZXNlcnZlZCBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOSIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wwOSBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlExNiIsInJlYXNvbiI6IlExNi9MMTAgQVBQTElDQUJMRTogc3Vic3RpdHV0aW9uIHJlbGVhc2UvcmVhY3F1aXJlIHdpdGggcmVzb3VyY2UgYmluZGluZzsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMTYiLCJyZWFzb24iOiJRMTYvTDExIEFQUExJQ0FCTEU6IHN1YnN0aXR1dGlvbiByZWxlYXNlL3JlYWNxdWlyZSB3aXRoIHJlc291cmNlIGJpbmRpbmcgaXMgYSBzZW1hbnRpYyBxdWFudGl0eSBkaXN0aW5jdCBmcm9tIHByb3ZpZGVyIGFjY291bnQgY2hhcmdlIGZhY3RzOyBuZWl0aGVyIHZhbHVlLCB1bml0LCBsaWZlY3ljbGUsIG5vciByZWNvbmNpbGlhdGlvbiBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgb3RoZXIifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMiIsInF1YW50aXR5IjoiUTE2IiwicmVhc29uIjoiUTE2L0wxMiBBUFBMSUNBQkxFOiBzdWJzdGl0dXRpb24gcmVsZWFzZS9yZWFjcXVpcmUgd2l0aCByZXNvdXJjZSBiaW5kaW5nOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMSIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wwMSBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyByZXNlcnZlZC9mcmVlL2FjcXVpcmVkL3JlbGVhc2VkIHN0YXRlIGZhbHNpZmllZCBieSBhbiB1bmJhbGFuY2VkIHRyYW5zaXRpb24ifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMiIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wwMiBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyBwYXJ0aWFsIG9yIGZhaWxlZCB1c2UgZmFsc2lmaWVkIGJ5IGVyYXNpbmcgaW5jdXJyZWQgcXVhbnRpdHkifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwMyIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wwMyBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyByZWZ1bmRhYmxlL25vbnJlZnVuZGFibGUgcGFydGl0aW9uIGZhbHNpZmllZCBieSBpbXBsaWNpdCByZWZ1bmQifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwNCIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wwNCBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyBsZWFzZSBncmFudC9vY2N1cGFuY3kvZXhwaXJ5L2Vwb2NoL3Jldm9rZSBsaWZlY3ljbGUgZmFsc2lmaWVkIGJ5IHN0YWxlIGF1dGhvcml0eSJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA1IiwicXVhbnRpdHkiOiJRMTciLCJyZWFzb24iOiJRMTcvTDA1IEFQUExJQ0FCTEU6IGxhdGUtcmVzdWx0IGluY3VycmVkIHdvcmsgYW5kIG5vIGF1dG9tYXRpYyByZWZ1bmQ7IHNoYXJlIGFsbG9jYXRpb24sIHBlYWsgb2NjdXBhbmN5LCBvciByYXRlIGJ1Y2tldCBmYWxzaWZpZWQgYnkgY2FwYWNpdHkgZXhjZXNzIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMDYiLCJxdWFudGl0eSI6IlExNyIsInJlYXNvbiI6IlExNy9MMDYgQVBQTElDQUJMRTogbGF0ZS1yZXN1bHQgaW5jdXJyZWQgd29yayBhbmQgbm8gYXV0b21hdGljIHJlZnVuZDsgcGFyZW50LWNoaWxkL3NpYmxpbmcgY29uc2VydmF0aW9uIGZhbHNpZmllZCBieSByZW1pbnQgb3Igb3ZlcnN1YnNjcmlwdGlvbiJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDA3IiwicXVhbnRpdHkiOiJRMTciLCJyZWFzb24iOiJRMTcvTDA3IEFQUExJQ0FCTEU6IGxhdGUtcmVzdWx0IGluY3VycmVkIHdvcmsgYW5kIG5vIGF1dG9tYXRpYyByZWZ1bmQ7IGNvbmN1cnJlbnQgcmVzZXJ2YXRpb24gZmFsc2lmaWVkIGJ5IGFkbWl0dGluZyBvdmVybGFwcGluZyBjYXBhY2l0eSBhYm92ZSBjYXAifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOCIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wwOCBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyBlc2Nyb3cvY29udGluZ2VuY3kvb3ZlcnJ1biBmYWxzaWZpZWQgYnkgdW5yZXNlcnZlZCBleGNlc3MifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwwOSIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wwOSBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyBjYW5jZWxsYXRpb24gcmVxdWVzdC9lZmZlY3RpdmUgdGltaW5nIGZhbHNpZmllZCBieSBwcmVtYXR1cmUgcmVmdW5kIn0seyJjbGFzc2lmaWNhdGlvbiI6IkFQUExJQ0FCTEUiLCJsYXciOiJMMTAiLCJxdWFudGl0eSI6IlExNyIsInJlYXNvbiI6IlExNy9MMTAgQVBQTElDQUJMRTogbGF0ZS1yZXN1bHQgaW5jdXJyZWQgd29yayBhbmQgbm8gYXV0b21hdGljIHJlZnVuZDsgYWN0b3IvY29tbWl0L3dvcmxkL3Jlc291cmNlIGF0dHJpYnV0aW9uIGFuZCByZWNvbmNpbGlhdGlvbiBmYWxzaWZpZWQgYnkgam9pbiBtaXNtYXRjaCJ9LHsiY2xhc3NpZmljYXRpb24iOiJBUFBMSUNBQkxFIiwibGF3IjoiTDExIiwicXVhbnRpdHkiOiJRMTciLCJyZWFzb24iOiJRMTcvTDExIEFQUExJQ0FCTEU6IGxhdGUtcmVzdWx0IGluY3VycmVkIHdvcmsgYW5kIG5vIGF1dG9tYXRpYyByZWZ1bmQgaXMgYSBzZW1hbnRpYyBxdWFudGl0eSBkaXN0aW5jdCBmcm9tIHByb3ZpZGVyIGFjY291bnQgY2hhcmdlIGZhY3RzOyBuZWl0aGVyIHZhbHVlLCB1bml0LCBsaWZlY3ljbGUsIG5vciByZWNvbmNpbGlhdGlvbiBtYXkgYmUgaW5mZXJyZWQgZnJvbSB0aGUgb3RoZXIifSx7ImNsYXNzaWZpY2F0aW9uIjoiQVBQTElDQUJMRSIsImxhdyI6IkwxMiIsInF1YW50aXR5IjoiUTE3IiwicmVhc29uIjoiUTE3L0wxMiBBUFBMSUNBQkxFOiBsYXRlLXJlc3VsdCBpbmN1cnJlZCB3b3JrIGFuZCBubyBhdXRvbWF0aWMgcmVmdW5kOyBmYWlsdXJlL2NhbmNlbC9sYXRlL2Rpc2NhcmQgbm9ucmVmdW5kIGZhbHNpZmllZCBieSBhdXRvbWF0aWMgcmVzdG9yYXRpb24ifV0sInF1YW50aXRpZXMiOnsiUTAxIjoiY29tcHV0ZSIsIlEwMiI6InRva2VucyIsIlEwMyI6InRpbWUiLCJRMDQiOiJlbmVyZ3kiLCJRMDUiOiJwcm92aWRlciBjaGFyZ2UiLCJRMDYiOiJjb250ZXh0IHN0b3JhZ2UiLCJRMDciOiJyZXRyaWV2YWwiLCJRMDgiOiJjb21wYWN0aW9uIiwiUTA5IjoidG9vbC9zZXJ2aWNlIHJlc2VydmF0aW9uIiwiUTEwIjoiY29uY3VycmVudCBjaGlsZCB3b3JrIiwiUTExIjoiZmFpbGVkL3NwZWN1bGF0aXZlIHdvcmsiLCJRMTIiOiJldmFsdWF0aW9uL2FnZ3JlZ2F0aW9uIiwiUTEzIjoiY2FuY2VsbGF0aW9uIiwiUTE0IjoiY2FjaGUvcmV1c2UiLCJRMTUiOiJkZWxlZ2F0aW9uIiwiUTE2Ijoic3Vic3RpdHV0aW9uIiwiUTE3IjoibGF0ZSByZXN1bHQifX0sImJvdW5kYXJ5Ijp7Im5vbmNsYWltcyI6WyJCVURHRVRfR1JBTlRTX0NBUEFCSUxJVFkiLCJCVURHRVRfQUNDRVBUU19SRVNVTFRTIiwiQlVER0VUX0FVVEhPUklaRVNfRUZGRUNUUyIsIklNUExJQ0lUX0NPTlZFUlNJT04iLCJTQ0FMQVJfQ09MTEFQU0UiLCJQUk9WSURFUl9DSEFSR0VfRVFVSVZBTEVOQ0UiLCJBVVRPTUFUSUNfUkVGVU5EIiwiRDAwOV9MSUZFQ1lDTEUiLCJNRUNIQU5JU01fT1JfUExBQ0VNRU5UIl0sInNjb3BlX3J1bGUiOiJHTE9CQUxfTEVER0VSX0FDUVVJU0lUSU9OX0NIQVJHRV9GQUNUU19TRVBBUkFURV9GUk9NX1dPUkxEX1JFU09VUkNFX0JJTkRJTkdfUExBTlMifSwiYnVkZ2V0Ijp7ImVuZ2luZWVyX2hvdXJzX2NhcCI6OTYsImZhbWlseV9jb3VudCI6MTcsImxhd19jb3VudCI6MTMsInByb2plY3Rpb25fY291bnQiOjYsInJhd19zdWJjYXNlX2NvdW50Ijo2OSwicmlza190aWVyIjoiRlVMTCIsInN0b3BfZGF0ZSI6IjIwMjYtMDgtMzAifSwiY2Fub25pY2FsaXphdGlvbiI6eyJkdXBsaWNhdGVfa2V5cyI6IlJFSkVDVCIsImVuY29kaW5nIjoiVVRGLTgiLCJsYXlvdXQiOiJTT1JURURfQ09NUEFDVF9URVJNSU5BTF9MRiIsIm5vcm1hbGl6YXRpb24iOiJORkMiLCJudW1iZXJzIjoiVTY0X05PX0ZMT0FUIiwic3Vycm9nYXRlcyI6IlJFSkVDVCJ9LCJjYXNlcyI6W3siZmFtaWx5IjoiRjAxX0NPTlNVTUFCTEUiLCJpZCI6ImNvbnN1bWFibGUtcmVzZXJ2ZS1jb21taXQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWMxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWMyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWMzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMS0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjozMCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtYzEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1jMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMS0xIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MjAsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLWMyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYzIiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xLTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xLTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xLTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xLTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xLTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRUxFQVNFIiwib3BlcmF0aW9uX2lkIjoiT1AtYzMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1jMyIsInJlbGVhc2VfZnJvbSI6IlJFU0VSVkVEIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDFfQ09OU1VNQUJMRSIsImlkIjoid29ybGQtZGlzY2FyZC1zcGVuZCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atd2QxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXdkMiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC13ZDMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTItMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTItMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTItMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTItMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTItMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC13ZDEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC13ZDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTItMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTItMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTItMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMi0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yLTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMi0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTItMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMi0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTItMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkFDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC13ZDIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC13ZDIiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yLTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yLTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMi0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yLTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMi0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMi0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTItMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMi0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTItMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yLTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTItMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yLTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IldPUkxEX0RJU0NBUkQiLCJvcGVyYXRpb25faWQiOiJPUC13ZDMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC13ZDMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwMV9DT05TVU1BQkxFIiwiaWQiOiJob2xkLWNhbmNlbC11bnVzZWQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWhjMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1oYzIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtaGMzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMy0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtaGMxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtaGMxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMy0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMy0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMy0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zLTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkNBTkNFTF9SRVFVRVNUIiwib3BlcmF0aW9uX2lkIjoiT1AtaGMyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtaGMyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zLTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zLTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMy0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zLTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMy0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMy0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMy0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zLTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zLTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJDQU5DRUxfRUZGRUNUSVZFIiwib3BlcmF0aW9uX2lkIjoiT1AtaGMzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtaGMzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDFfQ09OU1VNQUJMRSIsImlkIjoicmVmdW5kLWNvbnN1bWVkLWV4cGxpY2l0IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yZjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcmYyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXJmMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTQtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNC0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTQtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTQtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC00LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTQtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS00LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNC0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS00LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNC0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcmYxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcmYxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC00LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy00LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNC0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy00LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNC0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTQtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNC0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTQtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC00LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTQtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC00LTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo5LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkFDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC1yZjIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yZjIiLCJyZWZ1bmRhYmxlIjp0cnVlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTQtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTQtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC00LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTQtMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC00LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy00LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNC0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy00LTIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtNC0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTQtMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtNC0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTQtMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVGVU5EIiwib3BlcmF0aW9uX2lkIjoiT1AtcmYzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcmYzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDJfUEVBSyIsImlkIjoicGVhay1jdXJyZW50LWhpZ2h3YXRlciIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsImtpbmQiOiJQRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjYXAiOjEwLCJjdXJyZW50IjowLCJoaWdoX3dhdGVyIjowLCJyZXNlcnZlZCI6MH0sInVuaXRfaWQiOiJ3b3JrZXIifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXAxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcDIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1wMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC01LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS01LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS01LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NywiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1wMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXAxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC01LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy01LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy01LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTUtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo3LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXAyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcDIiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC01LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy01LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy01LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTUtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo3LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVMRUFTRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXAzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcDMiLCJyZWxlYXNlX2Zyb20iOiJDVVJSRU5UIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDJfUEVBSyIsImlkIjoicGVhay1vdmVyLWNhcCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsImtpbmQiOiJQRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjYXAiOjEwLCJjdXJyZW50IjowLCJoaWdoX3dhdGVyIjowLCJyZXNlcnZlZCI6MH0sInVuaXRfaWQiOiJ3b3JrZXIifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXA0IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC02LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy02LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy02LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNi0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNi0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTYtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNi0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTYtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC02LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTYtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC02LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1wNCIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXA0IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDJfUEVBSyIsImlkIjoiZXhjbHVzaXZlLWZvcmstcmVzZXJ2YXRpb25zIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwia2luZCI6IlBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcCI6MTAsImN1cnJlbnQiOjAsImhpZ2hfd2F0ZXIiOjAsInJlc2VydmVkIjowfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AteDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC14MiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQiJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTctMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNy0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTctMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTctMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC03LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTctMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS03LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNy0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS03LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNy0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC14MSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXgxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC03LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy03LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNy0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy03LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNy0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTctMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNy0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTctMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC03LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTctMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC03LTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo2LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXgyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AteDIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUIifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwM19SQVRFIiwiaWQiOiJyYXRlLWNhcHBlZC1yZWZpbGwiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJraW5kIjoiUkFURSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiYXZhaWxhYmxlIjoxMCwiY2FwIjoxMCwibGFzdF9yZWZpbGxfYXQiOjAsInJlZmlsbCI6NSwicmVzZXJ2ZWQiOjAsIndpbmRvdyI6MTB9LCJ1bml0X2lkIjoicmVxdWVzdCJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yMiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXIzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC04LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy04LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtOC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy04LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtOC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtOC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTgtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtOC0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTgtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC04LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTgtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC04LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo4LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXIxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTgtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTgtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC04LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTgtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC04LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy04LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtOC0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy04LTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtOC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTgtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtOC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTgtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjgsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvcGVyYXRpb24iOiJBQ1FVSVJFIiwib3BlcmF0aW9uX2lkIjoiT1AtcjIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yMiIsInJlZnVuZGFibGUiOmZhbHNlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXIzIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcjMiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtcjMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXIzIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXIzIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcjMiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtcjMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXIzIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLXIzIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELXIzIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1yMyIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1yMyIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvcGVyYXRpb24iOiJSRUZJTEwiLCJvcGVyYXRpb25faWQiOiJPUC1yMyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXIzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoyNX1dfX0seyJmYW1pbHkiOiJGMDNfUkFURSIsImlkIjoicmF0ZS12cy1zdG9jay1uby1jb252ZXJzaW9uIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifSx7ImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsImtpbmQiOiJSQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJhdmFpbGFibGUiOjEwLCJjYXAiOjEwLCJsYXN0X3JlZmlsbF9hdCI6MCwicmVmaWxsIjo1LCJyZXNlcnZlZCI6MCwid2luZG93IjoxMH0sInVuaXRfaWQiOiJyZXF1ZXN0In1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtOS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC05LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTktMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS05LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtOS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS05LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtOS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTEsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcjQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjAzX1JBVEUiLCJpZCI6InJhdGUtd2luZG93LW5vdC1lbGFwc2VkIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwia2luZCI6IlJBVEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImF2YWlsYWJsZSI6MTAsImNhcCI6MTAsImxhc3RfcmVmaWxsX2F0IjowLCJyZWZpbGwiOjUsInJlc2VydmVkIjowLCJ3aW5kb3ciOjEwfSwidW5pdF9pZCI6InJlcXVlc3QifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXI1IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEwLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEwLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEwLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTAtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEwLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTAtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTAtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEwLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEwLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTAtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjksImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvcGVyYXRpb24iOiJBQ1FVSVJFIiwib3BlcmF0aW9uX2lkIjoiT1AtcjUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yNSIsInJlZnVuZGFibGUiOmZhbHNlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEwLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEwLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEwLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTAtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEwLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTAtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTAtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEwLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEwLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTAtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvcGVyYXRpb24iOiJSRUZJTEwiLCJvcGVyYXRpb25faWQiOiJPUC1yNiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXI2IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDRfTEVBU0UiLCJpZCI6ImxlYXNlLWV4cGlyeSIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJraW5kIjoiTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImFjdGl2ZSI6W10sImNhcGFjaXR5IjoyLCJleHBpcmVkIjpbXSwiaGlzdG9yeSI6W119LCJ1bml0X2lkIjoidG9vbC1zZWF0In1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTExLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTExLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTExLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTEtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTExLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTEtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTEtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTExLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTExLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTEtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwiZXBvY2giOjEsImV4cGlyZXNfYXQiOjE1LCJvcGVyYXRpb24iOiJMRUFTRV9HUkFOVCIsIm9wZXJhdGlvbl9pZCI6Ik9QLWwxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULWwyIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtbDIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtbDIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLWwyIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULWwyIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtbDIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtbDIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLWwyIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLWwyIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELWwyIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1sMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1sMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwiZXBvY2giOjEsImxlYXNlX2lkIjoiT1AtbDEiLCJvcGVyYXRpb24iOiJMRUFTRV9VU0UiLCJvcGVyYXRpb25faWQiOiJPUC1sMiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWwyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxNn1dfX0seyJmYW1pbHkiOiJGMDRfTEVBU0UiLCJpZCI6ImxlYXNlLXJldm9rZS1hZnRlci11c2UiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwia2luZCI6IkxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJhY3RpdmUiOltdLCJjYXBhY2l0eSI6MiwiZXhwaXJlZCI6W10sImhpc3RvcnkiOltdfSwidW5pdF9pZCI6InRvb2wtc2VhdCJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWwzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw0IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw1IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMi0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTItMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMi0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEyLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMi0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEyLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEyLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTItMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMi0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEyLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsImVwb2NoIjoxLCJleHBpcmVzX2F0IjozMCwib3BlcmF0aW9uIjoiTEVBU0VfR1JBTlQiLCJvcGVyYXRpb25faWQiOiJPUC1sMyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWwzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMi0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTItMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMi0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMi0xIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEyLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMi0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEyLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEyLTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTItMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMi0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMi0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEyLTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsImVwb2NoIjoxLCJsZWFzZV9pZCI6Ik9QLWwzIiwib3BlcmF0aW9uIjoiTEVBU0VfVVNFIiwib3BlcmF0aW9uX2lkIjoiT1AtbDQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTItMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEyLTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTItMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTItMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMi0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTItMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMi0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMi0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEyLTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTItMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTItMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMi0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJsZWFzZV9pZCI6Ik9QLWwzIiwib3BlcmF0aW9uIjoiTEVBU0VfUkVWT0tFIiwib3BlcmF0aW9uX2lkIjoiT1AtbDUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjA0X0xFQVNFIiwiaWQiOiJsZWFzZS1yZW5ldy1lcG9jaCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJraW5kIjoiTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImFjdGl2ZSI6W10sImNhcGFjaXR5IjoyLCJleHBpcmVkIjpbXSwiaGlzdG9yeSI6W119LCJ1bml0X2lkIjoidG9vbC1zZWF0In1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDciLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEzLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEzLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEzLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMy0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEzLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwiZXBvY2giOjEsImV4cGlyZXNfYXQiOjIwLCJvcGVyYXRpb24iOiJMRUFTRV9HUkFOVCIsIm9wZXJhdGlvbl9pZCI6Ik9QLWw2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEzLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEzLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEzLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMy0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEzLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwiZXBvY2giOjIsImV4cGlyZXNfYXQiOjQwLCJsZWFzZV9pZCI6Ik9QLWw2Iiwib3BlcmF0aW9uIjoiTEVBU0VfUkVORVciLCJvcGVyYXRpb25faWQiOiJPUC1sNyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw3IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDVfU0hBUkUiLCJpZCI6InNoYXJlLXNpYmxpbmctb3ZlcnN1YnNjcmlwdGlvbiIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU0hBUkUiLCJraW5kIjoiU0hBUkUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcGFjaXR5IjoxMCwiY2hpbGRyZW4iOltdLCJyZXZva2VkX2hpc3RvcnkiOltdfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXMxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXMyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTQtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNC0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE0LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE0LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE0LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTQtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNC0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE0LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo2LCJjaGlsZF9pZCI6IkIxIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU0hBUkUiLCJvcGVyYXRpb24iOiJTSEFSRV9BTExPQ0FURSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXMxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE0LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE0LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE0LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTQtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE0LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTQtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTQtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE0LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE0LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTQtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjIiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zMiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjA1X1NIQVJFIiwiaWQiOiJzaGFyZS1wYXJlbnQtcmV2b2tlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsImtpbmQiOiJTSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY2FwYWNpdHkiOjEwLCJjaGlsZHJlbiI6W10sInJldm9rZWRfaGlzdG9yeSI6W119LCJ1bml0X2lkIjoid29ya2VyIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY2hpbGRfaWQiOiJCMSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3BlcmF0aW9uIjoiU0hBUkVfUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM0Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX1JFVk9LRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM1Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwNV9TSEFSRSIsImlkIjoic2hhcmUtY2hpbGQtdXNlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsImtpbmQiOiJTSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY2FwYWNpdHkiOjEwLCJjaGlsZHJlbiI6W10sInJldm9rZWRfaGlzdG9yeSI6W119LCJ1bml0X2lkIjoid29ya2VyIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczciLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczgiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE2LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNi0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE2LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE2LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTYtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE2LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTYtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTYtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE2LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE2LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTYtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTYtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE2LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTYtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTYtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNi0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTYtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNi0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNi0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE2LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTYtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTYtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNi0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY2hpbGRfaWQiOiJCMSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3BlcmF0aW9uIjoiU0hBUkVfUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM3Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczciLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE2LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNi0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE2LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE2LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTYtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE2LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTYtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTYtMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNi0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE2LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE2LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTYtMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjMsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC1zOCIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXM4IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDZfQ09OVElOR0VOQ1kiLCJpZCI6ImNvbnRpbmdlbmN5LW92ZXJydW4tZGVuaWVkIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vMiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTctMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE3LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTctMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTctMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTctMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNy0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE3LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTctMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTctMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNy0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OTUsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW8xIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbzEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE3LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE3LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE3LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTctMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE3LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTctMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTctMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNy0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE3LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE3LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTctMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEwNSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJBQ1FVSVJFIiwib3BlcmF0aW9uX2lkIjoiT1AtbzIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vMiIsInJlZnVuZGFibGUiOmZhbHNlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwNl9DT05USU5HRU5DWSIsImlkIjoiY29udGluZ2VuY3ktZXNjcm93LWV4cGxpY2l0IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vNSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTgtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE4LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTgtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTgtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTgtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOC0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE4LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTgtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTgtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOC0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OTUsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW8zIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbzMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE4LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE4LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE4LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTgtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE4LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTgtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTgtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE4LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE4LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTgtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjUsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiRVNDUk9XIiwib3BlcmF0aW9uX2lkIjoiT1AtbzQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1vNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTgtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE4LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTgtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTgtMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOC0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTgtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOC0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOC0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE4LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTgtMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTgtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOC0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTAwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkFDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC1vNSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW81IiwicmVmdW5kYWJsZSI6ZmFsc2UsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjA3X1BST1ZJREVSIiwiaWQiOiJwcm92aWRlci1lc3RpbWF0ZS1pbnZvaWNlLWNyZWRpdCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEyLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX0VTVElNQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtdjEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MSIsInByaW9yX2ZhY3RfaWQiOm51bGwsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1FU1RJTUFURSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTMsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfT0JTRVJWRUQiLCJvcGVyYXRpb25faWQiOiJPUC12MiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYyIiwicHJpb3JfZmFjdF9pZCI6IlBGMS1FU1RJTUFURSIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1PQlNFUlZFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTMsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfU0VUVExFRCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXYzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjMiLCJwcmlvcl9mYWN0X2lkIjoiUEYxLU9CU0VSVkVEIiwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLVNFVFRMRUQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTMiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0zIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTMiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMyIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTMiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMyIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMyIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0zIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTMiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTMiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMyIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfQ1JFRElUIiwib3BlcmF0aW9uX2lkIjoiT1AtdjQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NCIsInByaW9yX2ZhY3RfaWQiOiJQRjEtU0VUVExFRCIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1DUkVESVQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwN19QUk9WSURFUiIsImlkIjoicHJvdmlkZXItdW5rbm93biIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIwLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIwLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIwLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTIwLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjAtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIwLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjAtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEyLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX0VTVElNQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtdjUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NSIsInByaW9yX2ZhY3RfaWQiOm51bGwsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMi1FU1RJTUFURSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTIwLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjAtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yMC0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjAtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yMC0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIwLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjAtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjAtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yMC0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9VTktOT1dOIiwib3BlcmF0aW9uX2lkIjoiT1AtdjYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NiIsInByaW9yX2ZhY3RfaWQiOiJQRjItRVNUSU1BVEUiLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjItVU5LTk9XTiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjA4X1JFQ09WRVJZIiwiaWQiOiJsb3N0LXJlc3BvbnNlLXJldHJ5IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1ycjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXJyMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLXJyMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1ycjEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXJyMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC1ycjEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1ycjEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtcnIxIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy1ycjEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtcnIxIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELXJyMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtcnIxIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELXJyMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjgsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXJyMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXJyMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6IkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsia2luZCI6IlJFTE9BRCJ9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnIyIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnIyIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnIyIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXJyMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLXJyMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1ycjIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXJyMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnIyIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnIyIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcnIxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcnIxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDhfUkVDT1ZFUlkiLCJpZCI6InJldHJ5LWJlZm9yZS1jb21taXQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXJyMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnIzIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnIzIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyMyIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnIzIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXJyMyIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLXJyMyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1ycjMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXJyMyIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjMiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnIzIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjMiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnIzIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcnIzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcnIzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiQkVGT1JFX0NPTU1JVCIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJraW5kIjoiUkVMT0FEIn0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC1ycjQiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1ycjQiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtcnI0IiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy1ycjQiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnI0IiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnI0IiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyNCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnI0IiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLXJyNCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1ycjQiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLXJyNCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1ycjQiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo4LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1ycjMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1ycjMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwOF9SRUNPVkVSWSIsImlkIjoicmV0YWluZWQtdG9tYi1leHBpcnkiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXJyNSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1ycjYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIzLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIzLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIzLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTIzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjMtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMy0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIzLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjMtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjgsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXJyNSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXJyNSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnI2IiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnI2IiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyNiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnI2IiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXJyNiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLXJyNiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1ycjYiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXJyNiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjYiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnI2Iiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjYiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnI2IiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJUT01CIiwib3BlcmF0aW9uX2lkIjoiT1AtcnI2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcnI2IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwidGFyZ2V0X29wZXJhdGlvbl9pZCI6Ik9QLXJyNSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnI3IiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnI3IiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyNyIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnI3IiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXJyNyIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLXJyNyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1ycjciLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXJyNyIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjciLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnI3Iiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjciLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnI3IiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcnI1Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcnI1IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93Ijo1MH1dfX0seyJmYW1pbHkiOiJGMDlfU1BFQ1VMQVRJT04iLCJpZCI6InNwZWN1bGF0aXZlLWxvc2VyLXJldmVyc2libGUiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXNwMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI0LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI0LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI0LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjQtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI0LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjQtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjQtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI0LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI0LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjQtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1zcDEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI0LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI0LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI0LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjQtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI0LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjQtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjQtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI0LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI0LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjQtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFTEVBU0UiLCJvcGVyYXRpb25faWQiOiJPUC1zcDIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDIiLCJyZWxlYXNlX2Zyb20iOiJSRVNFUlZFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjA5X1NQRUNVTEFUSU9OIiwiaWQiOiJzcGVjdWxhdGl2ZS1sb3Nlci1pcnJldmVyc2libGUiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXNwMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atc3A1IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yNS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yNS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI1LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjUtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yNS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI1LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1Atc3AzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atc3AzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yNS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjUtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yNS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yNS0xIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI1LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI1LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI1LTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yNS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNS0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI1LTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJBQ1FVSVJFIiwib3BlcmF0aW9uX2lkIjoiT1Atc3A0Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atc3A0IiwicmVmdW5kYWJsZSI6ZmFsc2UsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjUtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI1LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjUtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjUtMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yNS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjUtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yNS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yNS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI1LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjUtMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjUtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yNS0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJGQUlMIiwib3BlcmF0aW9uX2lkIjoiT1Atc3A1Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atc3A1IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMDlfU1BFQ1VMQVRJT04iLCJpZCI6ImV2YWx1YXRvci1jb3N0IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atc3A3IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yNi0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjYtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yNi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yNi0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI2LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNi0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI2LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI2LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjYtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yNi0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI2LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1zcDYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI2LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNi0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI2LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI2LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjYtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI2LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjYtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjYtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNi0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI2LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI2LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjYtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXNwNyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXNwNyIsInJlZnVuZGFibGUiOmZhbHNlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYwOV9TUEVDVUxBVElPTiIsImlkIjoiZGVwZW5kZW5jeS1yb2xsYmFjayIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1Atc3A4IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXNwOSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDEwIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yNy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjctMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yNy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yNy0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI3LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI3LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI3LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjctMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yNy0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNy0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI3LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo2LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1zcDgiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDgiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI3LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI3LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI3LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjctMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI3LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjctMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjctMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNy0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI3LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI3LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjctMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXNwOSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXNwOSIsInJlZnVuZGFibGUiOmZhbHNlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI3LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yNy0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI3LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI3LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjctMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI3LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjctMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjctMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yNy0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI3LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI3LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjctMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiREVQRU5ERU5DWV9ST0xMQkFDSyIsIm9wZXJhdGlvbl9pZCI6Ik9QLXNwMTAiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zcDEwIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTBfQ0FDSEUiLCJpZCI6ImZyZXNoLWNhY2hlLXJldXNlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1jYTEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI4LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yOC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI4LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI4LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjgtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI4LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjgtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjgtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yOC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI4LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI4LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjgtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNhY2hlX2ZyZXNoIjp0cnVlLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkNBQ0hFX1JFVVNFIiwib3BlcmF0aW9uX2lkIjoiT1AtY2ExIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtY2ExIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTBfQ0FDSEUiLCJpZCI6InN0YWxlLWNhY2hlLXJlY29tcHV0ZSIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtY2EyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWNhMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1jYTQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI5LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI5LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjktMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI5LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI5LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjktMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNhY2hlX2ZyZXNoIjpmYWxzZSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJDQUNIRV9SRVVTRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLWNhMiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWNhMiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjktMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTI5LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjktMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjktMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yOS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjktMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yOS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yOS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTI5LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjktMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjktMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yOS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MywiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtY2EzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtY2EzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yOS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjktMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yOS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yOS0yIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTI5LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yOS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTI5LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTI5LTIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjktMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yOS0yIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yOS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTI5LTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjozLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkFDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC1jYTQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1jYTQiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTFfQVRUUklCVVRJT04iLCJpZCI6ImRlbGVnYXRpb24tYXR0cmlidXRpb24iLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1DSElMRCIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1hMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzAtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMwLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzAtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzAtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zMC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzAtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zMC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zMC0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMwLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzAtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzAtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zMC0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQ0hJTEQiLCJhbW91bnQiOjUsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUNISUxEIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1hMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWExIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTFfQVRUUklCVVRJT04iLCJpZCI6Im1vZGVsLXN1YnN0aXR1dGlvbiIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYTIiLCJyZXNvdXJjZV9pZCI6Ik1PREVMLUEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYTMiLCJyZXNvdXJjZV9pZCI6Ik1PREVMLUEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYTQiLCJyZXNvdXJjZV9pZCI6Ik1PREVMLUIiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTMxLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zMS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMxLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTMxLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzEtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMxLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzEtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzEtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zMS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTMxLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMxLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzEtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjUsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLWEyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYTIiLCJyZXNvdXJjZV9pZCI6Ik1PREVMLUEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTMxLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zMS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMxLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTMxLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzEtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMxLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzEtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzEtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zMS0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTMxLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMxLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzEtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjUsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVMRUFTRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLWEzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYTMiLCJyZWxlYXNlX2Zyb20iOiJSRVNFUlZFRCIsInJlc291cmNlX2lkIjoiTU9ERUwtQSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzEtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMxLTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzEtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzEtMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zMS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzEtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zMS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zMS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMxLTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzEtMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzEtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zMS0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtYTQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1hNCIsInJlc291cmNlX2lkIjoiTU9ERUwtQiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjExX0FUVFJJQlVUSU9OIiwiaWQiOiJ0b29sLXN1YnN0aXR1dGlvbiIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJraW5kIjoiTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImFjdGl2ZSI6W10sImNhcGFjaXR5IjoyLCJleHBpcmVkIjpbXSwiaGlzdG9yeSI6W119LCJ1bml0X2lkIjoidG9vbC1zZWF0In1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYTUiLCJyZXNvdXJjZV9pZCI6IlRPT0wtQiIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzItMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMyLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzItMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzItMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zMi0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzItMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zMi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zMi0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMyLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzItMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzItMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zMi0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJlcG9jaCI6MSwiZXhwaXJlc19hdCI6MzAsIm9wZXJhdGlvbiI6IkxFQVNFX0dSQU5UIiwib3BlcmF0aW9uX2lkIjoiT1AtYTUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1hNSIsInJlc291cmNlX2lkIjoiVE9PTC1CIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTJfTEFURV9DQU5DRUwiLCJpZCI6ImxhdGUtcmVzdWx0LW5vLXJlZnVuZCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTMzLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zMy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMzLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTMzLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzMtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zMy0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTMzLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzMtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjcsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXQxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTMzLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zMy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMzLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTMzLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzMtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTMzLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzMtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzMtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zMy0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTMzLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTMzLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzMtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjcsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXQyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDIiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zMy0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzMtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zMy0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zMy0yIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTMzLTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zMy0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTMzLTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTMzLTIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzMtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zMy0yIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zMy0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTMzLTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkxBVEVfUkVTVUxUIiwib3BlcmF0aW9uX2lkIjoiT1AtdDMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC10MyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjEyX0xBVEVfQ0FOQ0VMIiwiaWQiOiJjYW5jZWwtcmVxdWVzdC1iZWZvcmUtZWZmZWN0aXZlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC10NCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC10NSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC10NiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC10NyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzQtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM0LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzQtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzQtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzQtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNC0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM0LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzQtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzQtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNC0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NywiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtdDQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC10NCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzQtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM0LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzQtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzQtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNC0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzQtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNC0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNC0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM0LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzQtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzQtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNC0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJDQU5DRUxfUkVRVUVTVCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXQ1Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM0LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNC0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM0LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM0LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzQtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM0LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzQtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzQtMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNC0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM0LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM0LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzQtMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjcsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXQ2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdDYiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNC0zIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzQtMyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNC0zIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNC0zIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM0LTMiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNC0zIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM0LTMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM0LTMiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzQtMyIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNC0zIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNC0zIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM0LTMiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkNBTkNFTF9FRkZFQ1RJVkUiLCJvcGVyYXRpb25faWQiOiJPUC10NyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXQ3IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTNfQ09NUE9VTkQiLCJpZCI6ImNvbXBvdW5kLWFsbC1vci1ub25lIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifSx7ImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsImtpbmQiOiJQRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjYXAiOjEwLCJjdXJyZW50IjowLCJoaWdoX3dhdGVyIjowLCJyZXNlcnZlZCI6MH0sInVuaXRfaWQiOiJ3b3JrZXIifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNoaWxkcmVuIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifX0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fV0sImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQ09NUE9VTkQiLCJvcGVyYXRpb25faWQiOiJPUC1tMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTNfQ09NUE9VTkQiLCJpZCI6ImNvbXBvdW5kLW9uZS1kZW5pZWQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9LHsiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwia2luZCI6IlBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcCI6MTAsImN1cnJlbnQiOjAsImhpZ2hfd2F0ZXIiOjAsInJlc2VydmVkIjowfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0yIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0yYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0yYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzYtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM2LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzYtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzYtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNi0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzYtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNi0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM2LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzYtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzYtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNi0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY2hpbGRyZW4iOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM2LTAtT1AtbTJhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzYtMC1PUC1tMmEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzYtMC1PUC1tMmEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM2LTAtT1AtbTJhIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM2LTAtT1AtbTJhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzYtMC1PUC1tMmEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzYtMC1PUC1tMmEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM2LTAtT1AtbTJhIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM2LTAtT1AtbTJhIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM2LTAtT1AtbTJhIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNi0wLU9QLW0yYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNi0wLU9QLW0yYSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0yYSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0yYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM2LTAtT1AtbTJiIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzYtMC1PUC1tMmIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzYtMC1PUC1tMmIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM2LTAtT1AtbTJiIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM2LTAtT1AtbTJiIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzYtMC1PUC1tMmIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzYtMC1PUC1tMmIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM2LTAtT1AtbTJiIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM2LTAtT1AtbTJiIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM2LTAtT1AtbTJiIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNi0wLU9QLW0yYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNi0wLU9QLW0yYiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjE0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0yYiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0yYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fV0sImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQ09NUE9VTkQiLCJvcGVyYXRpb25faWQiOiJPUC1tMiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0yIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTRfQVVUSE9SSVRZIiwiaWQiOiJhdXRob3JpdHktZGVuaWFsLW5vLWRlbHRhIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1kMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtZDEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1kMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1kMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtZDEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtZDEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1kMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1kMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtZDEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtZDEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtZDEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLWQxIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELWQxIiwidmVyZGljdCI6IkRFTlkiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1kMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWQxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTRfQVVUSE9SSVRZIiwiaWQiOiJnbG9iYWwtd29ybGQtc2NvcGUtY3Jvc3NpbmciLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWQyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1CIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zOC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzgtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zOC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zOC0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM4LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zOC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM4LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM4LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzgtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zOC0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zOC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM4LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1kMiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWQyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1CIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTVfU0VQQVJBVElPTiIsImlkIjoiZWZmZWN0LXNlcGFyYXRpb24iLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWUxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zOS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zOS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM5LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzktMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zOS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM5LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkVGRkVDVF9BVVRIT1JJWkUiLCJvcGVyYXRpb25faWQiOiJPUC1lMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWUxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTVfU0VQQVJBVElPTiIsImlkIjoicHJvbW90aW9uLXNlcGFyYXRpb24iLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWUyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC00MC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNDAtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC00MC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy00MC0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTQwLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy00MC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTQwLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTQwLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtNDAtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC00MC0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS00MC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTQwLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST01PVEUiLCJvcGVyYXRpb25faWQiOiJPUC1lMiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWUyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTZfVU5TVVBQT1JURUQiLCJpZCI6InVuc3VwcG9ydGVkLWNyb3NzLWtpbmQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9LHsiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwia2luZCI6IlBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcCI6MTAsImN1cnJlbnQiOjAsImhpZ2hfd2F0ZXIiOjAsInJlc2VydmVkIjowfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXUxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC00MS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNDEtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC00MS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy00MS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTQxLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy00MS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTQxLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTQxLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtNDEtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC00MS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS00MS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTQxLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo1LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkNPTlZFUlQiLCJvcGVyYXRpb25faWQiOiJPUC11MSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXUxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwidGFyZ2V0X2RpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJjb21wb3VuZC1kdXBsaWNhdGUtY2hpbGQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9LHsiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwia2luZCI6IlBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcCI6MTAsImN1cnJlbnQiOjAsImhpZ2hfd2F0ZXIiOjAsInJlc2VydmVkIjowfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY2hpbGRyZW4iOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFhIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFhIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFhIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFhIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFiIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFiIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFiIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFiIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFiIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFiIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtbTFhIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbTFiIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn19XSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJDT01QT1VORCIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbTEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoiY29tcG91bmQtYXR0YWNrZXItY2hpbGQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9LHsiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwia2luZCI6IlBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcCI6MTAsImN1cnJlbnQiOjAsImhpZ2hfd2F0ZXIiOjAsInJlc2VydmVkIjowfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY2hpbGRyZW4iOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFhIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFhIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFhIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFhIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFiIiwiYWN0b3JfaWQiOiJBVFRBQ0tFUiIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fV0sImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQ09NUE9VTkQiLCJvcGVyYXRpb25faWQiOiJPUC1tMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6ImRlbmllZC1hZnRlci1mYXVsdCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtZDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULWQxIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtZDEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtZDEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLWQxIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULWQxIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtZDEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtZDEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLWQxIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLWQxIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELWQxIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1kMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1kMSIsInZlcmRpY3QiOiJERU5ZIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtZDEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1kMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6IkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJkZW5pZWQtYmVmb3JlLWZhdWx0IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1kMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtZDEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1kMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1kMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtZDEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtZDEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1kMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1kMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtZDEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtZDEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtZDEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLWQxIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELWQxIiwidmVyZGljdCI6IkRFTlkiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1kMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWQxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiQkVGT1JFX0NPTU1JVCIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6ImhhbmRvZmYtZ2VuZXJhdGlvbi1taXNtYXRjaCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtZDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULWQxIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtZDEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtZDEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLWQxIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULWQxIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtZDEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtZDEiLCJnZW5lcmF0aW9uIjoyLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLWQxIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLWQxIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELWQxIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1kMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1kMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLWQxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtZDEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoiZnJlc2huZXNzLXJlcGVhdCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYzEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYzIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtYzMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjMwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1jMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWMxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xLTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoyMCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJBQ1FVSVJFIiwib3BlcmF0aW9uX2lkIjoiT1AtYzIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1jMiIsInJlZnVuZGFibGUiOmZhbHNlLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xLTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEtMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xLTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xLTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xLTIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEtMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEtMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEwLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFTEVBU0UiLCJvcGVyYXRpb25faWQiOiJPUC1jMyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWMzIiwicmVsZWFzZV9mcm9tIjoiUkVTRVJWRUQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoicmVwbGF5LWJpbmRpbmctbWlzbWF0Y2giLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXJyMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnIxIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnIxIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnIxIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULXJyMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLXJyMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC1ycjEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLXJyMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnIxIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS1ycjEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtcnIxIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcnIxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcnIxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiQUZURVJfQ09NTUlUX0JFRk9SRV9SRVNQT05TRSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJraW5kIjoiUkVMT0FEIn0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC1ycjIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy1ycjIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtcnIyIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy1ycjIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtcnIyIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtcnIyIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILXJyMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtcnIyIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLXJyMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1ycjIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLXJyMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC1ycjIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo5LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1ycjEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1ycjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoicGVhay1yZWxlYXNlLWVudW0taW52YWxpZCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsImtpbmQiOiJQRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjYXAiOjEwLCJjdXJyZW50IjowLCJoaWdoX3dhdGVyIjowLCJyZXNlcnZlZCI6MH0sInVuaXRfaWQiOiJ3b3JrZXIifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXAxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcDIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1wMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC01LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS01LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS01LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtNS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NywiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1wMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXAxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC01LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy01LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy01LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTUtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo3LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiQUNRVUlSRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXAyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcDIiLCJyZWZ1bmRhYmxlIjpmYWxzZSwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC01LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy01LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtNS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy01LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtNS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtNS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTUtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtNS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTUtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC01LTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo3LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVMRUFTRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXAzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcDMiLCJyZWxlYXNlX2Zyb20iOiJGUkVFIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6ImxlYXNlLWdyYW50LWV4cGlyZWQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwia2luZCI6IkxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJhY3RpdmUiOltdLCJjYXBhY2l0eSI6MiwiZXhwaXJlZCI6W10sImhpc3RvcnkiOltdfSwidW5pdF9pZCI6InRvb2wtc2VhdCJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw2IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw3IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTMtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMy0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEzLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEzLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEzLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTMtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMy0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMy0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEzLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsImVwb2NoIjoxLCJleHBpcmVzX2F0IjoxMCwib3BlcmF0aW9uIjoiTEVBU0VfR1JBTlQiLCJvcGVyYXRpb25faWQiOiJPUC1sNiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw2IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMy0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTMtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMy0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMy0xIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEzLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEzLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEzLTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTMtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMy0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMy0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEzLTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsImVwb2NoIjoyLCJleHBpcmVzX2F0Ijo0MCwibGVhc2VfaWQiOiJPUC1sNiIsIm9wZXJhdGlvbiI6IkxFQVNFX1JFTkVXIiwib3BlcmF0aW9uX2lkIjoiT1AtbDciLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJsZWFzZS1lcG9jaC1za2lwIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsImtpbmQiOiJMRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiYWN0aXZlIjpbXSwiY2FwYWNpdHkiOjIsImV4cGlyZWQiOltdLCJoaXN0b3J5IjpbXX0sInVuaXRfaWQiOiJ0b29sLXNlYXQifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTMtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMy0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTMtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMy0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJlcG9jaCI6MSwiZXhwaXJlc19hdCI6MjAsIm9wZXJhdGlvbiI6IkxFQVNFX0dSQU5UIiwib3BlcmF0aW9uX2lkIjoiT1AtbDYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMy0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTMtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMy0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMy0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTMtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMy0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJlcG9jaCI6MywiZXhwaXJlc19hdCI6NDAsImxlYXNlX2lkIjoiT1AtbDYiLCJvcGVyYXRpb24iOiJMRUFTRV9SRU5FVyIsIm9wZXJhdGlvbl9pZCI6Ik9QLWw3Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDciLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoic2hhcmUtY2hpbGQtcmVtaW50IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsImtpbmQiOiJTSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY2FwYWNpdHkiOjEwLCJjaGlsZHJlbiI6W10sInJldm9rZWRfaGlzdG9yeSI6W119LCJ1bml0X2lkIjoid29ya2VyIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY2hpbGRfaWQiOiJCMSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3BlcmF0aW9uIjoiU0hBUkVfUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM0Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX1JFVk9LRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM1Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTF9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJwcm92aWRlci1mb3JrIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfRVNUSU1BVEUiLCJvcGVyYXRpb25faWQiOiJPUC12MSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYxIiwicHJpb3JfZmFjdF9pZCI6bnVsbCwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLUVTVElNQVRFIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0xIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMywiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9PQlNFUlZFRCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXYyIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjIiLCJwcmlvcl9mYWN0X2lkIjoiUEYxLUVTVElNQVRFIiwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLU9CU0VSVkVEIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0yIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0yIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMywiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9TRVRUTEVEIiwib3BlcmF0aW9uX2lkIjoiT1AtdjMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MyIsInByaW9yX2ZhY3RfaWQiOiJQRjEtRVNUSU1BVEUiLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjEtU0VUVExFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMyIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTMiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMyIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMyIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0zIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0zIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0zIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTMiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMyIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0zIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9DUkVESVQiLCJvcGVyYXRpb25faWQiOiJPUC12NCIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY0IiwicHJpb3JfZmFjdF9pZCI6IlBGMS1TRVRUTEVEIiwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLUNSRURJVCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJwcm92aWRlci1hY2NvdW50LXN3aXRjaCIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEyLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX0VTVElNQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtdjEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MSIsInByaW9yX2ZhY3RfaWQiOm51bGwsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1FU1RJTUFURSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTMsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfT0JTRVJWRUQiLCJvcGVyYXRpb25faWQiOiJPUC12MiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYyIiwicHJpb3JfZmFjdF9pZCI6IlBGMS1FU1RJTUFURSIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJPVEhFUiIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjEtT0JTRVJWRUQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEzLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX1NFVFRMRUQiLCJvcGVyYXRpb25faWQiOiJPUC12MyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYzIiwicHJpb3JfZmFjdF9pZCI6IlBGMS1PQlNFUlZFRCIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1TRVRUTEVEIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0zIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0zIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0zIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTMiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0zIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTMiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMyIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0zIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0zIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTMiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoyLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX0NSRURJVCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXY0Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjQiLCJwcmlvcl9mYWN0X2lkIjoiUEYxLVNFVFRMRUQiLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjEtQ1JFRElUIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6InByb3ZpZGVyLWNyZWRpdC1vdmVyYm91bmQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYxIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYyIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYzIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY0IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9FU1RJTUFURSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXYxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjEiLCJwcmlvcl9mYWN0X2lkIjpudWxsLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjEtRVNUSU1BVEUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEzLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX09CU0VSVkVEIiwib3BlcmF0aW9uX2lkIjoiT1AtdjIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MiIsInByaW9yX2ZhY3RfaWQiOiJQRjEtRVNUSU1BVEUiLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjEtT0JTRVJWRUQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0yIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTIiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0yIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMiIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEzLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX1NFVFRMRUQiLCJvcGVyYXRpb25faWQiOiJPUC12MyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYzIiwicHJpb3JfZmFjdF9pZCI6IlBGMS1PQlNFUlZFRCIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1TRVRUTEVEIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0zIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0zIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0zIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTMiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0zIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTMiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMyIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0zIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0zIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTMiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo5OSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9DUkVESVQiLCJvcGVyYXRpb25faWQiOiJPUC12NCIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY0IiwicHJpb3JfZmFjdF9pZCI6IlBGMS1TRVRUTEVEIiwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLUNSRURJVCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJkaW1lbnNpb24tcGFyZW50LWN5Y2xlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6IkQtUkFURSIsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn0seyJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJraW5kIjoiUkFURSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOiJELVNUT0NLIiwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJhdmFpbGFibGUiOjEwLCJjYXAiOjEwLCJsYXN0X3JlZmlsbF9hdCI6MCwicmVmaWxsIjo1LCJyZXNlcnZlZCI6MCwid2luZG93IjoxMH0sInVuaXRfaWQiOiJyZXF1ZXN0In1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtOS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC05LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTktMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS05LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtOS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS05LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtOS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTEsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtcjQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJ1bml0LWtpbmQtaW5jb21wYXRpYmxlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifSx7ImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsImtpbmQiOiJSQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJhdmFpbGFibGUiOjEwLCJjYXAiOjEwLCJsYXN0X3JlZmlsbF9hdCI6MCwicmVmaWxsIjo1LCJyZXNlcnZlZCI6MCwid2luZG93IjoxMH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC05LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTktMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC05LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy05LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtOS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy05LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTktMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTktMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjExLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXI0Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoibGVhc2UtZXBvY2gtemVybyIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJraW5kIjoiTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImFjdGl2ZSI6W10sImNhcGFjaXR5IjoyLCJleHBpcmVkIjpbXSwiaGlzdG9yeSI6W119LCJ1bml0X2lkIjoidG9vbC1zZWF0In1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDciLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEzLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMy0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEzLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEzLTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMy0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEzLTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwiZXBvY2giOjAsImV4cGlyZXNfYXQiOjIwLCJvcGVyYXRpb24iOiJMRUFTRV9HUkFOVCIsIm9wZXJhdGlvbl9pZCI6Ik9QLWw2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbDYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTEzLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xMy0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTEzLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTEzLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xMy0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTEzLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELUxFQVNFIiwiZXBvY2giOjIsImV4cGlyZXNfYXQiOjQwLCJsZWFzZV9pZCI6Ik9QLWw2Iiwib3BlcmF0aW9uIjoiTEVBU0VfUkVORVciLCJvcGVyYXRpb25faWQiOiJPUC1sNyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLWw3IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH1dfX0seyJmYW1pbHkiOiJGMTdfUkVWSUVXX0FUVEFDS1MiLCJpZCI6InJhdGUtbGFzdC1yZWZpbGwtcmVncmVzc2lvbiIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsImtpbmQiOiJSQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJhdmFpbGFibGUiOjEwLCJjYXAiOjEwLCJsYXN0X3JlZmlsbF9hdCI6MTEsInJlZmlsbCI6NSwicmVzZXJ2ZWQiOjAsIndpbmRvdyI6MTB9LCJ1bml0X2lkIjoicmVxdWVzdCJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1SQVRFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVJBVEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1yNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTAtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEwLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTAtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTAtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTAtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMC0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEwLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTAtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTAtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMC0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsIm9wZXJhdGlvbiI6IkFDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC1yNSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXI1IiwicmVmdW5kYWJsZSI6ZmFsc2UsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTAtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEwLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTAtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTAtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMC0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTAtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMC0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMC0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEwLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTAtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTAtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMC0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUkFURSIsIm9wZXJhdGlvbiI6IlJFRklMTCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXI2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtcjYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoicHJvdmlkZXItb3BlcmF0aW9uLWNvbGxpc2lvbiIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJraW5kIjoiQ09OU1VNQUJMRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY29uc3VtZWQiOjAsImV4cGlyZWQiOjAsImZyZWUiOjEwMCwiaXNzdWVkIjoxMDAsIm5vbnJlZnVuZGFibGUiOjAsInJlZnVuZGFibGUiOjAsInJlc2VydmVkIjowLCJ1bmtub3duX2Rpc3B1dGVkIjowfSwidW5pdF9pZCI6InRva2VuIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjEyLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX0VTVElNQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtdjEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MSIsInByaW9yX2ZhY3RfaWQiOm51bGwsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1FU1RJTUFURSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTMsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfT0JTRVJWRUQiLCJvcGVyYXRpb25faWQiOiJPUC12MSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYyIiwicHJpb3JfZmFjdF9pZCI6IlBGMS1FU1RJTUFURSIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1PQlNFUlZFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTMsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfU0VUVExFRCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXYzIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjMiLCJwcmlvcl9mYWN0X2lkIjoiUEYxLU9CU0VSVkVEIiwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLVNFVFRMRUQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTMiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0zIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTMiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTMiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMyIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTMiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMyIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMyIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0zIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTMiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTMiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMyIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfQ1JFRElUIiwib3BlcmF0aW9uX2lkIjoiT1AtdjQiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NCIsInByaW9yX2ZhY3RfaWQiOiJQRjEtU0VUVExFRCIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMS1DUkVESVQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoicHJvdmlkZXItdW5rbm93bi1vYnNlcnZlZC1zZXR0bGVkIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTIwLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjAtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yMC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjAtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yMC0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIwLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjAtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjAtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yMC0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfRVNUSU1BVEUiLCJvcGVyYXRpb25faWQiOiJPUC12NSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY1IiwicHJpb3JfZmFjdF9pZCI6bnVsbCwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYyLUVTVElNQVRFIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yMC0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjAtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yMC0xIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIwLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIwLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIwLTEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjAtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yMC0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo5LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX1VOS05PV04iLCJvcGVyYXRpb25faWQiOiJPUC12NiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY2IiwicHJpb3JfZmFjdF9pZCI6IlBGMi1FU1RJTUFURSIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMi1VTktOT1dOIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yMC0xLUVWSURFTkNFIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjAtMS1FVklERU5DRSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0xLUVWSURFTkNFIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yMC0xLUVWSURFTkNFIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIwLTEtRVZJREVOQ0UiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0xLUVWSURFTkNFIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIwLTEtRVZJREVOQ0UiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIwLTEtRVZJREVOQ0UiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjAtMS1FVklERU5DRSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yMC0xLUVWSURFTkNFIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMC0xLUVWSURFTkNFIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTEtRVZJREVOQ0UiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo5LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlBST1ZJREVSX09CU0VSVkVEIiwib3BlcmF0aW9uX2lkIjoiT1AtdjciLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NiIsInByaW9yX2ZhY3RfaWQiOiJQRjItVU5LTk9XTiIsInByb3ZpZGVyX2FjY291bnRfaWQiOiJQUk9WSURFUi1BIiwicHJvdmlkZXJfZmFjdF9pZCI6IlBGMi1PQlNFUlZFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMS1FVklERU5DRS1TRVRUTEUiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0xLUVWSURFTkNFLVNFVFRMRSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0xLUVWSURFTkNFLVNFVFRMRSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMS1FVklERU5DRS1TRVRUTEUiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMS1FVklERU5DRS1TRVRUTEUiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0xLUVWSURFTkNFLVNFVFRMRSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0xLUVWSURFTkNFLVNFVFRMRSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMS1FVklERU5DRS1TRVRUTEUiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjAtMS1FVklERU5DRS1TRVRUTEUiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjAtMS1FVklERU5DRS1TRVRUTEUiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIwLTEtRVZJREVOQ0UtU0VUVExFIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTEtRVZJREVOQ0UtU0VUVExFIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6OSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9TRVRUTEVEIiwib3BlcmF0aW9uX2lkIjoiT1AtdjgiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NiIsInByaW9yX2ZhY3RfaWQiOiJQRjItT0JTRVJWRUQiLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjItU0VUVExFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJwcm92aWRlci11bmtub3duLWRpcmVjdC1zZXR0bGUiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY1IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXY2IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0yMC0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMjAtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0yMC0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0yMC0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIwLTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIwLTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIwLTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMjAtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0yMC0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMC0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9FU1RJTUFURSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXY1Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjUiLCJwcmlvcl9mYWN0X2lkIjpudWxsLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjItRVNUSU1BVEUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIwLTEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0xIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIwLTEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIwLTEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTIwLTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjAtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMC0xIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIwLTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjAtMSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjksImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfVU5LTk9XTiIsIm9wZXJhdGlvbl9pZCI6Ik9QLXY2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjYiLCJwcmlvcl9mYWN0X2lkIjoiUEYyLUVTVElNQVRFIiwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYyLVVOS05PV04iLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTIwLTEtRVZJREVOQ0UiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0yMC0xLUVWSURFTkNFIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTIwLTEtRVZJREVOQ0UiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTIwLTEtRVZJREVOQ0UiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMjAtMS1FVklERU5DRSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTIwLTEtRVZJREVOQ0UiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMjAtMS1FVklERU5DRSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMjAtMS1FVklERU5DRSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0yMC0xLUVWSURFTkNFIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTIwLTEtRVZJREVOQ0UiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTIwLTEtRVZJREVOQ0UiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMjAtMS1FVklERU5DRSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjksImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfU0VUVExFRCIsIm9wZXJhdGlvbl9pZCI6Ik9QLXY3Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjYiLCJwcmlvcl9mYWN0X2lkIjoiUEYyLVVOS05PV04iLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjItU0VUVExFRCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJuZXN0ZWQtY29tcG91bmQiLCJpbnB1dHMiOnsiaW5pdGlhbF9zdGF0ZSI6eyJkaW1lbnNpb25zIjpbeyJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwia2luZCI6IkNPTlNVTUFCTEUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNvbnN1bWVkIjowLCJleHBpcmVkIjowLCJmcmVlIjoxMDAsImlzc3VlZCI6MTAwLCJub25yZWZ1bmRhYmxlIjowLCJyZWZ1bmRhYmxlIjowLCJyZXNlcnZlZCI6MCwidW5rbm93bl9kaXNwdXRlZCI6MH0sInVuaXRfaWQiOiJ0b2tlbiJ9LHsiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwia2luZCI6IlBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcCI6MTAsImN1cnJlbnQiOjAsImhpZ2hfd2F0ZXIiOjAsInJlc2VydmVkIjowfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY2hpbGRyZW4iOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFhIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAtT1AtbTFhIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMC1PUC1tMWEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMC1PUC1tMWEiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAtT1AtbTFhIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFhIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFhIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNoaWxkcmVuIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifX0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fV0sImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQ09NUE9VTkQiLCJvcGVyYXRpb25faWQiOiJPUC1tMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn19LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMC1PUC1tMWIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wLU9QLW0xYiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wLU9QLW0xYiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMC1PUC1tMWIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMC1PUC1tMWIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wLU9QLW0xYiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wLU9QLW0xYiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMC1PUC1tMWIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFiIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFiIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifX1dLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkNPTVBPVU5EIiwib3BlcmF0aW9uX2lkIjoiT1AtbTEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJzaGFyZS11c2VkLXJldm9rZS1yZWFsbG9jYXRlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsImtpbmQiOiJTSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiY2FwYWNpdHkiOjEwLCJjaGlsZHJlbiI6W10sInJldm9rZWRfaGlzdG9yeSI6W119LCJ1bml0X2lkIjoid29ya2VyIn1dLCJwcm92aWRlcl9mYWN0cyI6W10sInJlc291cmNlX2JpbmRpbmdfcGxhbnMiOlt7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczMiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczMiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTEiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNS0xIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNS0xIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNS0xIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTUtMSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNS0xIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY2hpbGRfaWQiOiJCMSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3BlcmF0aW9uIjoiU0hBUkVfUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM0Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczQiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTEtVVNFIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMS1VU0UiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMS1VU0UiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTEtVVNFIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTEtVVNFIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMS1VU0UiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMS1VU0UiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTEtVVNFIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTEtVVNFIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE1LTEtVVNFIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0xLVVTRSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNS0xLVVTRSIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjQsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FDUVVJUkUiLCJvcGVyYXRpb25faWQiOiJPUC1zNGEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zNCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTIiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTUtMiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNS0yIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNS0yIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNS0yIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE1LTIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTUtMiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNS0yIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MCwiY2hpbGRfaWQiOiJCMSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3BlcmF0aW9uIjoiU0hBUkVfUkVWT0tFIiwib3BlcmF0aW9uX2lkIjoiT1AtczUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zNSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTUtMC1SRUFMTE9DIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTUtMC1SRUFMTE9DIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE1LTAtUkVBTExPQyIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTUtMC1SRUFMTE9DIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE1LTAtUkVBTExPQyIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE1LTAtUkVBTExPQyIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNS0wLVJFQUxMT0MiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE1LTAtUkVBTExPQyIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0wLVJFQUxMT0MiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMC1SRUFMTE9DIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNS0wLVJFQUxMT0MiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTUtMC1SRUFMTE9DIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NiwiY2hpbGRfaWQiOiJCMiIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNIQVJFIiwib3BlcmF0aW9uIjoiU0hBUkVfQUxMT0NBVEUiLCJvcGVyYXRpb25faWQiOiJPUC1zNWEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zMyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6Ik5PTkUiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJwcm92aWRlci1hZnRlci1yZWxvYWQtcmVwbGF5IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12MyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC12NCIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTktMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE5LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTktMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTktMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE5LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTktMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MTIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiUFJPVklERVJfRVNUSU1BVEUiLCJvcGVyYXRpb25faWQiOiJPUC12MSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXYxIiwicHJpb3JfZmFjdF9pZCI6bnVsbCwicHJvdmlkZXJfYWNjb3VudF9pZCI6IlBST1ZJREVSLUEiLCJwcm92aWRlcl9mYWN0X2lkIjoiUEYxLUVTVElNQVRFIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiQUZURVJfQ09NTUlUX0JFRk9SRV9SRVNQT05TRSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJraW5kIjoiUkVMT0FEIn0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xOS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTktMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xOS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xOS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE5LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xOS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE5LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE5LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTktMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xOS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xOS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE5LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjoxMiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJQUk9WSURFUl9FU1RJTUFURSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXYxIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtdjEiLCJwcmlvcl9mYWN0X2lkIjpudWxsLCJwcm92aWRlcl9hY2NvdW50X2lkIjoiUFJPVklERVItQSIsInByb3ZpZGVyX2ZhY3RfaWQiOiJQRjEtRVNUSU1BVEUiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJBRlRFUl9DT01NSVRfQkVGT1JFX1JFU1BPTlNFIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfV19fSx7ImZhbWlseSI6IkYxN19SRVZJRVdfQVRUQUNLUyIsImlkIjoic2hhcmUtYWZ0ZXItcmVsb2FkLXJlcGxheSIsImlucHV0cyI6eyJpbml0aWFsX3N0YXRlIjp7ImRpbWVuc2lvbnMiOlt7ImRpbWVuc2lvbl9pZCI6IkQtU0hBUkUiLCJraW5kIjoiU0hBUkUiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwYXJlbnRfYnVkZ2V0X2lkIjpudWxsLCJzY29wZSI6IkdMT0JBTCIsInN0YXRlIjp7ImNhcGFjaXR5IjoxMCwiY2hpbGRyZW4iOltdLCJyZXZva2VkX2hpc3RvcnkiOltdfSwidW5pdF9pZCI6IndvcmtlciJ9XSwicHJvdmlkZXJfZmFjdHMiOltdLCJyZXNvdXJjZV9iaW5kaW5nX3BsYW5zIjpbeyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXM2IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXM3IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0seyJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLXM4IiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn1dLCJyZXRhaW5lZCI6W10sInRvbWJzdG9uZXMiOltdLCJ3b3JsZHMiOlt7IndvcmxkX2lkIjoiV09STEQtQSJ9LHsid29ybGRfaWQiOiJXT1JMRC1CIn1dfSwicGhhc2VzIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xNi0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTYtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xNi0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xNi0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE2LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNi0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE2LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE2LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTYtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xNi0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE2LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo2LCJjaGlsZF9pZCI6IkIxIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU0hBUkUiLCJvcGVyYXRpb24iOiJTSEFSRV9BTExPQ0FURSIsIm9wZXJhdGlvbl9pZCI6Ik9QLXM2Iiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtczYiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJBRlRFUl9DT01NSVRfQkVGT1JFX1JFU1BPTlNFIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjEwfSx7ImtpbmQiOiJSRUxPQUQifSx7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTE2LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0xNi0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTE2LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTE2LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTYtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTE2LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTYtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTYtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0xNi0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTE2LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTE2LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTYtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjYsImNoaWxkX2lkIjoiQjEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TSEFSRSIsIm9wZXJhdGlvbiI6IlNIQVJFX0FMTE9DQVRFIiwib3BlcmF0aW9uX2lkIjoiT1AtczYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1zNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6IkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJsZWFzZS1hZnRlci1yZWxvYWQtcmVwbGF5IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1MRUFTRSIsImtpbmQiOiJMRUFTRSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBhcmVudF9idWRnZXRfaWQiOm51bGwsInNjb3BlIjoiR0xPQkFMIiwic3RhdGUiOnsiYWN0aXZlIjpbXSwiY2FwYWNpdHkiOjIsImV4cGlyZWQiOltdLCJoaXN0b3J5IjpbXX0sInVuaXRfaWQiOiJ0b29sLXNlYXQifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNyIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9XSwicmV0YWluZWQiOltdLCJ0b21ic3RvbmVzIjpbXSwid29ybGRzIjpbeyJ3b3JsZF9pZCI6IldPUkxELUEifSx7IndvcmxkX2lkIjoiV09STEQtQiJ9XX0sInBoYXNlcyI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTMtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMy0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTMtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMy0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJlcG9jaCI6MSwiZXhwaXJlc19hdCI6MjAsIm9wZXJhdGlvbiI6IkxFQVNFX0dSQU5UIiwib3BlcmF0aW9uX2lkIjoiT1AtbDYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6IkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9LHsia2luZCI6IlJFTE9BRCJ9LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMTMtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTEzLTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMTMtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMTMtMCIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0xMy0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMTMtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0xMy0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0xMy0wIiwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTEzLTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMTMtMCIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMTMtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0xMy0wIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6MSwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtTEVBU0UiLCJlcG9jaCI6MSwiZXhwaXJlc19hdCI6MjAsIm9wZXJhdGlvbiI6IkxFQVNFX0dSQU5UIiwib3BlcmF0aW9uX2lkIjoiT1AtbDYiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1sNiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6IkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJjb21wb3VuZC1hZnRlci1yZWxvYWQtcmVwbGF5IiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifSx7ImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsImtpbmQiOiJQRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjYXAiOjEwLCJjdXJyZW50IjowLCJoaWdoX3dhdGVyIjowLCJyZXNlcnZlZCI6MH0sInVuaXRfaWQiOiJ3b3JrZXIifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNoaWxkcmVuIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifX0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fV0sImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQ09NUE9VTkQiLCJvcGVyYXRpb25faWQiOiJPUC1tMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiQUZURVJfQ09NTUlUX0JFRk9SRV9SRVNQT05TRSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJraW5kIjoiUkVMT0FEIn0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wIiwiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImV4ZWN1dGlvbl9pZCI6IkVYRUMtMzUtMCIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wIiwiaGFuZG9mZiI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMCIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50IjowLCJjaGlsZHJlbiI6W3siYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMC1PUC1tMWEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wLU9QLW0xYSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wLU9QLW0xYSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMC1PUC1tMWEiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMC1PUC1tMWEiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wLU9QLW0xYSIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wLU9QLW0xYSIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMC1PUC1tMWEiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFhIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFhIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvcGVyYXRpb24iOiJSRVNFUlZFIiwib3BlcmF0aW9uX2lkIjoiT1AtbTFhIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGxhbl9pZCI6IlBMQU4tT1AtbTFhIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn19LHsiYXV0aG9yaXR5Ijp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMC1PUC1tMWIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wLU9QLW0xYiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wLU9QLW0xYiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMC1PUC1tMWIiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMC1PUC1tMWIiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wLU9QLW0xYiIsImZyZXNobmVzc19yZWYiOiJGUkVTSC0zNS0wLU9QLW0xYiIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMC1PUC1tMWIiLCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAtT1AtbTFiIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAtT1AtbTFiIiwidmVyZGljdCI6IkFMTE9XIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImV2ZW50Ijp7ImFjdG9yX2lkIjoiQUNUT1ItQSIsImFtb3VudCI6NCwiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWIiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifX1dLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IkNPTVBPVU5EIiwib3BlcmF0aW9uX2lkIjoiT1AtbTEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJmYXVsdCI6IkFGVEVSX0NPTU1JVF9CRUZPUkVfUkVTUE9OU0UiLCJraW5kIjoiQVBQTFkiLCJsb2dpY2FsX25vdyI6MTB9XX19LHsiZmFtaWx5IjoiRjE3X1JFVklFV19BVFRBQ0tTIiwiaWQiOiJjb21wb3VuZC1wYXJ0aWFsLWNsYWltLXJldXNlIiwiaW5wdXRzIjp7ImluaXRpYWxfc3RhdGUiOnsiZGltZW5zaW9ucyI6W3siZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsImtpbmQiOiJDT05TVU1BQkxFIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjb25zdW1lZCI6MCwiZXhwaXJlZCI6MCwiZnJlZSI6MTAwLCJpc3N1ZWQiOjEwMCwibm9ucmVmdW5kYWJsZSI6MCwicmVmdW5kYWJsZSI6MCwicmVzZXJ2ZWQiOjAsInVua25vd25fZGlzcHV0ZWQiOjB9LCJ1bml0X2lkIjoidG9rZW4ifSx7ImRpbWVuc2lvbl9pZCI6IkQtUEVBSyIsImtpbmQiOiJQRUFLIiwib3duZXJfaWQiOiJBQ1RPUi1BIiwicGFyZW50X2J1ZGdldF9pZCI6bnVsbCwic2NvcGUiOiJHTE9CQUwiLCJzdGF0ZSI6eyJjYXAiOjEwLCJjdXJyZW50IjowLCJoaWdoX3dhdGVyIjowLCJyZXNlcnZlZCI6MH0sInVuaXRfaWQiOiJ3b3JrZXIifV0sInByb3ZpZGVyX2ZhY3RzIjpbXSwicmVzb3VyY2VfYmluZGluZ19wbGFucyI6W3siY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMSIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LHsiY29tbWl0bWVudF9pZCI6IkNPTU1JVE1FTlQtQSIsImRpbWVuc2lvbl9pZCI6IkQtU1RPQ0siLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSx7ImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVBFQUsiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWIiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifV0sInJldGFpbmVkIjpbXSwidG9tYnN0b25lcyI6W10sIndvcmxkcyI6W3sid29ybGRfaWQiOiJXT1JMRC1BIn0seyJ3b3JsZF9pZCI6IldPUkxELUIifV19LCJwaGFzZXMiOlt7ImF1dGhvcml0eSI6eyJhY3RpdmF0aW9uX2lkIjoiQUNULTM1LTAiLCJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZXhlY3V0aW9uX2lkIjoiRVhFQy0zNS0wIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAiLCJnZW5lcmF0aW9uIjoxLCJncmFudF9yZWYiOiJHUkFOVC1FWEVDLTM1LTAiLCJoYW5kb2ZmIjp7ImFjdGl2YXRpb25faWQiOiJBQ1QtMzUtMCIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAiLCJmcmVzaG5lc3NfcmVmIjoiRlJFU0gtMzUtMCIsImdlbmVyYXRpb24iOjEsImdyYW50X3JlZiI6IkdSQU5ULUVYRUMtMzUtMCIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wIiwicmlnaHQiOiJVU0VfQlVER0VUIiwidmFsaWRhdGlvbl9pZCI6IlZBTElELTM1LTAiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiaW52b2NhdGlvbl9ub25jZSI6Ik5PTkNFLTM1LTAiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMCIsInZlcmRpY3QiOiJBTExPVyIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJldmVudCI6eyJhY3Rvcl9pZCI6IkFDVE9SLUEiLCJhbW91bnQiOjAsImNoaWxkcmVuIjpbeyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifX0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYiIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFiIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFiIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYiIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYiIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYiIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWIiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWIiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1QRUFLIiwib3BlcmF0aW9uIjoiUkVTRVJWRSIsIm9wZXJhdGlvbl9pZCI6Ik9QLW0xYiIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xYiIsInJlc291cmNlX2lkIjoiUkVTT1VSQ0UtMSIsIndvcmxkX2lkIjoiV09STEQtQSJ9fV0sImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJkaW1lbnNpb25faWQiOiJELVNUT0NLIiwib3BlcmF0aW9uIjoiQ09NUE9VTkQiLCJvcGVyYXRpb25faWQiOiJPUC1tMSIsIm93bmVyX2lkIjoiQUNUT1ItQSIsInBsYW5faWQiOiJQTEFOLU9QLW0xIiwicmVzb3VyY2VfaWQiOiJSRVNPVVJDRS0xIiwid29ybGRfaWQiOiJXT1JMRC1BIn0sImZhdWx0IjoiTk9ORSIsImtpbmQiOiJBUFBMWSIsImxvZ2ljYWxfbm93IjoxMH0seyJhdXRob3JpdHkiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImhhbmRvZmYiOnsiYWN0aXZhdGlvbl9pZCI6IkFDVC0zNS0wLU9QLW0xYSIsImFjdG9yX2lkIjoiQUNUT1ItQSIsImNvbW1pdG1lbnRfaWQiOiJDT01NSVRNRU5ULUEiLCJleGVjdXRpb25faWQiOiJFWEVDLTM1LTAtT1AtbTFhIiwiZnJlc2huZXNzX3JlZiI6IkZSRVNILTM1LTAtT1AtbTFhIiwiZ2VuZXJhdGlvbiI6MSwiZ3JhbnRfcmVmIjoiR1JBTlQtRVhFQy0zNS0wLU9QLW0xYSIsImludm9jYXRpb25fbm9uY2UiOiJOT05DRS0zNS0wLU9QLW0xYSIsInJpZ2h0IjoiVVNFX0JVREdFVCIsInZhbGlkYXRpb25faWQiOiJWQUxJRC0zNS0wLU9QLW0xYSIsIndvcmxkX2lkIjoiV09STEQtQSJ9LCJpbnZvY2F0aW9uX25vbmNlIjoiTk9OQ0UtMzUtMC1PUC1tMWEiLCJyaWdodCI6IlVTRV9CVURHRVQiLCJ2YWxpZGF0aW9uX2lkIjoiVkFMSUQtMzUtMC1PUC1tMWEiLCJ2ZXJkaWN0IjoiQUxMT1ciLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZXZlbnQiOnsiYWN0b3JfaWQiOiJBQ1RPUi1BIiwiYW1vdW50Ijo0LCJjb21taXRtZW50X2lkIjoiQ09NTUlUTUVOVC1BIiwiZGltZW5zaW9uX2lkIjoiRC1TVE9DSyIsIm9wZXJhdGlvbiI6IlJFU0VSVkUiLCJvcGVyYXRpb25faWQiOiJPUC1tMWEiLCJvd25lcl9pZCI6IkFDVE9SLUEiLCJwbGFuX2lkIjoiUExBTi1PUC1tMWEiLCJyZXNvdXJjZV9pZCI6IlJFU09VUkNFLTEiLCJ3b3JsZF9pZCI6IldPUkxELUEifSwiZmF1bHQiOiJOT05FIiwia2luZCI6IkFQUExZIiwibG9naWNhbF9ub3ciOjExfV19fV0sImRlY2lzaW9uIjp7ImZyb3plbiI6ZmFsc2UsImlkIjoiRC0wMDgiLCJzdGF0dXMiOiJPUEVOIn0sImhhcm5lc3NfY29tcGxldGlvbiI6eyJieXRlX2xlbmd0aCI6NjA3MSwicGF0aCI6ImRlY2lzaW9ucy9hZ2VudC1uYXRpdmUtaGFybmVzcy1jb21wbGV0aW9uLXYxLmpzb24iLCJzaGEyNTYiOiJkNzYyYzljNTA0MDQwNjNjNDFkN2IwZjNmZmEzMTEyMjY3ZGE0ZmM1MGQyMjNkY2M5YTk4MTU3MDVkYTlmMjlmIn0sImluZGVwZW5kZW5jZSI6eyJkZWNpc2l2ZV9wcmltYXJ5X2hlbHBlcnMiOlsiYXBwbHlfbGVhZiIsImNsYXNzaWZ5X2V2ZW50IiwiZXZlbnRfam9pbiIsImF1dGhvcml0eV9jdXJyZW50IiwiZGVyaXZlIl0sImluZGVwZW5kZW50X3BhdGgiOiJvcmFjbGVfb2JzZXJ2YXRpb24gYW5kIGxhdy1zcGVjaWZpYyByZWxhdGlvbnMgZG8gbm90IGNhbGwgZGVjaXNpdmUgcHJpbWFyeSBoZWxwZXJzIn0sImludmFsaWRhdGlvbiI6IlYxX1YyX0lOVkFMSURBVEVEX1BSRV9GUkVFWkVfRVZJREVOQ0UiLCJsYXdzIjpbIldIT0xFX09CU0VSVkFUSU9OX0NMT1NVUkUiLCJUWVBFRF9JREVOVElUWV9TQ09QRSIsIkQwMDNfQVVUSE9SSVRZX0ZJUlNUIiwiUEVSX0tJTkRfQ09OU0VSVkFUSU9OIiwiUEFSRU5UX1NJQkxJTkdfQ09OU0VSVkFUSU9OIiwiUkVTRVJWQVRJT05fQUNRVUlTSVRJT04iLCJDQU5DRUxMQVRJT05fUkVGVU5EIiwiUFJPVklERVJfUkVDT05DSUxJQVRJT04iLCJDT01QT1VORF9BVE9NSUNJVFkiLCJSRUNPVkVSWV9SRVBMQVkiLCJBVFRSSUJVVElPTl9NT0RFTF9JTkRFUEVOREVOQ0UiLCJFRkZFQ1RfUFJPTU9USU9OX1NFUEFSQVRJT04iLCJDQU5PTklDQUxfREVURVJNSU5JU00iXSwicHJvdmVuYW5jZSI6eyJhcnRpZmFjdF9iYXNlbmFtZSI6ImQwMDgtYnVkZ2V0LW1hbmlmZXN0LXYxLmpzb24iLCJkYWciOnsiZWRnZXMiOlt7ImZyb20iOiJFIiwidG8iOiJWIn0seyJmcm9tIjoiRSIsInRvIjoiRiJ9LHsiZnJvbSI6IkUiLCJ0byI6IlBGIn0seyJmcm9tIjoiRSIsInRvIjoiSVIifSx7ImZyb20iOiJFIiwidG8iOiJPMSJ9LHsiZnJvbSI6IkUiLCJ0byI6Ik8yIn0seyJmcm9tIjoiRiIsInRvIjoiUEYifSx7ImZyb20iOiJGIiwidG8iOiJJUiJ9LHsiZnJvbSI6IkYiLCJ0byI6IklYIn0seyJmcm9tIjoiRiIsInRvIjoiSUMifSx7ImZyb20iOiJGIiwidG8iOiJST09UIn0seyJmcm9tIjoiSUMiLCJ0byI6IlJPT1QifSx7ImZyb20iOiJJUiIsInRvIjoiSVgifSx7ImZyb20iOiJJUiIsInRvIjoiSUMifSx7ImZyb20iOiJJUiIsInRvIjoiUlgifSx7ImZyb20iOiJJUiIsInRvIjoiUkMifSx7ImZyb20iOiJJUiIsInRvIjoiUlYifSx7ImZyb20iOiJJUkMiLCJ0byI6IlJPT1QifSx7ImZyb20iOiJJUlAiLCJ0byI6IlJPT1QifSx7ImZyb20iOiJJUlYiLCJ0byI6IlJPT1QifSx7ImZyb20iOiJJUlgiLCJ0byI6IlJPT1QifSx7ImZyb20iOiJJWCIsInRvIjoiUk9PVCJ9LHsiZnJvbSI6Ik8xIiwidG8iOiJGIn0seyJmcm9tIjoiTzEiLCJ0byI6IklYIn0seyJmcm9tIjoiTzIiLCJ0byI6IkYifSx7ImZyb20iOiJPMiIsInRvIjoiSUMifSx7ImZyb20iOiJQRiIsInRvIjoiSVIifSx7ImZyb20iOiJQRiIsInRvIjoiUlAifSx7ImZyb20iOiJQRiIsInRvIjoiUk9PVCJ9LHsiZnJvbSI6IlJDIiwidG8iOiJJQyJ9LHsiZnJvbSI6IlJDIiwidG8iOiJJUkMifSx7ImZyb20iOiJSUCIsInRvIjoiSVIifSx7ImZyb20iOiJSUCIsInRvIjoiSVJQIn0seyJmcm9tIjoiUlYiLCJ0byI6IlJPT1QifSx7ImZyb20iOiJSViIsInRvIjoiSVJWIn0seyJmcm9tIjoiUlgiLCJ0byI6IklYIn0seyJmcm9tIjoiUlgiLCJ0byI6IklSWCJ9LHsiZnJvbSI6IlYiLCJ0byI6IkYifSx7ImZyb20iOiJWIiwidG8iOiJJUiJ9LHsiZnJvbSI6IlYiLCJ0byI6Ik8xIn0seyJmcm9tIjoiViIsInRvIjoiTzIifV0sIm5vZGVzIjpbeyJpZCI6IkUiLCJraW5kIjoiRVZJREVOQ0UifSx7ImlkIjoiRiIsImtpbmQiOiJGUkVFWkUifSx7ImlkIjoiSUMiLCJraW5kIjoiUFJPRFVDRVJfSURFTlRJVFkifSx7ImlkIjoiSVIiLCJraW5kIjoiSU5ERVBFTkRFTkNFX1JFUE9SVCJ9LHsiaWQiOiJJUkMiLCJraW5kIjoiUkVWSUVXRVJfSURFTlRJVFkifSx7ImlkIjoiSVJQIiwia2luZCI6IlJFVklFV0VSX0lERU5USVRZIn0seyJpZCI6IklSViIsImtpbmQiOiJSRVZJRVdFUl9JREVOVElUWSJ9LHsiaWQiOiJJUlgiLCJraW5kIjoiUkVWSUVXRVJfSURFTlRJVFkifSx7ImlkIjoiSVgiLCJraW5kIjoiUFJPRFVDRVJfSURFTlRJVFkifSx7ImlkIjoiTzEiLCJraW5kIjoiT0JTRVJWQVRJT04ifSx7ImlkIjoiTzIiLCJraW5kIjoiT0JTRVJWQVRJT04ifSx7ImlkIjoiUEYiLCJraW5kIjoiUFJFRlJFRVpFIn0seyJpZCI6IlJDIiwia2luZCI6IlJFVklFVyJ9LHsiaWQiOiJST09UIiwia2luZCI6IlBSRVJFR19ST09UIn0seyJpZCI6IlJQIiwia2luZCI6IlJFVklFVyJ9LHsiaWQiOiJSViIsImtpbmQiOiJSRVZJRVcifSx7ImlkIjoiUlgiLCJraW5kIjoiUkVWSUVXIn0seyJpZCI6IlYiLCJraW5kIjoiVkFMSURBVElPTiJ9XSwicm9vdHMiOlsiUk9PVCJdfSwicHJlcmVnX3Jvb3Rfc2NoZW1hIjoiRDAwOC1QUkVSRUctUk9PVC0zIiwic3RhZ2UiOiJDX1BSRVJFR0lTVFJBVElPTiIsInN0YXR1cyI6Ik5PX1JPT1RfT1JfRVZJREVOQ0VfWUVUIn0sInByb3ZlbmFuY2VfcXVhbGlmaWVkIjpmYWxzZSwicHJvdmVuYW5jZV9zdGF0dXMiOiJTVEFHRV9DX1BSRVJFR0lTVEVSRURfTk9fQUNUVUFMX1JPT1RfT1JfRVZJREVOQ0UiLCJweXRob25fZ3JhbW1hciI6IjMuMTMiLCJzY2hlbWEiOiJEMDA4LUJVREdFVC1NQU5JRkVTVC0zIiwic2VtYW50aWNfbG9ja3MiOnsib19zZW1hbnRpY19ib2R5Ijp7ImJ5dGVfbGVuZ3RoIjo0NzAzMjAsIm1hbmlmZXN0X3NoYTI1Nl9maWVsZCI6Ik5PUk1BTElaRURfVE9fQE1BTklGRVNUX1NIQTI1NkAiLCJzY2hlbWEiOiJEMDA4LU8tU0VNQU5USUMtQk9EWS1MT0NLLTEiLCJzaGEyNTYiOiIxODIyZDE2YjgwMjBmOGUyYWZlMThmNjJlYjhkYzlmM2FmM2M4MTIyNzNhMGQwMmRkODA2N2M5YzA5NDAxOWU2Iiwic2hhcGUiOiJjYW5vbmljYWwgc2VtYW50aWNfYm9keSBvYmplY3Qgd2l0aCByZWFsIG1hbmlmZXN0X3NoYTI1NiByZXBsYWNlZCBieSBATUFOSUZFU1RfU0hBMjU2QCJ9LCJzdGFnZV9iX3NlbWFudGljX3Byb2plY3Rpb24iOnsiYWNjZXB0ZWRfY291bnQiOjYwLCJieXRlX2xlbmd0aCI6NDY2NDA0LCJyYXdfY291bnQiOjY5LCJzY2hlbWEiOiJEMDA4LVNUQUdFLUItU0VNQU5USUMtUFJPSkVDVElPTi0xIiwic2hhMjU2IjoiNWVkOTFhODk2NDUzYTVkZWMxMzllMWE2Y2Y4ZTIyZjFhZTkxMTM3MDIyZGY5ZGI1OWNmOWRhMTIzNzlkMDU1YiIsInNoYXBlIjoib3JkZXJlZCBjYXNlIGxpc3Q7IGFjY2VwdGVkPXtjYXNlX2lkLGlucHV0X3NoYTI1NixjbGFzc2lmaWNhdGlvbixsYXdzLG9ic2VydmF0aW9ufTsgc3RydWN0dXJhbD17Y2FzZV9pZCxpbnB1dF9zaGEyNTYsY2xhc3NpZmljYXRpb259Iiwic3RhZ2VfYiI6IlBBU1MiLCJzdHJ1Y3R1cmFsX3JlamVjdF9jb3VudCI6OX19LCJzZW1hbnRpY19zdGFnZSI6IkJfUEFTUyJ9Cg==","kind":"blob"}},"paths":{"decisions/D-008-PACKET.md":"88ed4b9979c0a1b78f408ec120c1eebaa49e1ca1","decisions/d008-budget-manifest-v1.json":"ee727d72665949277582057c83a2f1e35a4bb229","decisions/d008_manifest.py":"2da3a1df83ea2f86c7a355885e30c3cf6b1dea8e","decisions/test_d008_manifest.py":"a4081ecc6481b2c0025b0d5bc571fa798e4df150"},"schema":"D008-PREREG-ROOT-3","tree_oid":"8d75d1da4f9da32a7fb295f42ab06c59e93d42f4"} diff --git a/future/d008_checker_v3/producer.py b/future/d008_checker_v3/producer.py new file mode 100644 index 0000000000..dba256e617 --- /dev/null +++ b/future/d008_checker_v3/producer.py @@ -0,0 +1,1029 @@ +import json +import hashlib +import unicodedata +U64 = 18446744073709551615 +KINDS = ('CONSUMABLE', 'PEAK', 'RATE', 'LEASE', 'SHARE') +LAWS = ('WHOLE_OBSERVATION_CLOSURE', 'TYPED_IDENTITY_SCOPE', 'D003_AUTHORITY_FIRST', 'PER_KIND_CONSERVATION', 'PARENT_SIBLING_CONSERVATION', 'RESERVATION_ACQUISITION', 'CANCELLATION_REFUND', 'PROVIDER_RECONCILIATION', 'COMPOUND_ATOMICITY', 'RECOVERY_REPLAY', 'ATTRIBUTION_MODEL_INDEPENDENCE', 'EFFECT_PROMOTION_SEPARATION', 'CANONICAL_DETERMINISM') +STATUSES = ('APPLIED', 'DENY_AUTHORITY', 'DENY_ADMISSION', 'UNSUPPORTED', 'UNKNOWN_RECONCILE', 'REPLAY', 'RECONCILE_EXPIRED') +FORBIDDEN_INPUT_KEYS = {'pass', 'law_results', 'expected_status', 'expected', 'verdict_expected'} +BASE_EVENT = {'actor_id', 'operation_id', 'resource_id', 'commitment_id', 'amount', 'world_id', 'owner_id', 'dimension_id', 'operation', 'plan_id'} +OP_FIELDS = {'RESERVE': set(), 'ESCROW': set(), 'ACQUIRE': {'refundable'}, 'RELEASE': {'release_from'}, 'CANCEL_EFFECTIVE': set(), 'REFUND': set(), 'REFILL': set(), 'LEASE_GRANT': {'epoch', 'expires_at'}, 'LEASE_USE': {'epoch', 'lease_id'}, 'LEASE_REVOKE': {'lease_id'}, 'LEASE_RENEW': {'epoch', 'lease_id', 'expires_at'}, 'SHARE_ALLOCATE': {'child_id'}, 'SHARE_RESERVE': {'child_id'}, 'SHARE_ACQUIRE': {'child_id'}, 'SHARE_REVOKE': {'child_id'}, 'PROVIDER_ESTIMATE': {'provider_account_id', 'provider_fact_id', 'prior_fact_id'}, 'PROVIDER_OBSERVED': {'provider_account_id', 'provider_fact_id', 'prior_fact_id'}, 'PROVIDER_UNKNOWN': {'provider_account_id', 'provider_fact_id', 'prior_fact_id'}, 'PROVIDER_SETTLED': {'provider_account_id', 'provider_fact_id', 'prior_fact_id'}, 'PROVIDER_CREDIT': {'provider_account_id', 'provider_fact_id', 'prior_fact_id'}, 'CACHE_REUSE': {'cache_fresh'}, 'FAIL': set(), 'DEPENDENCY_ROLLBACK': set(), 'LATE_RESULT': set(), 'WORLD_DISCARD': set(), 'CANCEL_REQUEST': set(), 'TOMB': {'target_operation_id'}, 'COMPOUND': {'children'}, 'EFFECT_AUTHORIZE': set(), 'PROMOTE': set(), 'CONVERT': {'target_dimension_id'}} +UNSUPPORTED_OPS = {'EFFECT_AUTHORIZE', 'CONVERT', 'PROMOTE'} +UNIT_COMPAT = {'token': {'CONSUMABLE'}, 'worker': {'PEAK', 'SHARE'}, 'request': {'RATE'}, 'tool-seat': {'LEASE'}} +PARENT_COMPAT = () +AUTH_CONTEXT = ('grant_ref', 'generation', 'execution_id', 'activation_id', 'validation_id', 'invocation_nonce', 'freshness_ref', 'actor_id', 'commitment_id', 'world_id', 'right') + +def parse_bytes(raw): + text = raw.decode('utf-8') + if unicodedata.normalize('NFC', text) != text: + raise ValueError('reject') + value = json.loads(text) + if canonical(value) != raw: + raise ValueError('reject') + return value + +def law_capacity(z): + return z['state']['issued'] if z['kind'] == 'CONSUMABLE' else z['state']['cap'] if z['kind'] in ('PEAK', 'RATE') else z['state']['capacity'] + +def _pairs(xs): + d = {} + for k, v in xs: + if k in d: + raise ValueError('reject') + d[k] = v + return d + +def walk(x, p='$'): + if isinstance(x, float): + raise ValueError('reject') + if isinstance(x, int) and (not isinstance(x, bool)) and (not 0 <= x <= U64): + raise ValueError('reject') + if isinstance(x, str): + if any((55296 <= ord(c) <= 57343 for c in x)): + raise ValueError('reject') + if unicodedata.normalize('NFC', x) != x: + raise ValueError('reject') + if isinstance(x, dict): + for k, v in x.items(): + if not isinstance(k, str): + raise ValueError('reject') + walk(k, p + '/key') + walk(v, p + '/' + k) + elif isinstance(x, list): + for i, v in enumerate(x): + walk(v, p + '/' + str(i)) + elif x is not None and (not isinstance(x, (str, int, bool))): + raise ValueError('reject') + +def canonical(x): + walk(x) + return (json.dumps(x, ensure_ascii=False, sort_keys=True, separators=(',', ':'), allow_nan=False) + '\n').encode() + +def exact(x, ks, p): + if not isinstance(x, dict) or set(x) != set(ks): + raise ValueError('reject') + +def text(x, p): + if not isinstance(x, str) or not x: + raise ValueError('reject') + return x + +def uint(x, p): + if not isinstance(x, int) or isinstance(x, bool) or (not 0 <= x <= U64): + raise ValueError('reject') + return x + +def sha(b): + return hashlib.sha256(b).hexdigest() + +def vsha(x): + return sha(canonical(x)) + +def clone(x): + return json.loads(json.dumps(x)) + +def art(kind, raw): + return {'byte_length': len(raw), 'kind': kind, 'sha256': sha(raw)} + +def digest(x, p): + text(x, p) + if len(x) != 64 or any((c not in '0123456789abcdef' for c in x)): + raise ValueError('reject') + +def index(xs, k, p): + d = {} + for x in xs: + if not isinstance(x, dict) or k not in x: + text(None, p) + text(x[k], p) + if x[k] in d: + raise ValueError('reject') + d[x[k]] = x + return d + +def validate_dimension(d): + exact(d, {'dimension_id', 'kind', 'owner_id', 'parent_budget_id', 'scope', 'state', 'unit_id'}, 'dimension') + [text(d[k], k) for k in ('dimension_id', 'kind', 'owner_id', 'scope', 'unit_id')] + if d['kind'] not in KINDS or d['scope'] != 'GLOBAL' or d['unit_id'] not in UNIT_COMPAT or (d['kind'] not in UNIT_COMPAT[d['unit_id']]): + raise ValueError('reject') + if d['parent_budget_id'] is not None: + text(d['parent_budget_id'], 'parent') + s = d['state'] + if d['kind'] == 'CONSUMABLE': + exact(s, {'consumed', 'expired', 'free', 'issued', 'nonrefundable', 'refundable', 'reserved', 'unknown_disputed'}, 'consumable') + [uint(v, k) for k, v in s.items()] + if s['free'] + s['reserved'] + s['consumed'] + s['expired'] + s['unknown_disputed'] != s['issued'] or s['refundable'] + s['nonrefundable'] != s['consumed']: + raise ValueError('reject') + elif d['kind'] == 'PEAK': + exact(s, {'cap', 'current', 'high_water', 'reserved'}, 'peak') + [uint(v, k) for k, v in s.items()] + if s['current'] + s['reserved'] > s['cap'] or s['high_water'] < s['current']: + raise ValueError('reject') + elif d['kind'] == 'RATE': + exact(s, {'available', 'cap', 'last_refill_at', 'refill', 'reserved', 'window'}, 'rate') + [uint(v, k) for k, v in s.items()] + if not s['window'] or s['available'] > s['cap'] or s['reserved'] > s['available']: + raise ValueError('reject') + elif d['kind'] == 'LEASE': + exact(s, {'active', 'capacity', 'expired', 'history'}, 'lease state') + uint(s['capacity'], 'capacity') + ids = [] + for x in s['active']: + exact(x, {'epoch', 'expires_at', 'lease_id', 'uses'}, 'active lease') + [uint(x[k], k) for k in ('epoch', 'expires_at', 'uses')] + text(x['lease_id'], 'lease') + ids.append(x['lease_id']) + for x in s['history']: + exact(x, {'end', 'epoch', 'expires_at', 'lease_id', 'uses'}, 'lease history') + [uint(x[k], k) for k in ('epoch', 'expires_at', 'uses')] + text(x['lease_id'], 'lease') + ids.append(x['lease_id']) + for x in s['expired']: + text(x, 'expired lease') + if len(ids) != len(set(ids)) or len(s['active']) > s['capacity'] or any((x['end'] not in ('EXPIRED', 'REVOKED') for x in s['history'])): + raise ValueError('reject') + else: + exact(s, {'capacity', 'children', 'revoked_history'}, 'share state') + uint(s['capacity'], 'capacity') + ids = [] + for x in s['children']: + exact(x, {'allocated', 'child_id', 'reserved', 'used'}, 'share child') + [uint(x[k], k) for k in ('allocated', 'reserved', 'used')] + text(x['child_id'], 'child') + ids.append(x['child_id']) + for x in s['revoked_history']: + exact(x, {'allocated', 'child_id', 'reserved', 'used'}, 'share history') + [uint(x[k], k) for k in ('allocated', 'reserved', 'used')] + text(x['child_id'], 'child') + ids.append(x['child_id']) + if len(ids) != len(set(ids)) or sum((x['allocated'] for x in s['children'])) + sum((x['used'] for x in s['revoked_history'])) > s['capacity'] or any((x['reserved'] + x['used'] > x['allocated'] for x in s['children'])): + raise ValueError('reject') + +def validate_provider_facts(xs): + facts = index(xs, 'fact_id', 'provider fact') + ops = set() + succ = {} + for f in xs: + exact(f, {'amount', 'fact_id', 'operation_id', 'prior_fact_id', 'provider_account_id', 'stage'}, 'provider fact') + uint(f['amount'], 'amount') + [text(f[k], k) for k in ('fact_id', 'operation_id', 'provider_account_id', 'stage')] + if f['operation_id'] in ops or f['stage'] not in ('ESTIMATE', 'OBSERVED', 'UNKNOWN', 'SETTLED', 'CREDIT'): + raise ValueError('reject') + ops.add(f['operation_id']) + prior = f['prior_fact_id'] + if prior is None: + if f['stage'] != 'ESTIMATE': + raise ValueError('reject') + else: + if prior not in facts or prior in succ: + raise ValueError('reject') + old = facts[prior] + succ[prior] = f['fact_id'] + if old['provider_account_id'] != f['provider_account_id']: + raise ValueError('reject') + legal = old['stage'] == 'ESTIMATE' and f['stage'] in ('OBSERVED', 'UNKNOWN') or (old['stage'] == 'UNKNOWN' and f['stage'] == 'OBSERVED' and (f['amount'] <= old['amount'])) or (old['stage'] == 'OBSERVED' and f['stage'] == 'SETTLED' and (f['amount'] == old['amount'])) or (old['stage'] in ('SETTLED', 'CREDIT') and f['stage'] == 'CREDIT') + if not legal: + raise ValueError('reject') + for f in xs: + if f['stage'] == 'UNKNOWN' and f['fact_id'] not in succ: + continue + if f['stage'] == 'CREDIT': + chain = [] + x = f + while x['prior_fact_id'] is not None: + chain.append(x) + x = facts[x['prior_fact_id']] + settled = next((z for z in reversed(chain + [x]) if z['stage'] == 'SETTLED'), None) + if settled is None or sum((z['amount'] for z in chain if z['stage'] == 'CREDIT')) > settled['amount']: + raise ValueError('reject') + +def dimension_capacity(d): + s = d['state'] + return s['issued'] if d['kind'] == 'CONSUMABLE' else s['cap'] if d['kind'] in ('PEAK', 'RATE') else s['capacity'] + +def parent_relation(child, parent): + relation = (child['kind'], child['unit_id'], parent['kind'], parent['unit_id']) + return child['owner_id'] == parent['owner_id'] and ((child['kind'], child['unit_id']) == (parent['kind'], parent['unit_id']) or relation in PARENT_COMPAT) and (dimension_capacity(child) <= dimension_capacity(parent)) + +def validate_state(s, now=None, initial=False): + exact(s, {'dimensions', 'provider_facts', 'resource_binding_plans', 'retained', 'tombstones', 'worlds'}, 'state') + dims = index(s['dimensions'], 'dimension_id', 'dimension') + if initial and (s['retained'] or s['tombstones']): + raise ValueError('reject') + for d in s['dimensions']: + validate_dimension(d) + for d in s['dimensions']: + seen = set() + p = d['parent_budget_id'] + if p is not None and (p not in dims or not parent_relation(d, dims[p])): + raise ValueError('reject') + while p is not None: + if p not in dims or p in seen: + raise ValueError('reject') + seen.add(p) + p = dims[p]['parent_budget_id'] + for parent in s['dimensions']: + children = [d for d in s['dimensions'] if d['parent_budget_id'] == parent['dimension_id']] + if sum((dimension_capacity(d) for d in children)) > dimension_capacity(parent): + raise ValueError('reject') + worlds = index(s['worlds'], 'world_id', 'world') + for w in s['worlds']: + exact(w, {'world_id'}, 'world') + text(w['world_id'], 'world id') + plans = index(s['resource_binding_plans'], 'plan_id', 'plan') + for p in s['resource_binding_plans']: + exact(p, {'commitment_id', 'dimension_id', 'owner_id', 'plan_id', 'resource_id', 'world_id'}, 'plan') + [text(p[k], k) for k in p] + if p['dimension_id'] not in dims or p['world_id'] not in worlds or p['owner_id'] != dims[p['dimension_id']]['owner_id']: + raise ValueError('reject') + validate_provider_facts(s['provider_facts']) + for r in s['retained']: + exact(r, {'attempted_at', 'binding_sha256', 'causal_operation_id', 'claimed_ids', 'expires_at', 'operation_id', 'outcome'}, 'retained') + digest(r['binding_sha256'], 'binding') + [uint(r[k], k) for k in ('attempted_at', 'expires_at')] + [text(r[k], k) for k in ('causal_operation_id', 'operation_id', 'outcome')] + if not isinstance(r['claimed_ids'], list) or r['claimed_ids'] != sorted(set(r['claimed_ids'])) or r['operation_id'] not in r['claimed_ids']: + raise ValueError('reject') + for x in r['claimed_ids']: + text(x, 'claimed id') + for t in s['tombstones']: + exact(t, {'binding_sha256', 'causal_operation_id', 'claimed_ids', 'operation_id', 'outcome', 'retired_at'}, 'tomb') + digest(t['binding_sha256'], 'binding') + uint(t['retired_at'], 'retired') + [text(t[k], k) for k in ('causal_operation_id', 'operation_id', 'outcome')] + if not isinstance(t['claimed_ids'], list) or t['claimed_ids'] != sorted(set(t['claimed_ids'])) or t['operation_id'] not in t['claimed_ids']: + raise ValueError('reject') + for x in t['claimed_ids']: + text(x, 'claimed id') + rops = [x['operation_id'] for x in s['retained']] + tops = [x['operation_id'] for x in s['tombstones']] + if len(rops) != len(set(rops)) or len(tops) != len(set(tops)) or set(rops) & set(tops) or (now is not None and any((t['retired_at'] > now for t in s['tombstones']))): + raise ValueError('reject') + return (dims, plans, worlds) + +def validate_authority(a): + exact(a, set(AUTH_CONTEXT) | {'handoff', 'verdict'}, 'authority') + exact(a['handoff'], set(AUTH_CONTEXT), 'handoff') + for k in AUTH_CONTEXT: + uint(a[k], k) if k == 'generation' else text(a[k], k) + for k in AUTH_CONTEXT: + uint(a['handoff'][k], k) if k == 'generation' else text(a['handoff'][k], k) + if a['verdict'] not in ('ALLOW', 'DENY'): + raise ValueError('reject') + +def validate_event(e): + if not isinstance(e, dict) or e.get('operation') not in OP_FIELDS or set(e) != BASE_EVENT | OP_FIELDS[e['operation']] or FORBIDDEN_INPUT_KEYS & set(e): + raise ValueError('reject') + for k in BASE_EVENT - {'amount'}: + text(e[k], k) + uint(e['amount'], 'amount') + op = e['operation'] + if op == 'COMPOUND': + if not isinstance(e['children'], list) or not e['children']: + raise ValueError('reject') + for x in e['children']: + exact(x, {'authority', 'event'}, 'child') + validate_authority(x['authority']) + validate_event(x['event']) + ids = [e['operation_id']] + [x['event']['operation_id'] for x in e['children']] + if len(ids) != len(set(ids)): + raise ValueError('reject') + elif op == 'RELEASE' and e['release_from'] not in ('RESERVED', 'CURRENT'): + raise ValueError('reject') + else: + for k in OP_FIELDS[op]: + if k in ('refundable', 'cache_fresh') and (not isinstance(e[k], bool)): + raise ValueError('reject') + elif k in ('epoch', 'expires_at'): + uint(e[k], k) + elif k not in ('prior_fact_id',) and k not in ('refundable', 'cache_fresh'): + text(e[k], k) + if 'prior_fact_id' in e and e['prior_fact_id'] is not None: + text(e['prior_fact_id'], 'prior') + +def event_binding(e): + return vsha(e) + +def claimed_ids(e): + ids = {e['operation_id']} + op = e['operation'] + if op.startswith('PROVIDER_'): + ids.add(e['provider_fact_id']) + if op == 'SHARE_ALLOCATE': + ids.add(e['child_id']) + if op == 'LEASE_GRANT': + ids.add(e['operation_id']) + if op == 'COMPOUND': + for child in e['children']: + if child['event']['operation'] == 'COMPOUND': + raise ValueError('reject') + ids.update(claimed_ids(child['event'])) + return sorted(ids) + +def validate_trace_namespaces(inputs): + """Exact outer replay is resolved before claims are treated as new.""" + owners = {} + attempts = {} + + def initial_claim(x): + text(x, 'initial claim') + if x in owners: + raise ValueError('reject') + owners[x] = 'INITIAL' + for f in inputs['initial_state']['provider_facts']: + initial_claim(f['operation_id']) + initial_claim(f['fact_id']) + for d in inputs['initial_state']['dimensions']: + if d['kind'] == 'SHARE': + for x in d['state']['children'] + d['state']['revoked_history']: + initial_claim(x['child_id']) + if d['kind'] == 'LEASE': + for x in d['state']['active'] + d['state']['history']: + initial_claim(x['lease_id']) + for ph in inputs['phases']: + if ph == {'kind': 'RELOAD'}: + continue + e = ph['event'] + oid = e['operation_id'] + binding = event_binding(e) + claims = claimed_ids(e) + old = attempts.get(oid) + if old is not None: + if old != (binding, claims): + raise ValueError('reject') + continue + if any((x in owners for x in claims)): + raise ValueError('reject') + attempts[oid] = (binding, claims) + for x in claims: + owners[x] = oid + +def conservation(state): + for d in state['dimensions']: + s = d['state'] + if d['kind'] == 'CONSUMABLE' and (s['free'] + s['reserved'] + s['consumed'] + s['expired'] + s['unknown_disputed'] != s['issued'] or s['refundable'] + s['nonrefundable'] != s['consumed']): + return False + if d['kind'] == 'PEAK' and (s['current'] + s['reserved'] > s['cap'] or s['high_water'] < s['current']): + return False + if d['kind'] == 'RATE' and (s['available'] > s['cap'] or s['reserved'] > s['available']): + return False + if d['kind'] == 'LEASE' and (len(s['active']) > s['capacity'] or any((x['end'] not in ('EXPIRED', 'REVOKED') for x in s['history']))): + return False + if d['kind'] == 'SHARE' and (sum((x['allocated'] for x in s['children'])) + sum((x['used'] for x in s['revoked_history'])) > s['capacity'] or any((x['reserved'] + x['used'] > x['allocated'] for x in s['children']))): + return False + return True + +def apply_pairs(inputs, obs): + return list(zip((x for x in inputs['phases'] if x.get('kind') == 'APPLY'), (x for x in obs.get('phases', []) if x.get('kind') == 'APPLY'))) + +def authority_relation(a, e): + return a['verdict'] == 'ALLOW' and a['right'] == 'USE_BUDGET' and all((a[k] == a['handoff'][k] for k in AUTH_CONTEXT)) and ((a['actor_id'], a['commitment_id'], a['world_id']) == (e['actor_id'], e['commitment_id'], e['world_id'])) + +def law_typed(inputs, obs): + try: + owners = {} + attempts = {} + worlds = inputs['initial_state']['worlds'] + if any((not isinstance(w, dict) or set(w) != {'world_id'} or (not isinstance(w['world_id'], str)) or (not w['world_id']) for w in worlds)) or len({w['world_id'] for w in worlds}) != len(worlds): + return False + for d in inputs['initial_state']['dimensions']: + if d['unit_id'] not in UNIT_COMPAT or d['kind'] not in UNIT_COMPAT[d['unit_id']]: + return False + for x in d['state']['children'] + d['state']['revoked_history'] if d['kind'] == 'SHARE' else d['state']['active'] + d['state']['history'] if d['kind'] == 'LEASE' else []: + identity = x['child_id'] if d['kind'] == 'SHARE' else x['lease_id'] + if identity in owners: + return False + owners[identity] = 'INITIAL' + for f in inputs['initial_state']['provider_facts']: + for identity in (f['operation_id'], f['fact_id']): + if identity in owners: + return False + owners[identity] = 'INITIAL' + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + oid = e['operation_id'] + attempt = (vsha(e), claimed_ids(e)) + old = attempts.get(oid) + if old is not None: + if old != attempt or row['status'] not in ('REPLAY', 'RECONCILE_EXPIRED'): + return False + continue + attempts[oid] = attempt + if any((x in owners for x in attempt[1])) and row['status'] != 'DENY_ADMISSION': + return False + for x in attempt[1]: + owners.setdefault(x, oid) + events = [e] + ([x['event'] for x in e.get('children', [])] if e['operation'] == 'COMPOUND' else []) + ds = {x['dimension_id']: x for x in row['before']['dimensions']} + ps = {x['plan_id']: x for x in row['before']['resource_binding_plans']} + for z in events: + d = ds.get(z['dimension_id']) + p = ps.get(z['plan_id']) + if d is None or p is None or z['world_id'] not in {w['world_id'] for w in worlds} or ((p['dimension_id'], p['world_id'], p['owner_id'], p['resource_id'], p['commitment_id']) != (z['dimension_id'], z['world_id'], z['owner_id'], z['resource_id'], z['commitment_id'])): + return False + return obs['input_sha256'] == vsha(inputs) and law_hierarchy(inputs, obs) + except ValueError: + return False + +def law_authority(inputs, obs): + try: + fresh = {k: set() for k in ('grant_ref', 'execution_id', 'activation_id', 'validation_id', 'invocation_nonce', 'freshness_ref')} + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + pairs = [(ph['authority'], e)] + ([(x['authority'], x['event']) for x in e.get('children', [])] if e.get('operation') == 'COMPOUND' else []) + invalid = [not authority_relation(a, z) for a, z in pairs] + if row['status'] in ('REPLAY', 'RECONCILE_EXPIRED'): + continue + if any((any((a[k] in fresh[k] for k in fresh)) for a, _ in pairs)): + return False + for a, _ in pairs: + for k in fresh: + fresh[k].add(a[k]) + if invalid[0] and row['status'] != 'DENY_AUTHORITY': + return False + if e.get('operation') == 'COMPOUND' and any(invalid[1:]): + records = {x['operation_id']: x for x in row['after']['retained']} + for (_, z), bad in zip(pairs[1:], invalid[1:]): + if bad and (z['operation_id'] not in records or records[z['operation_id']]['outcome'] != 'DENY_AUTHORITY'): + return False + return True + except ValueError: + return False + +def law_kind(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + if e.get('operation') not in OP_FIELDS: + return False + if row['status'] in ('REPLAY', 'RECONCILE_EXPIRED', 'DENY_AUTHORITY', 'DENY_ADMISSION', 'UNSUPPORTED', 'BEFORE_COMMIT'): + continue + if e['operation'] == 'COMPOUND': + continue + before = {d['dimension_id']: d for d in row['before']['dimensions']} + after = {d['dimension_id']: d for d in row['after']['dimensions']} + d = before.get(e['dimension_id']) + if d is None: + continue + b = d['state'] + a = after[e['dimension_id']]['state'] + n = e['amount'] + op = e['operation'] + k = d['kind'] + if k == 'CONSUMABLE' and op in ('RESERVE', 'ESCROW') and (not (a['free'] == b['free'] - n and a['reserved'] == b['reserved'] + n)): + return False + if k == 'CONSUMABLE' and op == 'ACQUIRE' and (not (a['consumed'] == b['consumed'] + n and a['reserved'] == b['reserved'] - min(n, b['reserved']))): + return False + if k == 'PEAK' and op == 'RESERVE' and (a['reserved'] != b['reserved'] + n): + return False + if k == 'PEAK' and op == 'ACQUIRE' and (not (a['reserved'] == b['reserved'] - n and a['current'] == b['current'] + n)): + return False + if k == 'RATE' and op == 'RESERVE' and (a['reserved'] != b['reserved'] + n): + return False + if k == 'RATE' and op == 'ACQUIRE' and (a['available'] != b['available'] - n): + return False + if k == 'LEASE' and op == 'LEASE_GRANT' and (not any((x['lease_id'] == e['operation_id'] and x['epoch'] == 1 for x in a['active']))): + return False + if k == 'SHARE' and op == 'SHARE_ALLOCATE' and (not any((x['child_id'] == e['child_id'] and x['allocated'] == n for x in a['children']))): + return False + return all((conservation(x['after']) for x in obs['phases'])) and conservation(obs['final_state']) + except ValueError: + return False + +def law_hierarchy(inputs, obs): + try: + for row in obs['phases']: + worlds = row['after']['worlds'] + if any((not isinstance(w, dict) or set(w) != {'world_id'} or (not isinstance(w['world_id'], str)) or (not w['world_id']) for w in worlds)) or len({w['world_id'] for w in worlds}) != len(worlds): + return False + ds = {d['dimension_id']: d for d in row['after']['dimensions']} + for d in ds.values(): + seen = set() + p = d['parent_budget_id'] + if p is not None: + parent = ds.get(p) + if parent is None: + return False + rel = (d['kind'], d['unit_id'], parent['kind'], parent['unit_id']) + cap = law_capacity + if d['owner_id'] != parent['owner_id'] or ((d['kind'], d['unit_id']) != (parent['kind'], parent['unit_id']) and rel not in PARENT_COMPAT) or law_capacity(d) > law_capacity(parent): + return False + while p is not None: + if p not in ds or p in seen: + return False + seen.add(p) + p = ds[p]['parent_budget_id'] + for parent in ds.values(): + children = [d for d in ds.values() if d['parent_budget_id'] == parent['dimension_id']] + cap = law_capacity + if sum((law_capacity(d) for d in children)) > law_capacity(parent): + return False + return True + except ValueError: + return False + +def law_reservation(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + op = e.get('operation') + if op not in OP_FIELDS: + return False + if op in ('RESERVE', 'ESCROW') and row['status'] == 'APPLIED': + b = next((d for d in row['before']['dimensions'] if d['dimension_id'] == e['dimension_id']))['state'] + a = next((d for d in row['after']['dimensions'] if d['dimension_id'] == e['dimension_id']))['state'] + if a['reserved'] - b['reserved'] != e['amount']: + return False + if row['status'] in ('DENY_AUTHORITY', 'UNSUPPORTED', 'BEFORE_COMMIT') or (row['status'] == 'DENY_ADMISSION' and op not in ('LEASE_USE', 'LEASE_RENEW', 'LEASE_REVOKE')): + bd = clone(row['before']) + ad = clone(row['after']) + bd['retained'] = ad['retained'] = [] + if bd['dimensions'] != ad['dimensions']: + return False + return True + except ValueError: + return False + +def law_cancel(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + if ph['event'].get('operation') not in OP_FIELDS: + return False + if ph['event']['operation'] in ('FAIL', 'LATE_RESULT', 'WORLD_DISCARD', 'DEPENDENCY_ROLLBACK', 'CANCEL_REQUEST'): + for b, a in zip(row['before']['dimensions'], row['after']['dimensions']): + for key in ('consumed', 'reserved', 'free', 'current', 'available'): + if key in b['state'] and b['state'][key] != a['state'][key]: + return False + return True + except ValueError: + return False + +def law_provider(inputs, obs): + try: + facts = {x['fact_id']: x for x in inputs['initial_state']['provider_facts']} + successors = {x['prior_fact_id'] for x in facts.values() if x['prior_fact_id'] is not None} + ops = {x['operation_id'] for x in facts.values()} + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + if not e['operation'].startswith('PROVIDER_'): + continue + stage = e['operation'][9:] + prior = e['prior_fact_id'] + old = facts.get(prior) + legal = stage == 'ESTIMATE' and prior is None + if old is not None and old['provider_account_id'] == e['provider_account_id']: + legal |= old['stage'] == 'ESTIMATE' and stage in ('OBSERVED', 'UNKNOWN') + legal |= old['stage'] == 'UNKNOWN' and stage == 'OBSERVED' and (e['amount'] <= old['amount']) + legal |= old['stage'] == 'OBSERVED' and stage == 'SETTLED' and (e['amount'] == old['amount']) + legal |= old['stage'] in ('SETTLED', 'CREDIT') and stage == 'CREDIT' + legal = legal and e['provider_fact_id'] not in facts and (e['operation_id'] not in ops) and (prior not in successors) + if legal and stage == 'CREDIT': + x = old + credits = e['amount'] + while x is not None and x['stage'] == 'CREDIT': + credits += x['amount'] + x = facts.get(x['prior_fact_id']) + legal = x is not None and x['stage'] == 'SETTLED' and (credits <= x['amount']) + applied = row['status'] in ('APPLIED', 'UNKNOWN_RECONCILE') + if applied != legal: + return False + if applied: + f = {'amount': e['amount'], 'fact_id': e['provider_fact_id'], 'operation_id': e['operation_id'], 'prior_fact_id': prior, 'provider_account_id': e['provider_account_id'], 'stage': stage} + facts[f['fact_id']] = f + ops.add(f['operation_id']) + if prior is not None: + successors.add(prior) + if row['after']['provider_facts'] != list(facts.values()): + return False + return True + except ValueError: + return False + +def law_compound(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + if ph['event']['operation'] == 'COMPOUND': + if row['status'] in ('REPLAY', 'RECONCILE_EXPIRED'): + continue + e = ph['event'] + if any((x['event']['operation'] == 'COMPOUND' for x in e['children'])): + return False + ids = [e['operation_id']] + [x['event']['operation_id'] for x in e['children']] + records = {x['operation_id']: x for x in row['after']['retained'] if x['operation_id'] in ids} + if len(records) != len(ids) or any((records[x['event']['operation_id']]['causal_operation_id'] != e['operation_id'] for x in e['children'])): + return False + expected = [] + for child in e['children']: + ce = child['event'] + ca = child['authority'] + if not authority_relation(ca, ce): + expected.append('DENY_AUTHORITY') + elif ce.get('operation') not in OP_FIELDS or ce['operation'] in UNSUPPORTED_OPS: + expected.append('UNSUPPORTED') + else: + expected.append(records[ce['operation_id']]['outcome']) + if records[ce['operation_id']]['claimed_ids'] != claimed_ids(e): + return False + child_outcomes = [records[x['event']['operation_id']]['outcome'] for x in e['children']] + if child_outcomes != expected: + return False + outer = 'APPLIED' if all((x == 'APPLIED' for x in child_outcomes)) else 'DENY_ADMISSION' + if row['status'] != outer or records[e['operation_id']]['outcome'] != outer or records[e['operation_id']]['claimed_ids'] != claimed_ids(e): + return False + if outer != 'APPLIED': + b = clone(row['before']) + a = clone(row['after']) + b['retained'] = a['retained'] = [] + if b != a: + return False + return True + except ValueError: + return False + +def law_recovery(inputs, obs): + try: + if inputs['initial_state']['retained'] or inputs['initial_state']['tombstones']: + return False + seen = {} + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + prior = seen.get(e['operation_id']) + if prior and prior != vsha(e) and (row['status'] != 'DENY_ADMISSION'): + return False + seen.setdefault(e['operation_id'], vsha(e)) + new = [x for x in row['after']['retained'] if x not in row['before']['retained']] + for x in new: + target = e if x['operation_id'] == e['operation_id'] else next((c['event'] for c in e.get('children', []) if c['event']['operation_id'] == x['operation_id']), None) + if target is None or x['binding_sha256'] != vsha(target) or x['attempted_at'] != ph['logical_now'] or (x['expires_at'] != ph['logical_now'] + 20) or (x['claimed_ids'] != claimed_ids(e)): + return False + causal = e['operation_id'] + expected = row['status'] if target is e else 'DENY_AUTHORITY' if not authority_relation(next((c['authority'] for c in e['children'] if c['event'] is target)), target) else x['outcome'] + if x['causal_operation_id'] != causal or x['outcome'] != expected: + return False + for x in row['after']['retained']: + if x['attempted_at'] > x['expires_at'] or x['outcome'] not in STATUSES + ('BEFORE_COMMIT',): + return False + for x in row['after']['tombstones']: + old = next((z for z in row['before']['retained'] if z['operation_id'] == x['operation_id']), None) + if x['retired_at'] > ph['logical_now'] or (x not in row['before']['tombstones'] and (old is None or x['binding_sha256'] != old['binding_sha256'] or x['outcome'] != old['outcome'] or (x['causal_operation_id'] != e['operation_id']) or (x['retired_at'] != ph['logical_now']))): + return False + return True + except ValueError: + return False + +def law_attribution(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + pairs = [(ph['authority'], ph['event'])] + ([(x['authority'], x['event']) for x in ph['event'].get('children', [])] if ph['event'].get('operation') == 'COMPOUND' else []) + plans = {p['plan_id']: p for p in row['before']['resource_binding_plans']} + dims = {d['dimension_id']: d for d in row['before']['dimensions']} + worlds = {w['world_id'] for w in row['before']['worlds']} + after_dims = {d['dimension_id'] for d in row['after']['dimensions']} + after_worlds = {w['world_id'] for w in row['after']['worlds']} + if any((p['dimension_id'] not in after_dims or p['world_id'] not in after_worlds for p in row['after']['resource_binding_plans'])): + return False + for a, e in pairs: + p = plans.get(e['plan_id']) + d = dims.get(e['dimension_id']) + actor_ok = e['actor_id'] == a['actor_id'] == a['handoff']['actor_id'] + actor_denied = any((r['operation_id'] == e['operation_id'] and r['outcome'] == 'DENY_AUTHORITY' and (r['binding_sha256'] == vsha(e)) for r in row['after']['retained'])) + if p is None or d is None or e['world_id'] not in worlds or (not actor_ok and (not actor_denied)) or ((p['dimension_id'], p['world_id'], p['owner_id'], p['resource_id'], p['commitment_id']) != (e['dimension_id'], e['world_id'], e['owner_id'], e['resource_id'], e['commitment_id'])): + return False + return True + except ValueError: + return False + +def law_separation(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + if e.get('operation') not in OP_FIELDS: + return False + if e['operation'] in UNSUPPORTED_OPS and row['status'] != 'UNSUPPORTED': + return False + return True + except ValueError: + return False + +def law_canonical(inputs, obs): + try: + return canonical(parse_bytes(canonical(obs))) == canonical(obs) and obs['input_sha256'] == vsha(inputs) + except ValueError: + return False + +def oracle_step(image, event, now): + """Independent equations: no primary classifier/applier/helper calls.""" + out = clone(image) + op = event['operation'] + n = event['amount'] + ds = {x['dimension_id']: x for x in out['dimensions']} + d = ds.get(event['dimension_id']) + + def keep(status): + if status == 'APPLIED': + out['retained'].append({'attempted_at': now, 'binding_sha256': vsha(event), 'causal_operation_id': event['operation_id'], 'claimed_ids': claimed_ids(event), 'expires_at': now + 20, 'operation_id': event['operation_id'], 'outcome': 'APPLIED'}) + return (status, out) + if op in UNSUPPORTED_OPS: + return ('UNSUPPORTED', image) + if op == 'COMPOUND': + trial = clone(image) + for child in event.get('children', []): + status, trial = oracle_step(trial, child, now) + if status != 'APPLIED': + return (status, image) + trial['retained'].append({'attempted_at': now, 'binding_sha256': vsha(event), 'causal_operation_id': event['operation_id'], 'claimed_ids': claimed_ids(event), 'expires_at': now + 20, 'operation_id': event['operation_id'], 'outcome': 'APPLIED'}) + return ('APPLIED', trial) + if op == 'TOMB': + old = next((x for x in out['retained'] if x['operation_id'] == event.get('target_operation_id')), None) + if old is None: + return ('DENY_ADMISSION', image) + out['retained'].remove(old) + out['tombstones'].append({'binding_sha256': old['binding_sha256'], 'causal_operation_id': event['operation_id'], 'claimed_ids': old['claimed_ids'], 'operation_id': old['operation_id'], 'outcome': old['outcome'], 'retired_at': now}) + out['retained'].append({'attempted_at': now, 'binding_sha256': vsha(event), 'causal_operation_id': event['operation_id'], 'claimed_ids': claimed_ids(event), 'expires_at': now + 20, 'operation_id': event['operation_id'], 'outcome': 'APPLIED'}) + return ('APPLIED', out) + if op.startswith('PROVIDER_'): + stage = op[9:] + prior = event['prior_fact_id'] + facts = {x['fact_id']: x for x in out['provider_facts']} + old = facts.get(prior) + successors = {x['prior_fact_id'] for x in out['provider_facts'] if x['prior_fact_id'] is not None} + if event['provider_fact_id'] in facts or any((x['operation_id'] == event['operation_id'] for x in out['provider_facts'])) or prior in successors: + return ('DENY_ADMISSION', image) + legal = stage == 'ESTIMATE' and prior is None + if old is not None and old['provider_account_id'] == event['provider_account_id']: + legal |= old['stage'] == 'ESTIMATE' and stage in ('OBSERVED', 'UNKNOWN') + legal |= old['stage'] == 'UNKNOWN' and stage == 'OBSERVED' and (n <= old['amount']) + legal |= old['stage'] == 'OBSERVED' and stage == 'SETTLED' and (n == old['amount']) + legal |= old['stage'] in ('SETTLED', 'CREDIT') and stage == 'CREDIT' + if not legal: + return ('DENY_ADMISSION', image) + if stage == 'CREDIT': + x = old + credits = n + while x and x['stage'] == 'CREDIT': + credits += x['amount'] + x = facts.get(x['prior_fact_id']) + if x is None or x['stage'] != 'SETTLED' or credits > x['amount']: + return ('DENY_ADMISSION', image) + out['provider_facts'].append({'amount': n, 'fact_id': event['provider_fact_id'], 'operation_id': event['operation_id'], 'prior_fact_id': prior, 'provider_account_id': event['provider_account_id'], 'stage': stage}) + status = 'UNKNOWN_RECONCILE' if stage == 'UNKNOWN' else 'APPLIED' + out['retained'].append({'attempted_at': now, 'binding_sha256': vsha(event), 'causal_operation_id': event['operation_id'], 'claimed_ids': claimed_ids(event), 'expires_at': now + 20, 'operation_id': event['operation_id'], 'outcome': status}) + return (status, out) + if op in ('CACHE_REUSE', 'FAIL', 'DEPENDENCY_ROLLBACK', 'LATE_RESULT', 'WORLD_DISCARD', 'CANCEL_REQUEST'): + out['retained'].append({'attempted_at': now, 'binding_sha256': vsha(event), 'causal_operation_id': event['operation_id'], 'claimed_ids': claimed_ids(event), 'expires_at': now + 20, 'operation_id': event['operation_id'], 'outcome': 'APPLIED'}) + return ('APPLIED', out) + if d is None: + return ('UNSUPPORTED', image) + s = d['state'] + if d['kind'] == 'CONSUMABLE': + if op in ('RESERVE', 'ESCROW'): + if s['free'] < n: + return ('DENY_ADMISSION', image) + s['free'] -= n + s['reserved'] += n + elif op == 'ACQUIRE': + extra = max(0, n - s['reserved']) + if s['free'] < extra: + return ('DENY_ADMISSION', image) + s['reserved'] -= min(n, s['reserved']) + s['free'] -= extra + s['consumed'] += n + s['refundable' if event.get('refundable', False) else 'nonrefundable'] += n + elif op in ('RELEASE', 'CANCEL_EFFECTIVE'): + if s['reserved'] < n: + return ('DENY_ADMISSION', image) + s['reserved'] -= n + s['free'] += n + elif op == 'REFUND': + if s['refundable'] < n: + return ('DENY_ADMISSION', image) + s['refundable'] -= n + s['consumed'] -= n + s['free'] += n + else: + return ('UNSUPPORTED', image) + elif d['kind'] == 'PEAK': + if op == 'RESERVE': + if s['current'] + s['reserved'] + n > s['cap']: + return ('DENY_ADMISSION', image) + s['reserved'] += n + elif op == 'ACQUIRE': + if s['reserved'] < n: + return ('DENY_ADMISSION', image) + s['reserved'] -= n + s['current'] += n + s['high_water'] = max(s['high_water'], s['current']) + elif op == 'RELEASE': + key = 'reserved' if event.get('release_from', 'CURRENT') == 'RESERVED' else 'current' + if s[key] < n: + return ('DENY_ADMISSION', image) + s[key] -= n + else: + return ('UNSUPPORTED', image) + elif d['kind'] == 'RATE': + if now < s['last_refill_at']: + return ('DENY_ADMISSION', image) + if op == 'REFILL': + k = (now - s['last_refill_at']) // s['window'] + if k: + s['available'] = min(s['cap'], s['available'] + k * s['refill']) + s['last_refill_at'] += k * s['window'] + elif op == 'RESERVE': + if s['available'] - s['reserved'] < n: + return ('DENY_ADMISSION', image) + s['reserved'] += n + elif op == 'ACQUIRE': + if s['reserved'] >= n: + s['reserved'] -= n + s['available'] -= n + elif s['available'] - s['reserved'] >= n: + s['available'] -= n + else: + return ('DENY_ADMISSION', image) + elif op == 'RELEASE': + if s['reserved'] < n: + return ('DENY_ADMISSION', image) + s['reserved'] -= n + else: + return ('UNSUPPORTED', image) + elif d['kind'] == 'LEASE': + for x in list(s['active']): + if now >= x['expires_at']: + s['active'].remove(x) + s['expired'].append(x['lease_id']) + s['history'].append({**x, 'end': 'EXPIRED'}) + if op == 'LEASE_GRANT': + if event['epoch'] != 1 or event['expires_at'] <= now or len(s['active']) >= s['capacity'] or any((event['operation_id'] == x['lease_id'] for x in s['active'] + s['history'])): + return ('DENY_ADMISSION', image) + s['active'].append({'epoch': 1, 'expires_at': event['expires_at'], 'lease_id': event['operation_id'], 'uses': 0}) + else: + lease = next((x for x in s['active'] if x['lease_id'] == event.get('lease_id')), None) + if lease is None: + return ('DENY_ADMISSION', out) + if op == 'LEASE_USE': + if event['epoch'] != lease['epoch']: + return ('DENY_ADMISSION', image) + lease['uses'] += 1 + elif op == 'LEASE_REVOKE': + s['active'].remove(lease) + s['history'].append({**lease, 'end': 'REVOKED'}) + elif op == 'LEASE_RENEW': + if event['epoch'] != lease['epoch'] + 1 or event['expires_at'] <= max(now, lease['expires_at']): + return ('DENY_ADMISSION', image) + lease['epoch'] = event['epoch'] + lease['expires_at'] = event['expires_at'] + else: + return ('UNSUPPORTED', image) + else: + child = next((x for x in s['children'] if x['child_id'] == event.get('child_id')), None) + history = sum((x['used'] for x in s['revoked_history'])) + if op == 'SHARE_ALLOCATE': + if any((event['child_id'] == x['child_id'] for x in s['children'] + s['revoked_history'])) or sum((x['allocated'] for x in s['children'])) + history + n > s['capacity']: + return ('DENY_ADMISSION', image) + s['children'].append({'allocated': n, 'child_id': event['child_id'], 'reserved': 0, 'used': 0}) + elif child is None: + return ('DENY_ADMISSION', image) + elif op == 'SHARE_RESERVE': + if child['used'] + child['reserved'] + n > child['allocated']: + return ('DENY_ADMISSION', image) + child['reserved'] += n + elif op == 'SHARE_ACQUIRE': + if child['reserved'] < n: + return ('DENY_ADMISSION', image) + child['reserved'] -= n + child['used'] += n + elif op == 'SHARE_REVOKE': + s['children'].remove(child) + s['revoked_history'].append({'allocated': child['allocated'], 'child_id': child['child_id'], 'reserved': child['reserved'], 'used': child['used']}) + else: + return ('UNSUPPORTED', image) + return keep('APPLIED') + +def oracle_observation(inputs): + exact(inputs, {'initial_state', 'phases'}, 'oracle inputs') + validate_state(inputs['initial_state'], 0, initial=True) + validate_trace_namespaces(inputs) + state = clone(inputs['initial_state']) + rows = [] + last = 0 + fresh = {k: set() for k in ('grant_ref', 'execution_id', 'activation_id', 'validation_id', 'invocation_nonce', 'freshness_ref')} + + def allowed(a, e): + return a['verdict'] == 'ALLOW' and a['right'] == 'USE_BUDGET' and all((a[k] == a['handoff'][k] for k in AUTH_CONTEXT)) and ((a['actor_id'], a['commitment_id'], a['world_id']) == (e['actor_id'], e['commitment_id'], e['world_id'])) + + def joined(image, e): + ds = {x['dimension_id']: x for x in image['dimensions']} + ps = {x['plan_id']: x for x in image['resource_binding_plans']} + ws = {x['world_id'] for x in image['worlds']} + d = ds.get(e['dimension_id']) + p = ps.get(e['plan_id']) + return d is not None and e['world_id'] in ws and (p is not None) and ((p['dimension_id'], p['world_id'], p['resource_id'], p['owner_id'], p['commitment_id']) == (e['dimension_id'], e['world_id'], e['resource_id'], e['owner_id'], e['commitment_id'])) and (d['owner_id'] == e['owner_id']) + + def record(image, e, status, now, causal=None, claims=None): + image['retained'].append({'attempted_at': now, 'binding_sha256': vsha(e), 'causal_operation_id': causal or e['operation_id'], 'claimed_ids': claims or claimed_ids(e), 'expires_at': now + 20, 'operation_id': e['operation_id'], 'outcome': status}) + for ph in inputs['phases']: + before = clone(state) + if ph == {'kind': 'RELOAD'}: + state = parse_bytes(canonical(state)) + rows.append({'after': clone(state), 'before': before, 'delta_applied': False, 'kind': 'RELOAD', 'response_visible': True, 'status': None}) + continue + exact(ph, {'authority', 'event', 'fault', 'kind', 'logical_now'}, 'oracle phase') + validate_authority(ph['authority']) + validate_event(ph['event']) + e = ph['event'] + now = ph['logical_now'] + if now < last: + raise ValueError('reject') + last = now + old = next((x for x in state['retained'] + state['tombstones'] if x['operation_id'] == e['operation_id']), None) + if old: + status = ('REPLAY' if old in state['retained'] and now < old['expires_at'] else 'RECONCILE_EXPIRED') if old['binding_sha256'] == vsha(e) and old['claimed_ids'] == claimed_ids(e) else 'DENY_ADMISSION' + after = before + else: + authorities = [ph['authority']] + ([x['authority'] for x in e.get('children', [])] if e['operation'] == 'COMPOUND' else []) + for a in authorities: + for k in fresh: + if a[k] in fresh[k]: + raise ValueError('reject') + fresh[k].add(a[k]) + if old: + pass + elif not allowed(ph['authority'], e): + status = 'DENY_AUTHORITY' + after = clone(before) + record(after, e, status, now) + elif ph['fault'] == 'BEFORE_COMMIT': + status = 'BEFORE_COMMIT' + after = clone(before) + record(after, e, status, now) + elif not joined(state, e): + status = 'DENY_ADMISSION' + after = clone(before) + record(after, e, status, now) + elif e['operation'] == 'COMPOUND': + ids = [e['operation_id']] + [x['event']['operation_id'] for x in e['children']] + after = clone(state) + status = 'APPLIED' + if len(ids) != len(set(ids)) or {x['operation_id'] for x in state['retained'] + state['tombstones']} & set(ids): + status = 'DENY_ADMISSION' + after = clone(state) + else: + trial = clone(state) + outcomes = [] + for child in e['children']: + ce = child['event'] + if not allowed(child['authority'], ce): + child_status = 'DENY_AUTHORITY' + elif not joined(trial, ce): + child_status = 'DENY_ADMISSION' + else: + child_status, next_trial = oracle_step(trial, ce, now) + trial = next_trial if child_status == 'APPLIED' else trial + outcomes.append(child_status) + status = 'APPLIED' if all((x == 'APPLIED' for x in outcomes)) else 'DENY_ADMISSION' + after = trial if status == 'APPLIED' else clone(state) + childids = {x['event']['operation_id'] for x in e['children']} + after['retained'] = [x for x in after['retained'] if x['operation_id'] not in childids] + claims = claimed_ids(e) + for child, child_status in zip(e['children'], outcomes): + record(after, child['event'], child_status, now, e['operation_id'], claims) + record(after, e, status, now, claims=claims) + else: + status, after = oracle_step(state, e, now) + if not any((x['operation_id'] == e['operation_id'] for x in after['retained'])): + record(after, e, status, now) + visible = ph['fault'] not in ('BEFORE_COMMIT', 'AFTER_COMMIT_BEFORE_RESPONSE') or status == 'DENY_AUTHORITY' + validate_state(after, now) + state = after + rows.append({'after': clone(state), 'before': before, 'delta_applied': after != before, 'kind': 'APPLY', 'response_visible': visible, 'status': status}) + return {'final_state': state, 'input_sha256': vsha(inputs), 'phases': rows} + +def law_whole(inputs, obs): + try: + return obs == oracle_observation(clone(inputs)) + except ValueError: + return False + +def law_results(inputs, obs): + return {'WHOLE_OBSERVATION_CLOSURE': law_whole(inputs, obs), 'TYPED_IDENTITY_SCOPE': law_typed(inputs, obs), 'D003_AUTHORITY_FIRST': law_authority(inputs, obs), 'PER_KIND_CONSERVATION': law_kind(inputs, obs), 'PARENT_SIBLING_CONSERVATION': law_hierarchy(inputs, obs), 'RESERVATION_ACQUISITION': law_reservation(inputs, obs), 'CANCELLATION_REFUND': law_cancel(inputs, obs), 'PROVIDER_RECONCILIATION': law_provider(inputs, obs), 'COMPOUND_ATOMICITY': law_compound(inputs, obs), 'RECOVERY_REPLAY': law_recovery(inputs, obs), 'ATTRIBUTION_MODEL_INDEPENDENCE': law_attribution(inputs, obs), 'EFFECT_PROMOTION_SEPARATION': law_separation(inputs, obs), 'CANONICAL_DETERMINISM': law_canonical(inputs, obs)} + +def produce(packet_bytes, manifest_bytes, identity_bytes): + manifest = parse_bytes(manifest_bytes) + rows = [] + for case in manifest['cases']: + inputs = case['inputs'] + assertion = {'case_id': case['id']} + try: + observation = oracle_observation(inputs) + laws = law_results(inputs, observation) + if not all(laws.values()): + raise ValueError('reject') + assertion.update({'classification': 'ACCEPTED_LAWS_PASS', 'laws': laws, 'pass': True}) + cell = {'case_id': case['id'], 'input_sha256': vsha(inputs), 'observation': observation} + except ValueError: + assertion.update({'classification': 'STRUCTURAL_REJECT_PASS', 'laws': None, 'pass': True}) + cell = {'case_id': case['id'], 'input_sha256': vsha(inputs), 'rejection': 'PRIMARY_AND_ORACLE_REJECT'} + rows.append((cell, assertion)) + body = {'assertions': [x[1] for x in rows], 'cells': [x[0] for x in rows], 'manifest_sha256': sha(manifest_bytes)} + identity = {'byte_length': len(identity_bytes), 'kind': 'PRODUCER_IDENTITY', 'sha256': sha(identity_bytes)} + return canonical({'identity': identity, 'provenance_qualified': True, 'schema': 'D008-O-3', 'semantic_body': body}) diff --git a/future/d008_executor_v3/producer.py b/future/d008_executor_v3/producer.py new file mode 100644 index 0000000000..c4bc0617f5 --- /dev/null +++ b/future/d008_executor_v3/producer.py @@ -0,0 +1,1023 @@ +import json +import hashlib +import unicodedata +U64 = 18446744073709551615 +KINDS = ('CONSUMABLE', 'PEAK', 'RATE', 'LEASE', 'SHARE') +LAWS = ('WHOLE_OBSERVATION_CLOSURE', 'TYPED_IDENTITY_SCOPE', 'D003_AUTHORITY_FIRST', 'PER_KIND_CONSERVATION', 'PARENT_SIBLING_CONSERVATION', 'RESERVATION_ACQUISITION', 'CANCELLATION_REFUND', 'PROVIDER_RECONCILIATION', 'COMPOUND_ATOMICITY', 'RECOVERY_REPLAY', 'ATTRIBUTION_MODEL_INDEPENDENCE', 'EFFECT_PROMOTION_SEPARATION', 'CANONICAL_DETERMINISM') +STATUSES = ('APPLIED', 'DENY_AUTHORITY', 'DENY_ADMISSION', 'UNSUPPORTED', 'UNKNOWN_RECONCILE', 'REPLAY', 'RECONCILE_EXPIRED') +FORBIDDEN_INPUT_KEYS = {'expected', 'expected_status', 'pass', 'law_results', 'verdict_expected'} +BASE_EVENT = {'operation', 'owner_id', 'commitment_id', 'amount', 'dimension_id', 'world_id', 'resource_id', 'actor_id', 'operation_id', 'plan_id'} +OP_FIELDS = {'RESERVE': set(), 'ESCROW': set(), 'ACQUIRE': {'refundable'}, 'RELEASE': {'release_from'}, 'CANCEL_EFFECTIVE': set(), 'REFUND': set(), 'REFILL': set(), 'LEASE_GRANT': {'expires_at', 'epoch'}, 'LEASE_USE': {'lease_id', 'epoch'}, 'LEASE_REVOKE': {'lease_id'}, 'LEASE_RENEW': {'expires_at', 'lease_id', 'epoch'}, 'SHARE_ALLOCATE': {'child_id'}, 'SHARE_RESERVE': {'child_id'}, 'SHARE_ACQUIRE': {'child_id'}, 'SHARE_REVOKE': {'child_id'}, 'PROVIDER_ESTIMATE': {'provider_fact_id', 'provider_account_id', 'prior_fact_id'}, 'PROVIDER_OBSERVED': {'provider_fact_id', 'provider_account_id', 'prior_fact_id'}, 'PROVIDER_UNKNOWN': {'provider_fact_id', 'provider_account_id', 'prior_fact_id'}, 'PROVIDER_SETTLED': {'provider_fact_id', 'provider_account_id', 'prior_fact_id'}, 'PROVIDER_CREDIT': {'provider_fact_id', 'provider_account_id', 'prior_fact_id'}, 'CACHE_REUSE': {'cache_fresh'}, 'FAIL': set(), 'DEPENDENCY_ROLLBACK': set(), 'LATE_RESULT': set(), 'WORLD_DISCARD': set(), 'CANCEL_REQUEST': set(), 'TOMB': {'target_operation_id'}, 'COMPOUND': {'children'}, 'EFFECT_AUTHORIZE': set(), 'PROMOTE': set(), 'CONVERT': {'target_dimension_id'}} +UNSUPPORTED_OPS = {'PROMOTE', 'EFFECT_AUTHORIZE', 'CONVERT'} +UNIT_COMPAT = {'token': {'CONSUMABLE'}, 'worker': {'SHARE', 'PEAK'}, 'request': {'RATE'}, 'tool-seat': {'LEASE'}} +PARENT_COMPAT = () +AUTH_CONTEXT = ('grant_ref', 'generation', 'execution_id', 'activation_id', 'validation_id', 'invocation_nonce', 'freshness_ref', 'actor_id', 'commitment_id', 'world_id', 'right') + +def parse_bytes(raw): + text = raw.decode('utf-8') + if unicodedata.normalize('NFC', text) != text: + raise ValueError('reject') + value = json.loads(text) + if canonical(value) != raw: + raise ValueError('reject') + return value + +def law_capacity(z): + return z['state']['issued'] if z['kind'] == 'CONSUMABLE' else z['state']['cap'] if z['kind'] in ('PEAK', 'RATE') else z['state']['capacity'] + +def _pairs(xs): + d = {} + for k, v in xs: + if k in d: + raise ValueError('reject') + d[k] = v + return d + +def walk(x, p='$'): + if isinstance(x, float): + raise ValueError('reject') + if isinstance(x, int) and (not isinstance(x, bool)) and (not 0 <= x <= U64): + raise ValueError('reject') + if isinstance(x, str): + if any((55296 <= ord(c) <= 57343 for c in x)): + raise ValueError('reject') + if unicodedata.normalize('NFC', x) != x: + raise ValueError('reject') + if isinstance(x, dict): + for k, v in x.items(): + if not isinstance(k, str): + raise ValueError('reject') + walk(k, p + '/key') + walk(v, p + '/' + k) + elif isinstance(x, list): + for i, v in enumerate(x): + walk(v, p + '/' + str(i)) + elif x is not None and (not isinstance(x, (str, int, bool))): + raise ValueError('reject') + +def canonical(x): + walk(x) + return (json.dumps(x, ensure_ascii=False, sort_keys=True, separators=(',', ':'), allow_nan=False) + '\n').encode() + +def exact(x, ks, p): + if not isinstance(x, dict) or set(x) != set(ks): + raise ValueError('reject') + +def text(x, p): + if not isinstance(x, str) or not x: + raise ValueError('reject') + return x + +def uint(x, p): + if not isinstance(x, int) or isinstance(x, bool) or (not 0 <= x <= U64): + raise ValueError('reject') + return x + +def sha(b): + return hashlib.sha256(b).hexdigest() + +def vsha(x): + return sha(canonical(x)) + +def clone(x): + return json.loads(json.dumps(x)) + +def art(kind, raw): + return {'byte_length': len(raw), 'kind': kind, 'sha256': sha(raw)} + +def digest(x, p): + text(x, p) + if len(x) != 64 or any((c not in '0123456789abcdef' for c in x)): + raise ValueError('reject') + +def index(xs, k, p): + d = {} + for x in xs: + if not isinstance(x, dict) or k not in x: + text(None, p) + text(x[k], p) + if x[k] in d: + raise ValueError('reject') + d[x[k]] = x + return d + +def validate_dimension(d): + exact(d, {'dimension_id', 'kind', 'owner_id', 'parent_budget_id', 'scope', 'state', 'unit_id'}, 'dimension') + [text(d[k], k) for k in ('dimension_id', 'kind', 'owner_id', 'scope', 'unit_id')] + if d['kind'] not in KINDS or d['scope'] != 'GLOBAL' or d['unit_id'] not in UNIT_COMPAT or (d['kind'] not in UNIT_COMPAT[d['unit_id']]): + raise ValueError('reject') + if d['parent_budget_id'] is not None: + text(d['parent_budget_id'], 'parent') + s = d['state'] + if d['kind'] == 'CONSUMABLE': + exact(s, {'consumed', 'expired', 'free', 'issued', 'nonrefundable', 'refundable', 'reserved', 'unknown_disputed'}, 'consumable') + [uint(v, k) for k, v in s.items()] + if s['free'] + s['reserved'] + s['consumed'] + s['expired'] + s['unknown_disputed'] != s['issued'] or s['refundable'] + s['nonrefundable'] != s['consumed']: + raise ValueError('reject') + elif d['kind'] == 'PEAK': + exact(s, {'cap', 'current', 'high_water', 'reserved'}, 'peak') + [uint(v, k) for k, v in s.items()] + if s['current'] + s['reserved'] > s['cap'] or s['high_water'] < s['current']: + raise ValueError('reject') + elif d['kind'] == 'RATE': + exact(s, {'available', 'cap', 'last_refill_at', 'refill', 'reserved', 'window'}, 'rate') + [uint(v, k) for k, v in s.items()] + if not s['window'] or s['available'] > s['cap'] or s['reserved'] > s['available']: + raise ValueError('reject') + elif d['kind'] == 'LEASE': + exact(s, {'active', 'capacity', 'expired', 'history'}, 'lease state') + uint(s['capacity'], 'capacity') + ids = [] + for x in s['active']: + exact(x, {'epoch', 'expires_at', 'lease_id', 'uses'}, 'active lease') + [uint(x[k], k) for k in ('epoch', 'expires_at', 'uses')] + text(x['lease_id'], 'lease') + ids.append(x['lease_id']) + for x in s['history']: + exact(x, {'end', 'epoch', 'expires_at', 'lease_id', 'uses'}, 'lease history') + [uint(x[k], k) for k in ('epoch', 'expires_at', 'uses')] + text(x['lease_id'], 'lease') + ids.append(x['lease_id']) + for x in s['expired']: + text(x, 'expired lease') + if len(ids) != len(set(ids)) or len(s['active']) > s['capacity'] or any((x['end'] not in ('EXPIRED', 'REVOKED') for x in s['history'])): + raise ValueError('reject') + else: + exact(s, {'capacity', 'children', 'revoked_history'}, 'share state') + uint(s['capacity'], 'capacity') + ids = [] + for x in s['children']: + exact(x, {'allocated', 'child_id', 'reserved', 'used'}, 'share child') + [uint(x[k], k) for k in ('allocated', 'reserved', 'used')] + text(x['child_id'], 'child') + ids.append(x['child_id']) + for x in s['revoked_history']: + exact(x, {'allocated', 'child_id', 'reserved', 'used'}, 'share history') + [uint(x[k], k) for k in ('allocated', 'reserved', 'used')] + text(x['child_id'], 'child') + ids.append(x['child_id']) + if len(ids) != len(set(ids)) or sum((x['allocated'] for x in s['children'])) + sum((x['used'] for x in s['revoked_history'])) > s['capacity'] or any((x['reserved'] + x['used'] > x['allocated'] for x in s['children'])): + raise ValueError('reject') + +def validate_provider_facts(xs): + facts = index(xs, 'fact_id', 'provider fact') + ops = set() + succ = {} + for f in xs: + exact(f, {'amount', 'fact_id', 'operation_id', 'prior_fact_id', 'provider_account_id', 'stage'}, 'provider fact') + uint(f['amount'], 'amount') + [text(f[k], k) for k in ('fact_id', 'operation_id', 'provider_account_id', 'stage')] + if f['operation_id'] in ops or f['stage'] not in ('ESTIMATE', 'OBSERVED', 'UNKNOWN', 'SETTLED', 'CREDIT'): + raise ValueError('reject') + ops.add(f['operation_id']) + prior = f['prior_fact_id'] + if prior is None: + if f['stage'] != 'ESTIMATE': + raise ValueError('reject') + else: + if prior not in facts or prior in succ: + raise ValueError('reject') + old = facts[prior] + succ[prior] = f['fact_id'] + if old['provider_account_id'] != f['provider_account_id']: + raise ValueError('reject') + legal = old['stage'] == 'ESTIMATE' and f['stage'] in ('OBSERVED', 'UNKNOWN') or (old['stage'] == 'UNKNOWN' and f['stage'] == 'OBSERVED' and (f['amount'] <= old['amount'])) or (old['stage'] == 'OBSERVED' and f['stage'] == 'SETTLED' and (f['amount'] == old['amount'])) or (old['stage'] in ('SETTLED', 'CREDIT') and f['stage'] == 'CREDIT') + if not legal: + raise ValueError('reject') + for f in xs: + if f['stage'] == 'UNKNOWN' and f['fact_id'] not in succ: + continue + if f['stage'] == 'CREDIT': + chain = [] + x = f + while x['prior_fact_id'] is not None: + chain.append(x) + x = facts[x['prior_fact_id']] + settled = next((z for z in reversed(chain + [x]) if z['stage'] == 'SETTLED'), None) + if settled is None or sum((z['amount'] for z in chain if z['stage'] == 'CREDIT')) > settled['amount']: + raise ValueError('reject') + +def dimension_capacity(d): + s = d['state'] + return s['issued'] if d['kind'] == 'CONSUMABLE' else s['cap'] if d['kind'] in ('PEAK', 'RATE') else s['capacity'] + +def parent_relation(child, parent): + relation = (child['kind'], child['unit_id'], parent['kind'], parent['unit_id']) + return child['owner_id'] == parent['owner_id'] and ((child['kind'], child['unit_id']) == (parent['kind'], parent['unit_id']) or relation in PARENT_COMPAT) and (dimension_capacity(child) <= dimension_capacity(parent)) + +def validate_state(s, now=None, initial=False): + exact(s, {'dimensions', 'provider_facts', 'resource_binding_plans', 'retained', 'tombstones', 'worlds'}, 'state') + dims = index(s['dimensions'], 'dimension_id', 'dimension') + if initial and (s['retained'] or s['tombstones']): + raise ValueError('reject') + for d in s['dimensions']: + validate_dimension(d) + for d in s['dimensions']: + seen = set() + p = d['parent_budget_id'] + if p is not None and (p not in dims or not parent_relation(d, dims[p])): + raise ValueError('reject') + while p is not None: + if p not in dims or p in seen: + raise ValueError('reject') + seen.add(p) + p = dims[p]['parent_budget_id'] + for parent in s['dimensions']: + children = [d for d in s['dimensions'] if d['parent_budget_id'] == parent['dimension_id']] + if sum((dimension_capacity(d) for d in children)) > dimension_capacity(parent): + raise ValueError('reject') + worlds = index(s['worlds'], 'world_id', 'world') + for w in s['worlds']: + exact(w, {'world_id'}, 'world') + text(w['world_id'], 'world id') + plans = index(s['resource_binding_plans'], 'plan_id', 'plan') + for p in s['resource_binding_plans']: + exact(p, {'commitment_id', 'dimension_id', 'owner_id', 'plan_id', 'resource_id', 'world_id'}, 'plan') + [text(p[k], k) for k in p] + if p['dimension_id'] not in dims or p['world_id'] not in worlds or p['owner_id'] != dims[p['dimension_id']]['owner_id']: + raise ValueError('reject') + validate_provider_facts(s['provider_facts']) + for r in s['retained']: + exact(r, {'attempted_at', 'binding_sha256', 'causal_operation_id', 'claimed_ids', 'expires_at', 'operation_id', 'outcome'}, 'retained') + digest(r['binding_sha256'], 'binding') + [uint(r[k], k) for k in ('attempted_at', 'expires_at')] + [text(r[k], k) for k in ('causal_operation_id', 'operation_id', 'outcome')] + if not isinstance(r['claimed_ids'], list) or r['claimed_ids'] != sorted(set(r['claimed_ids'])) or r['operation_id'] not in r['claimed_ids']: + raise ValueError('reject') + for x in r['claimed_ids']: + text(x, 'claimed id') + for t in s['tombstones']: + exact(t, {'binding_sha256', 'causal_operation_id', 'claimed_ids', 'operation_id', 'outcome', 'retired_at'}, 'tomb') + digest(t['binding_sha256'], 'binding') + uint(t['retired_at'], 'retired') + [text(t[k], k) for k in ('causal_operation_id', 'operation_id', 'outcome')] + if not isinstance(t['claimed_ids'], list) or t['claimed_ids'] != sorted(set(t['claimed_ids'])) or t['operation_id'] not in t['claimed_ids']: + raise ValueError('reject') + for x in t['claimed_ids']: + text(x, 'claimed id') + rops = [x['operation_id'] for x in s['retained']] + tops = [x['operation_id'] for x in s['tombstones']] + if len(rops) != len(set(rops)) or len(tops) != len(set(tops)) or set(rops) & set(tops) or (now is not None and any((t['retired_at'] > now for t in s['tombstones']))): + raise ValueError('reject') + return (dims, plans, worlds) + +def validate_authority(a): + exact(a, set(AUTH_CONTEXT) | {'handoff', 'verdict'}, 'authority') + exact(a['handoff'], set(AUTH_CONTEXT), 'handoff') + for k in AUTH_CONTEXT: + uint(a[k], k) if k == 'generation' else text(a[k], k) + for k in AUTH_CONTEXT: + uint(a['handoff'][k], k) if k == 'generation' else text(a['handoff'][k], k) + if a['verdict'] not in ('ALLOW', 'DENY'): + raise ValueError('reject') + +def validate_event(e): + if not isinstance(e, dict) or e.get('operation') not in OP_FIELDS or set(e) != BASE_EVENT | OP_FIELDS[e['operation']] or FORBIDDEN_INPUT_KEYS & set(e): + raise ValueError('reject') + for k in BASE_EVENT - {'amount'}: + text(e[k], k) + uint(e['amount'], 'amount') + op = e['operation'] + if op == 'COMPOUND': + if not isinstance(e['children'], list) or not e['children']: + raise ValueError('reject') + for x in e['children']: + exact(x, {'authority', 'event'}, 'child') + validate_authority(x['authority']) + validate_event(x['event']) + ids = [e['operation_id']] + [x['event']['operation_id'] for x in e['children']] + if len(ids) != len(set(ids)): + raise ValueError('reject') + elif op == 'RELEASE' and e['release_from'] not in ('RESERVED', 'CURRENT'): + raise ValueError('reject') + else: + for k in OP_FIELDS[op]: + if k in ('refundable', 'cache_fresh') and (not isinstance(e[k], bool)): + raise ValueError('reject') + elif k in ('epoch', 'expires_at'): + uint(e[k], k) + elif k not in ('prior_fact_id',) and k not in ('refundable', 'cache_fresh'): + text(e[k], k) + if 'prior_fact_id' in e and e['prior_fact_id'] is not None: + text(e['prior_fact_id'], 'prior') + +def event_binding(e): + return vsha(e) + +def claimed_ids(e): + ids = {e['operation_id']} + op = e['operation'] + if op.startswith('PROVIDER_'): + ids.add(e['provider_fact_id']) + if op == 'SHARE_ALLOCATE': + ids.add(e['child_id']) + if op == 'LEASE_GRANT': + ids.add(e['operation_id']) + if op == 'COMPOUND': + for child in e['children']: + if child['event']['operation'] == 'COMPOUND': + raise ValueError('reject') + ids.update(claimed_ids(child['event'])) + return sorted(ids) + +def validate_trace_namespaces(inputs): + """Exact outer replay is resolved before claims are treated as new.""" + owners = {} + attempts = {} + + def initial_claim(x): + text(x, 'initial claim') + if x in owners: + raise ValueError('reject') + owners[x] = 'INITIAL' + for f in inputs['initial_state']['provider_facts']: + initial_claim(f['operation_id']) + initial_claim(f['fact_id']) + for d in inputs['initial_state']['dimensions']: + if d['kind'] == 'SHARE': + for x in d['state']['children'] + d['state']['revoked_history']: + initial_claim(x['child_id']) + if d['kind'] == 'LEASE': + for x in d['state']['active'] + d['state']['history']: + initial_claim(x['lease_id']) + for ph in inputs['phases']: + if ph == {'kind': 'RELOAD'}: + continue + e = ph['event'] + oid = e['operation_id'] + binding = event_binding(e) + claims = claimed_ids(e) + old = attempts.get(oid) + if old is not None: + if old != (binding, claims): + raise ValueError('reject') + continue + if any((x in owners for x in claims)): + raise ValueError('reject') + attempts[oid] = (binding, claims) + for x in claims: + owners[x] = oid + +def conservation(state): + for d in state['dimensions']: + s = d['state'] + if d['kind'] == 'CONSUMABLE' and (s['free'] + s['reserved'] + s['consumed'] + s['expired'] + s['unknown_disputed'] != s['issued'] or s['refundable'] + s['nonrefundable'] != s['consumed']): + return False + if d['kind'] == 'PEAK' and (s['current'] + s['reserved'] > s['cap'] or s['high_water'] < s['current']): + return False + if d['kind'] == 'RATE' and (s['available'] > s['cap'] or s['reserved'] > s['available']): + return False + if d['kind'] == 'LEASE' and (len(s['active']) > s['capacity'] or any((x['end'] not in ('EXPIRED', 'REVOKED') for x in s['history']))): + return False + if d['kind'] == 'SHARE' and (sum((x['allocated'] for x in s['children'])) + sum((x['used'] for x in s['revoked_history'])) > s['capacity'] or any((x['reserved'] + x['used'] > x['allocated'] for x in s['children']))): + return False + return True + +def apply_pairs(inputs, obs): + return list(zip((x for x in inputs['phases'] if x.get('kind') == 'APPLY'), (x for x in obs.get('phases', []) if x.get('kind') == 'APPLY'))) + +def authority_relation(a, e): + return a['verdict'] == 'ALLOW' and a['right'] == 'USE_BUDGET' and all((a[k] == a['handoff'][k] for k in AUTH_CONTEXT)) and ((a['actor_id'], a['commitment_id'], a['world_id']) == (e['actor_id'], e['commitment_id'], e['world_id'])) + +def law_typed(inputs, obs): + try: + owners = {} + attempts = {} + worlds = inputs['initial_state']['worlds'] + if any((not isinstance(w, dict) or set(w) != {'world_id'} or (not isinstance(w['world_id'], str)) or (not w['world_id']) for w in worlds)) or len({w['world_id'] for w in worlds}) != len(worlds): + return False + for d in inputs['initial_state']['dimensions']: + if d['unit_id'] not in UNIT_COMPAT or d['kind'] not in UNIT_COMPAT[d['unit_id']]: + return False + for x in d['state']['children'] + d['state']['revoked_history'] if d['kind'] == 'SHARE' else d['state']['active'] + d['state']['history'] if d['kind'] == 'LEASE' else []: + identity = x['child_id'] if d['kind'] == 'SHARE' else x['lease_id'] + if identity in owners: + return False + owners[identity] = 'INITIAL' + for f in inputs['initial_state']['provider_facts']: + for identity in (f['operation_id'], f['fact_id']): + if identity in owners: + return False + owners[identity] = 'INITIAL' + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + oid = e['operation_id'] + attempt = (vsha(e), claimed_ids(e)) + old = attempts.get(oid) + if old is not None: + if old != attempt or row['status'] not in ('REPLAY', 'RECONCILE_EXPIRED'): + return False + continue + attempts[oid] = attempt + if any((x in owners for x in attempt[1])) and row['status'] != 'DENY_ADMISSION': + return False + for x in attempt[1]: + owners.setdefault(x, oid) + events = [e] + ([x['event'] for x in e.get('children', [])] if e['operation'] == 'COMPOUND' else []) + ds = {x['dimension_id']: x for x in row['before']['dimensions']} + ps = {x['plan_id']: x for x in row['before']['resource_binding_plans']} + for z in events: + d = ds.get(z['dimension_id']) + p = ps.get(z['plan_id']) + if d is None or p is None or z['world_id'] not in {w['world_id'] for w in worlds} or ((p['dimension_id'], p['world_id'], p['owner_id'], p['resource_id'], p['commitment_id']) != (z['dimension_id'], z['world_id'], z['owner_id'], z['resource_id'], z['commitment_id'])): + return False + return obs['input_sha256'] == vsha(inputs) and law_hierarchy(inputs, obs) + except ValueError: + return False + +def law_authority(inputs, obs): + try: + fresh = {k: set() for k in ('grant_ref', 'execution_id', 'activation_id', 'validation_id', 'invocation_nonce', 'freshness_ref')} + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + pairs = [(ph['authority'], e)] + ([(x['authority'], x['event']) for x in e.get('children', [])] if e.get('operation') == 'COMPOUND' else []) + invalid = [not authority_relation(a, z) for a, z in pairs] + if row['status'] in ('REPLAY', 'RECONCILE_EXPIRED'): + continue + if any((any((a[k] in fresh[k] for k in fresh)) for a, _ in pairs)): + return False + for a, _ in pairs: + for k in fresh: + fresh[k].add(a[k]) + if invalid[0] and row['status'] != 'DENY_AUTHORITY': + return False + if e.get('operation') == 'COMPOUND' and any(invalid[1:]): + records = {x['operation_id']: x for x in row['after']['retained']} + for (_, z), bad in zip(pairs[1:], invalid[1:]): + if bad and (z['operation_id'] not in records or records[z['operation_id']]['outcome'] != 'DENY_AUTHORITY'): + return False + return True + except ValueError: + return False + +def law_kind(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + if e.get('operation') not in OP_FIELDS: + return False + if row['status'] in ('REPLAY', 'RECONCILE_EXPIRED', 'DENY_AUTHORITY', 'DENY_ADMISSION', 'UNSUPPORTED', 'BEFORE_COMMIT'): + continue + if e['operation'] == 'COMPOUND': + continue + before = {d['dimension_id']: d for d in row['before']['dimensions']} + after = {d['dimension_id']: d for d in row['after']['dimensions']} + d = before.get(e['dimension_id']) + if d is None: + continue + b = d['state'] + a = after[e['dimension_id']]['state'] + n = e['amount'] + op = e['operation'] + k = d['kind'] + if k == 'CONSUMABLE' and op in ('RESERVE', 'ESCROW') and (not (a['free'] == b['free'] - n and a['reserved'] == b['reserved'] + n)): + return False + if k == 'CONSUMABLE' and op == 'ACQUIRE' and (not (a['consumed'] == b['consumed'] + n and a['reserved'] == b['reserved'] - min(n, b['reserved']))): + return False + if k == 'PEAK' and op == 'RESERVE' and (a['reserved'] != b['reserved'] + n): + return False + if k == 'PEAK' and op == 'ACQUIRE' and (not (a['reserved'] == b['reserved'] - n and a['current'] == b['current'] + n)): + return False + if k == 'RATE' and op == 'RESERVE' and (a['reserved'] != b['reserved'] + n): + return False + if k == 'RATE' and op == 'ACQUIRE' and (a['available'] != b['available'] - n): + return False + if k == 'LEASE' and op == 'LEASE_GRANT' and (not any((x['lease_id'] == e['operation_id'] and x['epoch'] == 1 for x in a['active']))): + return False + if k == 'SHARE' and op == 'SHARE_ALLOCATE' and (not any((x['child_id'] == e['child_id'] and x['allocated'] == n for x in a['children']))): + return False + return all((conservation(x['after']) for x in obs['phases'])) and conservation(obs['final_state']) + except ValueError: + return False + +def law_hierarchy(inputs, obs): + try: + for row in obs['phases']: + worlds = row['after']['worlds'] + if any((not isinstance(w, dict) or set(w) != {'world_id'} or (not isinstance(w['world_id'], str)) or (not w['world_id']) for w in worlds)) or len({w['world_id'] for w in worlds}) != len(worlds): + return False + ds = {d['dimension_id']: d for d in row['after']['dimensions']} + for d in ds.values(): + seen = set() + p = d['parent_budget_id'] + if p is not None: + parent = ds.get(p) + if parent is None: + return False + rel = (d['kind'], d['unit_id'], parent['kind'], parent['unit_id']) + cap = law_capacity + if d['owner_id'] != parent['owner_id'] or ((d['kind'], d['unit_id']) != (parent['kind'], parent['unit_id']) and rel not in PARENT_COMPAT) or law_capacity(d) > law_capacity(parent): + return False + while p is not None: + if p not in ds or p in seen: + return False + seen.add(p) + p = ds[p]['parent_budget_id'] + for parent in ds.values(): + children = [d for d in ds.values() if d['parent_budget_id'] == parent['dimension_id']] + cap = law_capacity + if sum((law_capacity(d) for d in children)) > law_capacity(parent): + return False + return True + except ValueError: + return False + +def law_reservation(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + op = e.get('operation') + if op not in OP_FIELDS: + return False + if op in ('RESERVE', 'ESCROW') and row['status'] == 'APPLIED': + b = next((d for d in row['before']['dimensions'] if d['dimension_id'] == e['dimension_id']))['state'] + a = next((d for d in row['after']['dimensions'] if d['dimension_id'] == e['dimension_id']))['state'] + if a['reserved'] - b['reserved'] != e['amount']: + return False + if row['status'] in ('DENY_AUTHORITY', 'UNSUPPORTED', 'BEFORE_COMMIT') or (row['status'] == 'DENY_ADMISSION' and op not in ('LEASE_USE', 'LEASE_RENEW', 'LEASE_REVOKE')): + bd = clone(row['before']) + ad = clone(row['after']) + bd['retained'] = ad['retained'] = [] + if bd['dimensions'] != ad['dimensions']: + return False + return True + except ValueError: + return False + +def law_cancel(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + if ph['event'].get('operation') not in OP_FIELDS: + return False + if ph['event']['operation'] in ('FAIL', 'LATE_RESULT', 'WORLD_DISCARD', 'DEPENDENCY_ROLLBACK', 'CANCEL_REQUEST'): + for b, a in zip(row['before']['dimensions'], row['after']['dimensions']): + for key in ('consumed', 'reserved', 'free', 'current', 'available'): + if key in b['state'] and b['state'][key] != a['state'][key]: + return False + return True + except ValueError: + return False + +def law_provider(inputs, obs): + try: + facts = {x['fact_id']: x for x in inputs['initial_state']['provider_facts']} + successors = {x['prior_fact_id'] for x in facts.values() if x['prior_fact_id'] is not None} + ops = {x['operation_id'] for x in facts.values()} + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + if not e['operation'].startswith('PROVIDER_'): + continue + stage = e['operation'][9:] + prior = e['prior_fact_id'] + old = facts.get(prior) + legal = stage == 'ESTIMATE' and prior is None + if old is not None and old['provider_account_id'] == e['provider_account_id']: + legal |= old['stage'] == 'ESTIMATE' and stage in ('OBSERVED', 'UNKNOWN') + legal |= old['stage'] == 'UNKNOWN' and stage == 'OBSERVED' and (e['amount'] <= old['amount']) + legal |= old['stage'] == 'OBSERVED' and stage == 'SETTLED' and (e['amount'] == old['amount']) + legal |= old['stage'] in ('SETTLED', 'CREDIT') and stage == 'CREDIT' + legal = legal and e['provider_fact_id'] not in facts and (e['operation_id'] not in ops) and (prior not in successors) + if legal and stage == 'CREDIT': + x = old + credits = e['amount'] + while x is not None and x['stage'] == 'CREDIT': + credits += x['amount'] + x = facts.get(x['prior_fact_id']) + legal = x is not None and x['stage'] == 'SETTLED' and (credits <= x['amount']) + applied = row['status'] in ('APPLIED', 'UNKNOWN_RECONCILE') + if applied != legal: + return False + if applied: + f = {'amount': e['amount'], 'fact_id': e['provider_fact_id'], 'operation_id': e['operation_id'], 'prior_fact_id': prior, 'provider_account_id': e['provider_account_id'], 'stage': stage} + facts[f['fact_id']] = f + ops.add(f['operation_id']) + if prior is not None: + successors.add(prior) + if row['after']['provider_facts'] != list(facts.values()): + return False + return True + except ValueError: + return False + +def law_compound(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + if ph['event']['operation'] == 'COMPOUND': + if row['status'] in ('REPLAY', 'RECONCILE_EXPIRED'): + continue + e = ph['event'] + if any((x['event']['operation'] == 'COMPOUND' for x in e['children'])): + return False + ids = [e['operation_id']] + [x['event']['operation_id'] for x in e['children']] + records = {x['operation_id']: x for x in row['after']['retained'] if x['operation_id'] in ids} + if len(records) != len(ids) or any((records[x['event']['operation_id']]['causal_operation_id'] != e['operation_id'] for x in e['children'])): + return False + expected = [] + for child in e['children']: + ce = child['event'] + ca = child['authority'] + if not authority_relation(ca, ce): + expected.append('DENY_AUTHORITY') + elif ce.get('operation') not in OP_FIELDS or ce['operation'] in UNSUPPORTED_OPS: + expected.append('UNSUPPORTED') + else: + expected.append(records[ce['operation_id']]['outcome']) + if records[ce['operation_id']]['claimed_ids'] != claimed_ids(e): + return False + child_outcomes = [records[x['event']['operation_id']]['outcome'] for x in e['children']] + if child_outcomes != expected: + return False + outer = 'APPLIED' if all((x == 'APPLIED' for x in child_outcomes)) else 'DENY_ADMISSION' + if row['status'] != outer or records[e['operation_id']]['outcome'] != outer or records[e['operation_id']]['claimed_ids'] != claimed_ids(e): + return False + if outer != 'APPLIED': + b = clone(row['before']) + a = clone(row['after']) + b['retained'] = a['retained'] = [] + if b != a: + return False + return True + except ValueError: + return False + +def law_recovery(inputs, obs): + try: + if inputs['initial_state']['retained'] or inputs['initial_state']['tombstones']: + return False + seen = {} + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + prior = seen.get(e['operation_id']) + if prior and prior != vsha(e) and (row['status'] != 'DENY_ADMISSION'): + return False + seen.setdefault(e['operation_id'], vsha(e)) + new = [x for x in row['after']['retained'] if x not in row['before']['retained']] + for x in new: + target = e if x['operation_id'] == e['operation_id'] else next((c['event'] for c in e.get('children', []) if c['event']['operation_id'] == x['operation_id']), None) + if target is None or x['binding_sha256'] != vsha(target) or x['attempted_at'] != ph['logical_now'] or (x['expires_at'] != ph['logical_now'] + 20) or (x['claimed_ids'] != claimed_ids(e)): + return False + causal = e['operation_id'] + expected = row['status'] if target is e else 'DENY_AUTHORITY' if not authority_relation(next((c['authority'] for c in e['children'] if c['event'] is target)), target) else x['outcome'] + if x['causal_operation_id'] != causal or x['outcome'] != expected: + return False + for x in row['after']['retained']: + if x['attempted_at'] > x['expires_at'] or x['outcome'] not in STATUSES + ('BEFORE_COMMIT',): + return False + for x in row['after']['tombstones']: + old = next((z for z in row['before']['retained'] if z['operation_id'] == x['operation_id']), None) + if x['retired_at'] > ph['logical_now'] or (x not in row['before']['tombstones'] and (old is None or x['binding_sha256'] != old['binding_sha256'] or x['outcome'] != old['outcome'] or (x['causal_operation_id'] != e['operation_id']) or (x['retired_at'] != ph['logical_now']))): + return False + return True + except ValueError: + return False + +def law_attribution(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + pairs = [(ph['authority'], ph['event'])] + ([(x['authority'], x['event']) for x in ph['event'].get('children', [])] if ph['event'].get('operation') == 'COMPOUND' else []) + plans = {p['plan_id']: p for p in row['before']['resource_binding_plans']} + dims = {d['dimension_id']: d for d in row['before']['dimensions']} + worlds = {w['world_id'] for w in row['before']['worlds']} + after_dims = {d['dimension_id'] for d in row['after']['dimensions']} + after_worlds = {w['world_id'] for w in row['after']['worlds']} + if any((p['dimension_id'] not in after_dims or p['world_id'] not in after_worlds for p in row['after']['resource_binding_plans'])): + return False + for a, e in pairs: + p = plans.get(e['plan_id']) + d = dims.get(e['dimension_id']) + actor_ok = e['actor_id'] == a['actor_id'] == a['handoff']['actor_id'] + actor_denied = any((r['operation_id'] == e['operation_id'] and r['outcome'] == 'DENY_AUTHORITY' and (r['binding_sha256'] == vsha(e)) for r in row['after']['retained'])) + if p is None or d is None or e['world_id'] not in worlds or (not actor_ok and (not actor_denied)) or ((p['dimension_id'], p['world_id'], p['owner_id'], p['resource_id'], p['commitment_id']) != (e['dimension_id'], e['world_id'], e['owner_id'], e['resource_id'], e['commitment_id'])): + return False + return True + except ValueError: + return False + +def law_separation(inputs, obs): + try: + for ph, row in apply_pairs(inputs, obs): + e = ph['event'] + if e.get('operation') not in OP_FIELDS: + return False + if e['operation'] in UNSUPPORTED_OPS and row['status'] != 'UNSUPPORTED': + return False + return True + except ValueError: + return False + +def law_canonical(inputs, obs): + try: + return canonical(parse_bytes(canonical(obs))) == canonical(obs) and obs['input_sha256'] == vsha(inputs) + except ValueError: + return False + +def authority_current(a, e): + return a['verdict'] == 'ALLOW' and a['right'] == 'USE_BUDGET' and all((a[k] == a['handoff'][k] for k in AUTH_CONTEXT)) and ((a['actor_id'], a['commitment_id'], a['world_id']) == (e['actor_id'], e['commitment_id'], e['world_id'])) + +def event_join(state, e): + dims, plans, worlds = validate_state(state) + p = plans.get(e['plan_id']) + d = dims.get(e['dimension_id']) + return d is not None and e['world_id'] in worlds and (p is not None) and ((p['dimension_id'], p['world_id'], p['resource_id'], p['owner_id'], p['commitment_id']) == (e['dimension_id'], e['world_id'], e['resource_id'], e['owner_id'], e['commitment_id'])) and (e['owner_id'] == d['owner_id']) + +def retain(state, e, status, now, causal=None, claims=None): + state['retained'].append({'attempted_at': now, 'binding_sha256': event_binding(e), 'causal_operation_id': causal or e['operation_id'], 'claimed_ids': claims or claimed_ids(e), 'expires_at': now + 20, 'operation_id': e['operation_id'], 'outcome': status}) + +def lease_expire(s, now): + for x in list(s['active']): + if now >= x['expires_at']: + s['active'].remove(x) + s['expired'].append(x['lease_id']) + s['history'].append({**x, 'end': 'EXPIRED'}) + +def provider_apply(state, e): + stage = e['operation'].removeprefix('PROVIDER_') + account = e['provider_account_id'] + prior = e['prior_fact_id'] + facts = {x['fact_id']: x for x in state['provider_facts']} + old = facts.get(prior) if prior is not None else None + successors = {x['prior_fact_id'] for x in state['provider_facts'] if x['prior_fact_id'] is not None} + if e['provider_fact_id'] in facts or any((x['operation_id'] == e['operation_id'] for x in state['provider_facts'])) or prior in successors: + return 'DENY_ADMISSION' + legal = stage == 'ESTIMATE' and prior is None + if old is not None and old['provider_account_id'] == account: + legal |= old['stage'] == 'ESTIMATE' and stage in ('OBSERVED', 'UNKNOWN') + legal |= old['stage'] == 'UNKNOWN' and stage == 'OBSERVED' and (e['amount'] <= old['amount']) + legal |= old['stage'] == 'OBSERVED' and stage == 'SETTLED' and (e['amount'] == old['amount']) + legal |= old['stage'] in ('SETTLED', 'CREDIT') and stage == 'CREDIT' + if not legal: + return 'DENY_ADMISSION' + if stage == 'CREDIT': + x = old + credits = e['amount'] + while x and x['stage'] == 'CREDIT': + credits += x['amount'] + x = facts.get(x['prior_fact_id']) + if x is None or x['stage'] != 'SETTLED' or credits > x['amount']: + return 'DENY_ADMISSION' + state['provider_facts'].append({'amount': e['amount'], 'fact_id': e['provider_fact_id'], 'operation_id': e['operation_id'], 'prior_fact_id': prior, 'provider_account_id': account, 'stage': stage}) + return 'UNKNOWN_RECONCILE' if stage == 'UNKNOWN' else 'APPLIED' + +def apply_leaf(state, e, now): + state = clone(state) + d = next((x for x in state['dimensions'] if x['dimension_id'] == e['dimension_id']), None) + op = e['operation'] + a = e['amount'] + if op in UNSUPPORTED_OPS: + return ('UNSUPPORTED', state) + if op == 'TOMB': + r = next((x for x in state['retained'] if x['operation_id'] == e.get('target_operation_id')), None) + if r is None: + return ('DENY_ADMISSION', state) + state['retained'].remove(r) + state['tombstones'].append({'binding_sha256': r['binding_sha256'], 'causal_operation_id': e['operation_id'], 'claimed_ids': r['claimed_ids'], 'operation_id': r['operation_id'], 'outcome': r['outcome'], 'retired_at': now}) + retain(state, e, 'APPLIED', now) + return ('APPLIED', state) + if op.startswith('PROVIDER_'): + status = provider_apply(state, e) + if status in ('APPLIED', 'UNKNOWN_RECONCILE'): + retain(state, e, status, now) + return (status, state) + if op in ('CACHE_REUSE', 'FAIL', 'DEPENDENCY_ROLLBACK', 'LATE_RESULT', 'WORLD_DISCARD', 'CANCEL_REQUEST'): + retain(state, e, 'APPLIED', now) + return ('APPLIED', state) + if d is None: + return ('UNSUPPORTED', state) + s = d['state'] + if d['kind'] == 'CONSUMABLE': + if op in ('RESERVE', 'ESCROW'): + if s['free'] < a: + return ('DENY_ADMISSION', state) + s['free'] -= a + s['reserved'] += a + elif op == 'ACQUIRE': + extra = max(0, a - s['reserved']) + if s['free'] < extra: + return ('DENY_ADMISSION', state) + s['reserved'] -= min(a, s['reserved']) + s['free'] -= extra + s['consumed'] += a + s['refundable' if e.get('refundable', False) else 'nonrefundable'] += a + elif op in ('RELEASE', 'CANCEL_EFFECTIVE'): + if s['reserved'] < a: + return ('DENY_ADMISSION', state) + s['reserved'] -= a + s['free'] += a + elif op == 'REFUND': + if s['refundable'] < a: + return ('DENY_ADMISSION', state) + s['refundable'] -= a + s['consumed'] -= a + s['free'] += a + else: + return ('UNSUPPORTED', state) + elif d['kind'] == 'PEAK': + if op == 'RESERVE': + if s['current'] + s['reserved'] + a > s['cap']: + return ('DENY_ADMISSION', state) + s['reserved'] += a + elif op == 'ACQUIRE': + if s['reserved'] < a: + return ('DENY_ADMISSION', state) + s['reserved'] -= a + s['current'] += a + s['high_water'] = max(s['high_water'], s['current']) + elif op == 'RELEASE': + bucket = e.get('release_from', 'CURRENT') + key = 'reserved' if bucket == 'RESERVED' else 'current' + if s[key] < a: + return ('DENY_ADMISSION', state) + s[key] -= a + else: + return ('UNSUPPORTED', state) + elif d['kind'] == 'RATE': + if now < s['last_refill_at']: + return ('DENY_ADMISSION', state) + if op == 'REFILL': + windows = (now - s['last_refill_at']) // s['window'] + if windows: + s['available'] = min(s['cap'], s['available'] + windows * s['refill']) + s['last_refill_at'] += windows * s['window'] + elif op == 'RESERVE': + if s['available'] - s['reserved'] < a: + return ('DENY_ADMISSION', state) + s['reserved'] += a + elif op == 'ACQUIRE': + if s['reserved'] >= a: + s['reserved'] -= a + s['available'] -= a + elif s['available'] - s['reserved'] >= a: + s['available'] -= a + else: + return ('DENY_ADMISSION', state) + elif op == 'RELEASE': + if s['reserved'] < a: + return ('DENY_ADMISSION', state) + s['reserved'] -= a + else: + return ('UNSUPPORTED', state) + elif d['kind'] == 'LEASE': + lease_expire(s, now) + if op == 'LEASE_GRANT': + if e['epoch'] != 1 or e['expires_at'] <= now or len(s['active']) >= s['capacity'] or any((e['operation_id'] == x['lease_id'] for x in s['active'] + s['history'])): + return ('DENY_ADMISSION', state) + s['active'].append({'epoch': 1, 'expires_at': e['expires_at'], 'lease_id': e['operation_id'], 'uses': 0}) + else: + lease = next((x for x in s['active'] if x['lease_id'] == e.get('lease_id')), None) + if lease is None: + return ('DENY_ADMISSION', state) + if op == 'LEASE_USE': + if e['epoch'] != lease['epoch']: + return ('DENY_ADMISSION', state) + lease['uses'] += 1 + elif op == 'LEASE_REVOKE': + s['active'].remove(lease) + s['history'].append({**lease, 'end': 'REVOKED'}) + elif op == 'LEASE_RENEW': + if e['epoch'] != lease['epoch'] + 1 or e['expires_at'] <= max(now, lease['expires_at']): + return ('DENY_ADMISSION', state) + lease['epoch'] = e['epoch'] + lease['expires_at'] = e['expires_at'] + else: + return ('UNSUPPORTED', state) + else: + child = next((x for x in s['children'] if x['child_id'] == e.get('child_id')), None) + historical = sum((x['used'] for x in s['revoked_history'])) + if op == 'SHARE_ALLOCATE': + if any((e['child_id'] == x['child_id'] for x in s['children'] + s['revoked_history'])) or sum((x['allocated'] for x in s['children'])) + historical + a > s['capacity']: + return ('DENY_ADMISSION', state) + s['children'].append({'allocated': a, 'child_id': e['child_id'], 'reserved': 0, 'used': 0}) + elif child is None: + return ('DENY_ADMISSION', state) + elif op == 'SHARE_RESERVE': + if child['used'] + child['reserved'] + a > child['allocated']: + return ('DENY_ADMISSION', state) + child['reserved'] += a + elif op == 'SHARE_ACQUIRE': + if child['reserved'] < a: + return ('DENY_ADMISSION', state) + child['reserved'] -= a + child['used'] += a + elif op == 'SHARE_REVOKE': + s['children'].remove(child) + s['revoked_history'].append({'allocated': child['allocated'], 'child_id': child['child_id'], 'reserved': child['reserved'], 'used': child['used']}) + else: + return ('UNSUPPORTED', state) + retain(state, e, 'APPLIED', now) + return ('APPLIED', state) + +def classify_event(state, phase): + a = phase['authority'] + e = phase['event'] + now = phase['logical_now'] + old = next((x for x in state['retained'] + state['tombstones'] if x['operation_id'] == e['operation_id']), None) + if old: + return (('REPLAY' if old in state['retained'] and now < old['expires_at'] else 'RECONCILE_EXPIRED') if old['binding_sha256'] == event_binding(e) and old['claimed_ids'] == claimed_ids(e) else 'DENY_ADMISSION', state) + if not authority_current(a, e): + return ('DENY_AUTHORITY', state) + if not event_join(state, e): + return ('DENY_ADMISSION', state) + if e['operation'] == 'COMPOUND': + ids = [e['operation_id']] + [x['event']['operation_id'] for x in e['children']] + inventory = {x['operation_id'] for x in state['retained'] + state['tombstones']} + if len(ids) != len(set(ids)) or inventory & set(ids): + return ('DENY_ADMISSION', state) + trial = clone(state) + outcomes = [] + for child in e['children']: + ce = child['event'] + if not authority_current(child['authority'], ce): + child_status = 'DENY_AUTHORITY' + elif not event_join(trial, ce): + child_status = 'DENY_ADMISSION' + else: + child_status, trial2 = apply_leaf(trial, ce, now) + trial = trial2 if child_status == 'APPLIED' else trial + outcomes.append(child_status) + status = 'APPLIED' if all((x == 'APPLIED' for x in outcomes)) else 'DENY_ADMISSION' + out = trial if status == 'APPLIED' else clone(state) + child_ids = {x['event']['operation_id'] for x in e['children']} + out['retained'] = [x for x in out['retained'] if x['operation_id'] not in child_ids] + claims = claimed_ids(e) + for child, child_status in zip(e['children'], outcomes): + retain(out, child['event'], child_status, now, e['operation_id'], claims) + retain(out, e, status, now, claims=claims) + return (status, out) + return apply_leaf(state, e, now) + +def derive(inputs): + exact(inputs, {'initial_state', 'phases'}, 'inputs') + validate_state(inputs['initial_state'], 0, initial=True) + validate_trace_namespaces(inputs) + state = clone(inputs['initial_state']) + rows = [] + last_now = 0 + fresh = {k: set() for k in ('grant_ref', 'execution_id', 'activation_id', 'validation_id', 'invocation_nonce', 'freshness_ref')} + if not isinstance(inputs['phases'], list) or not inputs['phases']: + raise ValueError('reject') + for ph in inputs['phases']: + before = clone(state) + if ph == {'kind': 'RELOAD'}: + state = parse_bytes(canonical(state)) + rows.append({'after': clone(state), 'before': before, 'delta_applied': False, 'kind': 'RELOAD', 'response_visible': True, 'status': None}) + continue + exact(ph, {'authority', 'event', 'fault', 'kind', 'logical_now'}, 'phase') + validate_authority(ph['authority']) + validate_event(ph['event']) + uint(ph['logical_now'], 'now') + if ph['logical_now'] < last_now: + raise ValueError('reject') + last_now = ph['logical_now'] + if ph['kind'] != 'APPLY' or ph['fault'] not in ('NONE', 'BEFORE_COMMIT', 'AFTER_COMMIT_BEFORE_RESPONSE'): + raise ValueError('reject') + existing = next((x for x in state['retained'] + state['tombstones'] if x['operation_id'] == ph['event']['operation_id']), None) + if existing is None: + authorities = [ph['authority']] + ([x['authority'] for x in ph['event'].get('children', [])] if ph['event']['operation'] == 'COMPOUND' else []) + for a in authorities: + for k in fresh: + if a[k] in fresh[k]: + raise ValueError('reject') + fresh[k].add(a[k]) + status, after = classify_event(state, ph) + first = not any((x['operation_id'] == ph['event']['operation_id'] for x in before['retained'] + before['tombstones'])) + if ph['fault'] == 'BEFORE_COMMIT' and first and (status != 'DENY_AUTHORITY'): + after = clone(before) + retain(after, ph['event'], 'BEFORE_COMMIT', ph['logical_now']) + status = 'BEFORE_COMMIT' + elif first and ph['event']['operation'] != 'COMPOUND' and (not any((x['operation_id'] == ph['event']['operation_id'] for x in after['retained']))): + retain(after, ph['event'], status, ph['logical_now']) + visible = ph['fault'] not in ('BEFORE_COMMIT', 'AFTER_COMMIT_BEFORE_RESPONSE') or status == 'DENY_AUTHORITY' + validate_state(after, ph['logical_now']) + state = after + rows.append({'after': clone(state), 'before': before, 'delta_applied': after != before, 'kind': 'APPLY', 'response_visible': visible, 'status': status}) + return {'final_state': state, 'input_sha256': vsha(inputs), 'phases': rows} + +def law_whole(inputs, obs): + try: + return obs == derive(clone(inputs)) + except ValueError: + return False + +def law_results(inputs, obs): + return {'WHOLE_OBSERVATION_CLOSURE': law_whole(inputs, obs), 'TYPED_IDENTITY_SCOPE': law_typed(inputs, obs), 'D003_AUTHORITY_FIRST': law_authority(inputs, obs), 'PER_KIND_CONSERVATION': law_kind(inputs, obs), 'PARENT_SIBLING_CONSERVATION': law_hierarchy(inputs, obs), 'RESERVATION_ACQUISITION': law_reservation(inputs, obs), 'CANCELLATION_REFUND': law_cancel(inputs, obs), 'PROVIDER_RECONCILIATION': law_provider(inputs, obs), 'COMPOUND_ATOMICITY': law_compound(inputs, obs), 'RECOVERY_REPLAY': law_recovery(inputs, obs), 'ATTRIBUTION_MODEL_INDEPENDENCE': law_attribution(inputs, obs), 'EFFECT_PROMOTION_SEPARATION': law_separation(inputs, obs), 'CANONICAL_DETERMINISM': law_canonical(inputs, obs)} + +def produce(packet_bytes, manifest_bytes, identity_bytes): + manifest = parse_bytes(manifest_bytes) + rows = [] + for case in manifest['cases']: + inputs = case['inputs'] + assertion = {'case_id': case['id']} + try: + observation = derive(inputs) + laws = law_results(inputs, observation) + if not all(laws.values()): + raise ValueError('reject') + assertion.update({'classification': 'ACCEPTED_LAWS_PASS', 'laws': laws, 'pass': True}) + cell = {'case_id': case['id'], 'input_sha256': vsha(inputs), 'observation': observation} + except ValueError: + assertion.update({'classification': 'STRUCTURAL_REJECT_PASS', 'laws': None, 'pass': True}) + cell = {'case_id': case['id'], 'input_sha256': vsha(inputs), 'rejection': 'PRIMARY_AND_ORACLE_REJECT'} + rows.append((cell, assertion)) + body = {'assertions': [x[1] for x in rows], 'cells': [x[0] for x in rows], 'manifest_sha256': sha(manifest_bytes)} + identity = {'byte_length': len(identity_bytes), 'kind': 'PRODUCER_IDENTITY', 'sha256': sha(identity_bytes)} + return canonical({'identity': identity, 'provenance_qualified': True, 'schema': 'D008-O-3', 'semantic_body': body}) -- 2.54.0