@curless/agentbank-merchant-mcp 0.0.17 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  // GENERATED by apps/api/mcp-ui (`npm run build`). Do not edit by hand.
2
2
  // Same merchant-kit MCP App card, embedded into the standalone merchant stdio
3
3
  // MCP so it serves the identical widget. Regenerate after changing the card UI.
4
- export const MERCHANT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgU0RLIGluamVjdHMgdGhlbSkgc28gdGhlCiAgICAgICAgIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsIG1hdGNoLgogICAgICAgICBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y2ZjhmYSk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMWExZjM2KTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjk3Mzg2KTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjODc5MmEyKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZTNlOGVlKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzFhN2Y1YSk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNkZGYzZTQpOwogICAgICAgIC0td2FybjogdmFyKC0tY29sb3ItdGV4dC13YXJuaW5nLCAjOWE2NzAwKTsKICAgICAgICAtLXdhcm4tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtd2FybmluZywgI2ZkZjNkOCk7CiAgICAgICAgLS1iYWQ6IHZhcigtLWNvbG9yLXRleHQtZGFuZ2VyLCAjYjMyNjFlKTsKICAgICAgICAtLWJhZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIsICNmYmU2ZTQpOwogICAgICAgIC0tbmV1dHJhbDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnksICM1YjY0NzIpOwogICAgICAgIC0tbmV1dHJhbC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnksICNlZWYxZjQpOwogICAgICAgIC0tcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnLCAxNHB4KTsKICAgICAgICAtLXJhZGl1cy1zbTogdmFyKC0tYm9yZGVyLXJhZGl1cy1zbSwgOHB4KTsKICAgICAgICAtLWZvbnQ6IHZhcigtLWZvbnQtc2Fucywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWYpOwogICAgICAgIC0tbW9ubzogdmFyKC0tZm9udC1tb25vLCB1aS1tb25vc3BhY2UsICdTRiBNb25vJywgTWVubG8sIG1vbm9zcGFjZSk7CiAgICAgIH0KICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICBib2R5IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgIH0KICAgICAgLmNhcmQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmcpOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDEwLCAyMCwgNDAsIDAuMDQpLCAwIDJweCA1cHggcmdiYSgxMCwgMjAsIDQwLCAwLjA0KTsKICAgICAgICBtYXgtd2lkdGg6IDU2MHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgICAgLmhlYWQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDlweDsKICAgICAgICBwYWRkaW5nOiAxNHB4IDIwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5oZWFkIC5sb2dvIHsKICAgICAgICBoZWlnaHQ6IDE3cHg7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuaGVhZCAubGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CiAgICAgIC5oZWFkIC5tZXJjaGFudCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgIH0KICAgICAgI2NvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDhweCAyMHB4IDE2cHg7CiAgICAgIH0KCiAgICAgIC8qIFN0YXR1cyBiYWRnZSDigJQgYSBjb2xvcmVkIGRvdCArIHRoZSBzdGF0dXMgKi8KICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHBhZGRpbmc6IDNweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmV1dHJhbC1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLW5ldXRyYWwpOwogICAgICB9CiAgICAgIC5iYWRnZSAuZG90IHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBmbGV4OiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsKICAgICAgfQogICAgICAuYmFkZ2UuaXMtcGFpZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29vZC1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWdvb2QpOwogICAgICB9CiAgICAgIC5iYWRnZS5pcy1wZW5kaW5nX3BheW1lbnQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdhcm4tYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS13YXJuKTsKICAgICAgfQogICAgICAuYmFkZ2UuaXMtY2FuY2VsZWQsCiAgICAgIC5iYWRnZS5pcy1kaXNwdXRlZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tYmFkKTsKICAgICAgfQoKICAgICAgLyogQ3VybGVzcyB3YWxsZXQg4oCUIHRva2VuICsgaWRlbnRpdHkgKyBhbW91bnQgcGVyIGN1cnJlbmN5ICovCiAgICAgIC53YWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQogICAgICAud3JvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTNweDsKICAgICAgICBwYWRkaW5nOiAxNHB4IDA7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC53cm93OmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICB9CiAgICAgIC50b2sgewogICAgICAgIHdpZHRoOiAzNnB4OwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBmbGV4OiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXNpemU6IDE3cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLXNvZnQpOwogICAgICB9CiAgICAgIC50b2subG9nbyB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgIH0KICAgICAgLnRvay5sb2dvIHN2ZyB7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC50b2suY29kZSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICB9CiAgICAgIC53cm93IC5jY3kgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07CiAgICAgIH0KICAgICAgLm51bXMgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CiAgICAgIC5udW1zIC5hdiB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWdvb2QpOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KICAgICAgLm51bXMgLmZ6IHsKICAgICAgICBmb250LXNpemU6IDExLjVweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC8qIE9yZGVycyDigJQgYW1vdW50LWZvcndhcmQgcm93cywgc3RhdHVzIGJhZGdlLCBjbGljayDihpIgZGV0YWlsICovCiAgICAgIC5vcmRlcnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQogICAgICAub3JkZXIgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bzsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogM3B4IDEycHg7CiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgIH0KICAgICAgLm9yZGVyOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICB9CiAgICAgIC5vcmRlciAuYW10IHsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICB9CiAgICAgIC5vcmRlciAuYW10IC5jY3kgewogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgICAgfQogICAgICAub3JkZXIgLmJhZGdlIHsKICAgICAgICBncmlkLXJvdzogMTsKICAgICAgICBncmlkLWNvbHVtbjogMjsKICAgICAgICBqdXN0aWZ5LXNlbGY6IGVuZDsKICAgICAgfQogICAgICAub3JkZXIgLmRlc2MgewogICAgICAgIGZvbnQtc2l6ZTogMTIuNXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgfQogICAgICAub3JkZXIgLndoZW4gewogICAgICAgIGdyaWQtY29sdW1uOiAyOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGZvbnQtc2l6ZTogMTEuNXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICB9CgogICAgICAvKiBPcmRlcnMgcGFnZXIg4oCUIHF1aWV0IHByZXYvbmV4dCArIHBhZ2UgaW5kaWNhdG9yICovCiAgICAgIC5wYWdlciB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgbWFyZ2luLXRvcDogMTRweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTJweDsKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgIH0KICAgICAgLnBhZ2VyIGJ1dHRvbiB7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgICAgIHBhZGRpbmc6IDVweCAxMnB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAucGFnZXIgYnV0dG9uOmRpc2FibGVkIHsKICAgICAgICBvcGFjaXR5OiAwLjQ7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwogICAgICB9CiAgICAgIC5wYWdlciAucGFnZWluZm8gewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KCiAgICAgIC8qIENsaWNrYWJsZSBvcmRlciByb3dzIOKGkiBkZXRhaWwgKi8KICAgICAgLm9yZGVyLmNsaWNrYWJsZSB7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgIH0KICAgICAgLm9yZGVyLmNsaWNrYWJsZTpob3ZlciB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7CiAgICAgIH0KCiAgICAgIC8qIE9yZGVyIGRldGFpbCAqLwogICAgICAuZGV0YWlsIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICB9CiAgICAgIC5iYWNrIHsKICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250KTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgICAgICBwYWRkaW5nOiA0cHggMTBweDsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIH0KICAgICAgLyogSGVybzogYmlnIHRvdGFsICsgc3RhdHVzIGJhZGdlICovCiAgICAgIC5vZC1oZXJvIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGdhcDogMTBweDsKICAgICAgfQogICAgICAub2QtdG90YWwgewogICAgICAgIGZvbnQtc2l6ZTogMjdweDsKICAgICAgICBmb250LXdlaWdodDogNjUwOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07CiAgICAgIH0KICAgICAgLm9kLXRvdGFsIC5jY3kgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgICAgfQogICAgICAub2Qtc3ViIHsKICAgICAgICBmb250LXNpemU6IDExLjVweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICAgICAgICBtYXJnaW4tdG9wOiAtOHB4OwogICAgICB9CiAgICAgIC5vZC1zdWIgLm1vbm8gewogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICAgICAgfQogICAgICAvKiBTZWN0aW9uczogYSBxdWlldCBoZWFkZXIgKyBhIHNvZnQtYm9yZGVyZWQgY2FyZCAqLwogICAgICAub2Qtc2VjIHsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgICAgfQogICAgICAub2Qtc2VjLWggewogICAgICAgIGZvbnQtc2l6ZTogMTAuNXB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA2ZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICB9CiAgICAgIC5saSB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvIGF1dG87CiAgICAgICAgZ2FwOiAwIDEycHg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIHBhZGRpbmc6IDdweCAwOwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgfQogICAgICAubGk6Zmlyc3QtY2hpbGQgewogICAgICAgIGJvcmRlci10b3A6IG5vbmU7CiAgICAgICAgcGFkZGluZy10b3A6IDA7CiAgICAgIH0KICAgICAgLmxpLW5hbWUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNTUwOwogICAgICB9CiAgICAgIC5saS1xdHkgewogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgfQogICAgICAubGktYW10IHsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICB9CiAgICAgIC8qIEtleS92YWx1ZSByb3dzIChwYXltZW50LCBidXllciwgZGV0YWlscykgKi8KICAgICAgLmt2IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBiYXNlbGluZTsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgIHBhZGRpbmc6IDVweCAwOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgfQogICAgICAua3YgKyAua3YgewogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgfQogICAgICAua3YgLmsgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgfQogICAgICAua3YgLnYgewogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsOwogICAgICB9CiAgICAgIC5rdiAudiAubW9ubyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgfQogICAgICAuYnJhbmQgewogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7CiAgICAgIH0KICAgICAgLm11dGVkIHsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICB9CiAgICAgIC5tb25vIHsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgIH0KCiAgICAgIC5lbXB0eSB7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgcGFkZGluZzogNnB4IDA7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSIgY3Jvc3NvcmlnaW4+KGZ1bmN0aW9uKCl7Y29uc3Qgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZihuJiZuLnN1cHBvcnRzJiZuLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpcmV0dXJuO2Zvcihjb25zdCBlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl0nKSlvKGUpO25ldyBNdXRhdGlvbk9ic2VydmVyKGU9Pntmb3IoY29uc3QgaSBvZiBlKWlmKGkudHlwZT09PSJjaGlsZExpc3QiKWZvcihjb25zdCBhIG9mIGkuYWRkZWROb2RlcylhLnRhZ05hbWU9PT0iTElOSyImJmEucmVsPT09Im1vZHVsZXByZWxvYWQiJiZvKGEpfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtmdW5jdGlvbiByKGUpe2NvbnN0IGk9e307cmV0dXJuIGUuaW50ZWdyaXR5JiYoaS5pbnRlZ3JpdHk9ZS5pbnRlZ3JpdHkpLGUucmVmZXJyZXJQb2xpY3kmJihpLnJlZmVycmVyUG9saWN5PWUucmVmZXJyZXJQb2xpY3kpLGUuY3Jvc3NPcmlnaW49PT0idXNlLWNyZWRlbnRpYWxzIj9pLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjplLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/aS5jcmVkZW50aWFscz0ib21pdCI6aS5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLGl9ZnVuY3Rpb24gbyhlKXtpZihlLmVwKXJldHVybjtlLmVwPSEwO2NvbnN0IGk9cihlKTtmZXRjaChlLmhyZWYsaSl9fSkoKTtjb25zdCBJbT0ibW9kdWxlcHJlbG9hZCIsem09ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3IFVSTCh0LG4pLmhyZWZ9LGVzPXt9LHhtPWZ1bmN0aW9uKG4scixvKXtsZXQgZT1Qcm9taXNlLnJlc29sdmUoKTtpZihyJiZyLmxlbmd0aD4wKXtsZXQgYT1mdW5jdGlvbihsKXtyZXR1cm4gUHJvbWlzZS5hbGwobC5tYXAoZz0+UHJvbWlzZS5yZXNvbHZlKGcpLnRoZW4odj0+KHtzdGF0dXM6ImZ1bGZpbGxlZCIsdmFsdWU6dn0pLHY9Pih7c3RhdHVzOiJyZWplY3RlZCIscmVhc29uOnZ9KSkpKX07Y29uc3Qgcz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLGM9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigibWV0YVtwcm9wZXJ0eT1jc3Atbm9uY2VdIiksdT1jPy5ub25jZXx8Yz8uZ2V0QXR0cmlidXRlKCJub25jZSIpO2U9YShyLm1hcChsPT57aWYobD16bShsLG8pLGwgaW4gZXMpcmV0dXJuO2VzW2xdPSEwO2NvbnN0IGc9bC5lbmRzV2l0aCgiLmNzcyIpLHY9Zz8nW3JlbD0ic3R5bGVzaGVldCJdJzoiIjtpZighIW8pZm9yKGxldCBGPXMubGVuZ3RoLTE7Rj49MDtGLS0pe2NvbnN0IFI9c1tGXTtpZihSLmhyZWY9PT1sJiYoIWd8fFIucmVsPT09InN0eWxlc2hlZXQiKSlyZXR1cm59ZWxzZSBpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBsaW5rW2hyZWY9IiR7bH0iXSR7dn1gKSlyZXR1cm47Y29uc3QgeT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7aWYoeS5yZWw9Zz8ic3R5bGVzaGVldCI6SW0sZ3x8KHkuYXM9InNjcmlwdCIpLHkuY3Jvc3NPcmlnaW49IiIseS5ocmVmPWwsdSYmeS5zZXRBdHRyaWJ1dGUoIm5vbmNlIix1KSxkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHkpLGcpcmV0dXJuIG5ldyBQcm9taXNlKChGLFIpPT57eS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixGKSx5LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwoKT0+UihuZXcgRXJyb3IoYFVuYWJsZSB0byBwcmVsb2FkIENTUyBmb3IgJHtsfWApKSl9KX0pKX1mdW5jdGlvbiBpKGEpe2NvbnN0IHM9bmV3IEV2ZW50KCJ2aXRlOnByZWxvYWRFcnJvciIse2NhbmNlbGFibGU6ITB9KTtpZihzLnBheWxvYWQ9YSx3aW5kb3cuZGlzcGF0Y2hFdmVudChzKSwhcy5kZWZhdWx0UHJldmVudGVkKXRocm93IGF9cmV0dXJuIGUudGhlbihhPT57Zm9yKGNvbnN0IHMgb2YgYXx8W10pcy5zdGF0dXM9PT0icmVqZWN0ZWQiJiZpKHMucmVhc29uKTtyZXR1cm4gbigpLmNhdGNoKGkpfSl9O3ZhciB0cztjb25zdCByaT1PYmplY3QuZnJlZXplKHtzdGF0dXM6ImFib3J0ZWQifSk7ZnVuY3Rpb24gZCh0LG4scil7ZnVuY3Rpb24gbyhzLGMpe2lmKHMuX3pvZHx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIl96b2QiLHt2YWx1ZTp7ZGVmOmMsY29uc3RyOmEsdHJhaXRzOm5ldyBTZXR9LGVudW1lcmFibGU6ITF9KSxzLl96b2QudHJhaXRzLmhhcyh0KSlyZXR1cm47cy5fem9kLnRyYWl0cy5hZGQodCksbihzLGMpO2NvbnN0IHU9YS5wcm90b3R5cGUsbD1PYmplY3Qua2V5cyh1KTtmb3IobGV0IGc9MDtnPGwubGVuZ3RoO2crKyl7Y29uc3Qgdj1sW2ddO3YgaW4gc3x8KHNbdl09dVt2XS5iaW5kKHMpKX19Y29uc3QgZT1yPy5QYXJlbnQ/P09iamVjdDtjbGFzcyBpIGV4dGVuZHMgZXt9T2JqZWN0LmRlZmluZVByb3BlcnR5KGksIm5hbWUiLHt2YWx1ZTp0fSk7ZnVuY3Rpb24gYShzKXt2YXIgYztjb25zdCB1PXI/LlBhcmVudD9uZXcgaTp0aGlzO28odSxzKSwoYz11Ll96b2QpLmRlZmVycmVkPz8oYy5kZWZlcnJlZD1bXSk7Zm9yKGNvbnN0IGwgb2YgdS5fem9kLmRlZmVycmVkKWwoKTtyZXR1cm4gdX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsImluaXQiLHt2YWx1ZTpvfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpzPT5yPy5QYXJlbnQmJnMgaW5zdGFuY2VvZiByLlBhcmVudD8hMDpzPy5fem9kPy50cmFpdHM/Lmhhcyh0KX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJuYW1lIix7dmFsdWU6dH0pLGF9Y29uc3QgaWk9U3ltYm9sKCJ6b2RfYnJhbmQiKTtjbGFzcyB4ZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIkVuY291bnRlcmVkIFByb21pc2UgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlLiBVc2UgLnBhcnNlQXN5bmMoKSBpbnN0ZWFkLiIpfX1jbGFzcyBDbiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4pe3N1cGVyKGBFbmNvdW50ZXJlZCB1bmlkaXJlY3Rpb25hbCB0cmFuc2Zvcm0gZHVyaW5nIGVuY29kZTogJHtufWApLHRoaXMubmFtZT0iWm9kRW5jb2RlRXJyb3IifX0odHM9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsQ29uZmlnPz8odHMuX196b2RfZ2xvYmFsQ29uZmlnPXt9KTtjb25zdCBndD1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbENvbmZpZztmdW5jdGlvbiBWKHQpe3JldHVybiB0JiZPYmplY3QuYXNzaWduKGd0LHQpLGd0fWZ1bmN0aW9uIFRtKHQpe3JldHVybiB0fWZ1bmN0aW9uIGptKHQpe3JldHVybiB0fWZ1bmN0aW9uIFVtKHQpe31mdW5jdGlvbiBQbSh0KXt0aHJvdyBuZXcgRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gZXhoYXVzdGl2ZSBjaGVjayIpfWZ1bmN0aW9uIE9tKHQpe31mdW5jdGlvbiBvaSh0KXtjb25zdCBuPU9iamVjdC52YWx1ZXModCkuZmlsdGVyKG89PnR5cGVvZiBvPT0ibnVtYmVyIik7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoW28sZV0pPT5uLmluZGV4T2YoK28pPT09LTEpLm1hcCgoW28sZV0pPT5lKX1mdW5jdGlvbiBfKHQsbj0ifCIpe3JldHVybiB0Lm1hcChyPT5rKHIpKS5qb2luKG4pfWZ1bmN0aW9uIFVuKHQsbil7cmV0dXJuIHR5cGVvZiBuPT0iYmlnaW50Ij9uLnRvU3RyaW5nKCk6bn1mdW5jdGlvbiBidCh0KXtyZXR1cm57Z2V0IHZhbHVlKCl7e2NvbnN0IG49dCgpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywidmFsdWUiLHt2YWx1ZTpufSksbn19fX1mdW5jdGlvbiBOZSh0KXtyZXR1cm4gdD09bnVsbH1mdW5jdGlvbiBBbih0KXtjb25zdCBuPXQuc3RhcnRzV2l0aCgiXiIpPzE6MCxyPXQuZW5kc1dpdGgoIiQiKT90Lmxlbmd0aC0xOnQubGVuZ3RoO3JldHVybiB0LnNsaWNlKG4scil9ZnVuY3Rpb24gRXModCxuKXtjb25zdCByPXQvbixvPU1hdGgucm91bmQociksZT1OdW1iZXIuRVBTSUxPTipNYXRoLm1heChNYXRoLmFicyhyKSwxKTtyZXR1cm4gTWF0aC5hYnMoci1vKTxlPzA6ci1vfWNvbnN0IG5zPVN5bWJvbCgiZXZhbHVhdGluZyIpO2Z1bmN0aW9uIFQodCxuLHIpe2xldCBvO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2dldCgpe2lmKG8hPT1ucylyZXR1cm4gbz09PXZvaWQgMCYmKG89bnMsbz1yKCkpLG99LHNldChlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHt2YWx1ZTplfSl9LGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIERtKHQpe3JldHVybiBPYmplY3QuY3JlYXRlKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSl9ZnVuY3Rpb24geWUodCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOnIsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBmZSguLi50KXtjb25zdCBuPXt9O2Zvcihjb25zdCByIG9mIHQpe2NvbnN0IG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocik7T2JqZWN0LmFzc2lnbihuLG8pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh7fSxuKX1mdW5jdGlvbiBObSh0KXtyZXR1cm4gZmUodC5fem9kLmRlZil9ZnVuY3Rpb24gRW0odCxuKXtyZXR1cm4gbj9uLnJlZHVjZSgocixvKT0+cj8uW29dLHQpOnR9ZnVuY3Rpb24gWm0odCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0KSxyPW4ubWFwKG89PnRbb10pO3JldHVybiBQcm9taXNlLmFsbChyKS50aGVuKG89Pntjb25zdCBlPXt9O2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWVbbltpXV09b1tpXTtyZXR1cm4gZX0pfWZ1bmN0aW9uIFJtKHQ9MTApe2NvbnN0IG49ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjtsZXQgcj0iIjtmb3IobGV0IG89MDtvPHQ7bysrKXIrPW5bTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKm4ubGVuZ3RoKV07cmV0dXJuIHJ9ZnVuY3Rpb24gWHIodCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpfWZ1bmN0aW9uIFpzKHQpe3JldHVybiB0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoL1teXHdccy1dL2csIiIpLnJlcGxhY2UoL1tcc18tXSsvZywiLSIpLnJlcGxhY2UoL14tK3wtKyQvZywiIil9Y29uc3QgYWk9ImNhcHR1cmVTdGFja1RyYWNlImluIEVycm9yP0Vycm9yLmNhcHR1cmVTdGFja1RyYWNlOiguLi50KT0+e307ZnVuY3Rpb24gTGUodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmdCE9PW51bGwmJiFBcnJheS5pc0FycmF5KHQpfWNvbnN0IFJzPWJ0KCgpPT57aWYoZ3Quaml0bGVzc3x8dHlwZW9mIG5hdmlnYXRvcjwidSImJm5hdmlnYXRvcj8udXNlckFnZW50Py5pbmNsdWRlcygiQ2xvdWRmbGFyZSIpKXJldHVybiExO3RyeXtjb25zdCB0PUZ1bmN0aW9uO3JldHVybiBuZXcgdCgiIiksITB9Y2F0Y2h7cmV0dXJuITF9fSk7ZnVuY3Rpb24gVGUodCl7aWYoTGUodCk9PT0hMSlyZXR1cm4hMTtjb25zdCBuPXQuY29uc3RydWN0b3I7aWYobj09PXZvaWQgMHx8dHlwZW9mIG4hPSJmdW5jdGlvbiIpcmV0dXJuITA7Y29uc3Qgcj1uLnByb3RvdHlwZTtyZXR1cm4hKExlKHIpPT09ITF8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLCJpc1Byb3RvdHlwZU9mIik9PT0hMSl9ZnVuY3Rpb24gTG4odCl7cmV0dXJuIFRlKHQpP3suLi50fTpBcnJheS5pc0FycmF5KHQpP1suLi50XTp0IGluc3RhbmNlb2YgTWFwP25ldyBNYXAodCk6dCBpbnN0YW5jZW9mIFNldD9uZXcgU2V0KHQpOnR9ZnVuY3Rpb24gQ20odCl7bGV0IG49MDtmb3IoY29uc3QgciBpbiB0KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LHIpJiZuKys7cmV0dXJuIG59Y29uc3QgQW09dD0+e2NvbnN0IG49dHlwZW9mIHQ7c3dpdGNoKG4pe2Nhc2UidW5kZWZpbmVkIjpyZXR1cm4idW5kZWZpbmVkIjtjYXNlInN0cmluZyI6cmV0dXJuInN0cmluZyI7Y2FzZSJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNOYU4odCk/Im5hbiI6Im51bWJlciI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYm9vbGVhbiI7Y2FzZSJmdW5jdGlvbiI6cmV0dXJuImZ1bmN0aW9uIjtjYXNlImJpZ2ludCI6cmV0dXJuImJpZ2ludCI7Y2FzZSJzeW1ib2wiOnJldHVybiJzeW1ib2wiO2Nhc2Uib2JqZWN0IjpyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnQ9PT1udWxsPyJudWxsIjp0LnRoZW4mJnR5cGVvZiB0LnRoZW49PSJmdW5jdGlvbiImJnQuY2F0Y2gmJnR5cGVvZiB0LmNhdGNoPT0iZnVuY3Rpb24iPyJwcm9taXNlIjp0eXBlb2YgTWFwPCJ1IiYmdCBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0eXBlb2YgU2V0PCJ1IiYmdCBpbnN0YW5jZW9mIFNldD8ic2V0Ijp0eXBlb2YgRGF0ZTwidSImJnQgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp0eXBlb2YgRmlsZTwidSImJnQgaW5zdGFuY2VvZiBGaWxlPyJmaWxlIjoib2JqZWN0IjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7bn1gKX19LFBuPW5ldyBTZXQoWyJzdHJpbmciLCJudW1iZXIiLCJzeW1ib2wiXSksQ3M9bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsImJpZ2ludCIsImJvb2xlYW4iLCJzeW1ib2wiLCJ1bmRlZmluZWQiXSk7ZnVuY3Rpb24gdmUodCl7cmV0dXJuIHQucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csIlxcJCYiKX1mdW5jdGlvbiBhZSh0LG4scil7Y29uc3Qgbz1uZXcgdC5fem9kLmNvbnN0cihuPz90Ll96b2QuZGVmKTtyZXR1cm4oIW58fHI/LnBhcmVudCkmJihvLl96b2QucGFyZW50PXQpLG99ZnVuY3Rpb24gaCh0KXtjb25zdCBuPXQ7aWYoIW4pcmV0dXJue307aWYodHlwZW9mIG49PSJzdHJpbmciKXJldHVybntlcnJvcjooKT0+bn07aWYobj8ubWVzc2FnZSE9PXZvaWQgMCl7aWYobj8uZXJyb3IhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc3BlY2lmeSBib3RoIGBtZXNzYWdlYCBhbmQgYGVycm9yYCBwYXJhbXMiKTtuLmVycm9yPW4ubWVzc2FnZX1yZXR1cm4gZGVsZXRlIG4ubWVzc2FnZSx0eXBlb2Ygbi5lcnJvcj09InN0cmluZyI/ey4uLm4sZXJyb3I6KCk9Pm4uZXJyb3J9Om59ZnVuY3Rpb24gTG0odCl7bGV0IG47cmV0dXJuIG5ldyBQcm94eSh7fSx7Z2V0KHIsbyxlKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmdldChuLG8sZSl9LHNldChyLG8sZSxpKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LnNldChuLG8sZSxpKX0saGFzKHIsbyl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5oYXMobixvKX0sZGVsZXRlUHJvcGVydHkocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG4sbyl9LG93bktleXMocil7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5vd25LZXlzKG4pfSxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLG8pfSxkZWZpbmVQcm9wZXJ0eShyLG8sZSl7cmV0dXJuIG4/PyhuPXQoKSksUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShuLG8sZSl9fSl9ZnVuY3Rpb24gayh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJiaWdpbnQiP3QudG9TdHJpbmcoKSsibiI6dHlwZW9mIHQ9PSJzdHJpbmciP2AiJHt0fSJgOmAke3R9YH1mdW5jdGlvbiBBcyh0KXtyZXR1cm4gT2JqZWN0LmtleXModCkuZmlsdGVyKG49PnRbbl0uX3pvZC5vcHRpbj09PSJvcHRpb25hbCImJnRbbl0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiKX1jb25zdCBMcz17c2FmZWludDpbTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJdLGludDMyOlstMjE0NzQ4MzY0OCwyMTQ3NDgzNjQ3XSx1aW50MzI6WzAsNDI5NDk2NzI5NV0sZmxvYXQzMjpbLTM0MDI4MjM0NjYzODUyODg2ZTIyLDM0MDI4MjM0NjYzODUyODg2ZTIyXSxmbG9hdDY0OlstTnVtYmVyLk1BWF9WQUxVRSxOdW1iZXIuTUFYX1ZBTFVFXX0sTXM9e2ludDY0OltCaWdJbnQoIi05MjIzMzcyMDM2ODU0Nzc1ODA4IiksQmlnSW50KCI5MjIzMzcyMDM2ODU0Nzc1ODA3IildLHVpbnQ2NDpbQmlnSW50KDApLEJpZ0ludCgiMTg0NDY3NDQwNzM3MDk1NTE2MTUiKV19O2Z1bmN0aW9uIHFzKHQsbil7Y29uc3Qgcj10Ll96b2QuZGVmLG89ci5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5waWNrKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9ZmUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgYT17fTtmb3IoY29uc3QgcyBpbiBuKXtpZighKHMgaW4gci5zaGFwZSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtuW3NdJiYoYVtzXT1yLnNoYXBlW3NdKX1yZXR1cm4geWUodGhpcywic2hhcGUiLGEpLGF9LGNoZWNrczpbXX0pO3JldHVybiBhZSh0LGkpfWZ1bmN0aW9uIEZzKHQsbil7Y29uc3Qgcj10Ll96b2QuZGVmLG89ci5jaGVja3M7aWYobyYmby5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5vbWl0KCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGk9ZmUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgYT17Li4udC5fem9kLmRlZi5zaGFwZX07Zm9yKGNvbnN0IHMgaW4gbil7aWYoIShzIGluIHIuc2hhcGUpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7c30iYCk7bltzXSYmZGVsZXRlIGFbc119cmV0dXJuIHllKHRoaXMsInNoYXBlIixhKSxhfSxjaGVja3M6W119KTtyZXR1cm4gYWUodCxpKX1mdW5jdGlvbiBKcyh0LG4pe2lmKCFUZShuKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHI9dC5fem9kLmRlZi5jaGVja3M7aWYociYmci5sZW5ndGg+MCl7Y29uc3QgaT10Ll96b2QuZGVmLnNoYXBlO2Zvcihjb25zdCBhIGluIG4paWYoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLGEpIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IG92ZXJ3cml0ZSBrZXlzIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMuIFVzZSBgLnNhZmVFeHRlbmQoKWAgaW5zdGVhZC4iKX1jb25zdCBlPWZlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGk9ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubn07cmV0dXJuIHllKHRoaXMsInNoYXBlIixpKSxpfX0pO3JldHVybiBhZSh0LGUpfWZ1bmN0aW9uIEhzKHQsbil7aWYoIVRlKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBzYWZlRXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdCIpO2NvbnN0IHI9ZmUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5ufTtyZXR1cm4geWUodGhpcywic2hhcGUiLG8pLG99fSk7cmV0dXJuIGFlKHQscil9ZnVuY3Rpb24gVnModCxuKXtpZih0Ll96b2QuZGVmLmNoZWNrcz8ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiLm1lcmdlKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIC5zYWZlRXh0ZW5kKCkgaW5zdGVhZC4iKTtjb25zdCByPWZlKHQuX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IG89ey4uLnQuX3pvZC5kZWYuc2hhcGUsLi4ubi5fem9kLmRlZi5zaGFwZX07cmV0dXJuIHllKHRoaXMsInNoYXBlIixvKSxvfSxnZXQgY2F0Y2hhbGwoKXtyZXR1cm4gbi5fem9kLmRlZi5jYXRjaGFsbH0sY2hlY2tzOm4uX3pvZC5kZWYuY2hlY2tzPz9bXX0pO3JldHVybiBhZSh0LHIpfWZ1bmN0aW9uIEtzKHQsbixyKXtjb25zdCBlPW4uX3pvZC5kZWYuY2hlY2tzO2lmKGUmJmUubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCIucGFydGlhbCgpIGNhbm5vdCBiZSB1c2VkIG9uIG9iamVjdCBzY2hlbWFzIGNvbnRhaW5pbmcgcmVmaW5lbWVudHMiKTtjb25zdCBhPWZlKG4uX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IHM9bi5fem9kLmRlZi5zaGFwZSxjPXsuLi5zfTtpZihyKWZvcihjb25zdCB1IGluIHIpe2lmKCEodSBpbiBzKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3V9ImApO3JbdV0mJihjW3VdPXQ/bmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c1t1XX0pOnNbdV0pfWVsc2UgZm9yKGNvbnN0IHUgaW4gcyljW3VdPXQ/bmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6c1t1XX0pOnNbdV07cmV0dXJuIHllKHRoaXMsInNoYXBlIixjKSxjfSxjaGVja3M6W119KTtyZXR1cm4gYWUobixhKX1mdW5jdGlvbiBCcyh0LG4scil7Y29uc3Qgbz1mZShuLl96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBlPW4uX3pvZC5kZWYuc2hhcGUsaT17Li4uZX07aWYocilmb3IoY29uc3QgYSBpbiByKXtpZighKGEgaW4gaSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHthfSJgKTtyW2FdJiYoaVthXT1uZXcgdCh7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTplW2FdfSkpfWVsc2UgZm9yKGNvbnN0IGEgaW4gZSlpW2FdPW5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmVbYV19KTtyZXR1cm4geWUodGhpcywic2hhcGUiLGkpLGl9fSk7cmV0dXJuIGFlKG4sbyl9ZnVuY3Rpb24gemUodCxuPTApe2lmKHQuYWJvcnRlZD09PSEwKXJldHVybiEwO2ZvcihsZXQgcj1uO3I8dC5pc3N1ZXMubGVuZ3RoO3IrKylpZih0Lmlzc3Vlc1tyXT8uY29udGludWUhPT0hMClyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBXcyh0LG49MCl7aWYodC5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCByPW47cjx0Lmlzc3Vlcy5sZW5ndGg7cisrKWlmKHQuaXNzdWVzW3JdPy5jb250aW51ZT09PSExKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIHVlKHQsbil7cmV0dXJuIG4ubWFwKHI9Pnt2YXIgbztyZXR1cm4obz1yKS5wYXRoPz8oby5wYXRoPVtdKSxyLnBhdGgudW5zaGlmdCh0KSxyfSl9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj90OnQ/Lm1lc3NhZ2V9ZnVuY3Rpb24gb2UodCxuLHIpe2NvbnN0IG89dC5tZXNzYWdlP3QubWVzc2FnZTpwdCh0Lmluc3Q/Ll96b2QuZGVmPy5lcnJvcj8uKHQpKT8/cHQobj8uZXJyb3I/Lih0KSk/P3B0KHIuY3VzdG9tRXJyb3I/Lih0KSk/P3B0KHIubG9jYWxlRXJyb3I/Lih0KSk/PyJJbnZhbGlkIGlucHV0Iix7aW5zdDplLGNvbnRpbnVlOmksaW5wdXQ6YSwuLi5zfT10O3JldHVybiBzLnBhdGg/PyhzLnBhdGg9W10pLHMubWVzc2FnZT1vLG4/LnJlcG9ydElucHV0JiYocy5pbnB1dD1hKSxzfWZ1bmN0aW9uIE1uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgU2V0PyJzZXQiOnQgaW5zdGFuY2VvZiBNYXA/Im1hcCI6dCBpbnN0YW5jZW9mIEZpbGU/ImZpbGUiOiJ1bmtub3duIn1mdW5jdGlvbiBxbih0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnR5cGVvZiB0PT0ic3RyaW5nIj8ic3RyaW5nIjoidW5rbm93biJ9ZnVuY3Rpb24gUyh0KXtjb25zdCBuPXR5cGVvZiB0O3N3aXRjaChuKXtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTih0KT8ibmFuIjoibnVtYmVyIjtjYXNlIm9iamVjdCI6e2lmKHQ9PT1udWxsKXJldHVybiJudWxsIjtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiJhcnJheSI7Y29uc3Qgcj10O2lmKHImJk9iamVjdC5nZXRQcm90b3R5cGVPZihyKSE9PU9iamVjdC5wcm90b3R5cGUmJiJjb25zdHJ1Y3RvciJpbiByJiZyLmNvbnN0cnVjdG9yKXJldHVybiByLmNvbnN0cnVjdG9yLm5hbWV9fXJldHVybiBufWZ1bmN0aW9uIE1lKC4uLnQpe2NvbnN0W24scixvXT10O3JldHVybiB0eXBlb2Ygbj09InN0cmluZyI/e21lc3NhZ2U6bixjb2RlOiJjdXN0b20iLGlucHV0OnIsaW5zdDpvfTp7Li4ubn19ZnVuY3Rpb24gTW0odCl7cmV0dXJuIE9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoW24scl0pPT5OdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KG4sMTApKSkubWFwKG49Pm5bMV0pfWZ1bmN0aW9uIEdzKHQpe2NvbnN0IG49YXRvYih0KSxyPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rKylyW29dPW4uY2hhckNvZGVBdChvKTtyZXR1cm4gcn1mdW5jdGlvbiBYcyh0KXtsZXQgbj0iIjtmb3IobGV0IHI9MDtyPHQubGVuZ3RoO3IrKyluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbcl0pO3JldHVybiBidG9hKG4pfWZ1bmN0aW9uIHFtKHQpe2NvbnN0IG49dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKSxyPSI9Ii5yZXBlYXQoKDQtbi5sZW5ndGglNCklNCk7cmV0dXJuIEdzKG4rcil9ZnVuY3Rpb24gRm0odCl7cmV0dXJuIFhzKHQpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX1mdW5jdGlvbiBKbSh0KXtjb25zdCBuPXQucmVwbGFjZSgvXjB4LywiIik7aWYobi5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGhleCBzdHJpbmcgbGVuZ3RoIik7Y29uc3Qgcj1uZXcgVWludDhBcnJheShuLmxlbmd0aC8yKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoO28rPTIpcltvLzJdPU51bWJlci5wYXJzZUludChuLnNsaWNlKG8sbysyKSwxNik7cmV0dXJuIHJ9ZnVuY3Rpb24gSG0odCl7cmV0dXJuIEFycmF5LmZyb20odCkubWFwKG49Pm4udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsIjAiKSkuam9pbigiIil9Y2xhc3MgVm17Y29uc3RydWN0b3IoLi4ubil7fX1jb25zdCBzaT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsQklHSU5UX0ZPUk1BVF9SQU5HRVM6TXMsQ2xhc3M6Vm0sTlVNQkVSX0ZPUk1BVF9SQU5HRVM6THMsYWJvcnRlZDp6ZSxhbGxvd3NFdmFsOlJzLGFzc2VydDpPbSxhc3NlcnRFcXVhbDpUbSxhc3NlcnRJczpVbSxhc3NlcnROZXZlcjpQbSxhc3NlcnROb3RFcXVhbDpqbSxhc3NpZ25Qcm9wOnllLGJhc2U2NFRvVWludDhBcnJheTpHcyxiYXNlNjR1cmxUb1VpbnQ4QXJyYXk6cW0sY2FjaGVkOmJ0LGNhcHR1cmVTdGFja1RyYWNlOmFpLGNsZWFuRW51bTpNbSxjbGVhblJlZ2V4OkFuLGNsb25lOmFlLGNsb25lRGVmOk5tLGNyZWF0ZVRyYW5zcGFyZW50UHJveHk6TG0sZGVmaW5lTGF6eTpULGVzYzpYcixlc2NhcGVSZWdleDp2ZSxleHBsaWNpdGx5QWJvcnRlZDpXcyxleHRlbmQ6SnMsZmluYWxpemVJc3N1ZTpvZSxmbG9hdFNhZmVSZW1haW5kZXI6RXMsZ2V0RWxlbWVudEF0UGF0aDpFbSxnZXRFbnVtVmFsdWVzOm9pLGdldExlbmd0aGFibGVPcmlnaW46cW4sZ2V0UGFyc2VkVHlwZTpBbSxnZXRTaXphYmxlT3JpZ2luOk1uLGhleFRvVWludDhBcnJheTpKbSxpc09iamVjdDpMZSxpc1BsYWluT2JqZWN0OlRlLGlzc3VlOk1lLGpvaW5WYWx1ZXM6Xyxqc29uU3RyaW5naWZ5UmVwbGFjZXI6VW4sbWVyZ2U6VnMsbWVyZ2VEZWZzOmZlLG5vcm1hbGl6ZVBhcmFtczpoLG51bGxpc2g6TmUsbnVtS2V5czpDbSxvYmplY3RDbG9uZTpEbSxvbWl0OkZzLG9wdGlvbmFsS2V5czpBcyxwYXJzZWRUeXBlOlMscGFydGlhbDpLcyxwaWNrOnFzLHByZWZpeElzc3Vlczp1ZSxwcmltaXRpdmVUeXBlczpDcyxwcm9taXNlQWxsT2JqZWN0OlptLHByb3BlcnR5S2V5VHlwZXM6UG4scmFuZG9tU3RyaW5nOlJtLHJlcXVpcmVkOkJzLHNhZmVFeHRlbmQ6SHMsc2hhbGxvd0Nsb25lOkxuLHNsdWdpZnk6WnMsc3RyaW5naWZ5UHJpbWl0aXZlOmssdWludDhBcnJheVRvQmFzZTY0OlhzLHVpbnQ4QXJyYXlUb0Jhc2U2NHVybDpGbSx1aW50OEFycmF5VG9IZXg6SG0sdW53cmFwTWVzc2FnZTpwdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxZcz0odCxuKT0+e3QubmFtZT0iJFpvZEVycm9yIixPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX3pvZCIse3ZhbHVlOnQuX3pvZCxlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImlzc3VlcyIse3ZhbHVlOm4sZW51bWVyYWJsZTohMX0pLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeShuLFVuLDIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ0b1N0cmluZyIse3ZhbHVlOigpPT50Lm1lc3NhZ2UsZW51bWVyYWJsZTohMX0pfSxjaT1kKCIkWm9kRXJyb3IiLFlzKSxzZT1kKCIkWm9kRXJyb3IiLFlzLHtQYXJlbnQ6RXJyb3J9KTtmdW5jdGlvbiBGbih0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXt9LG89W107Zm9yKGNvbnN0IGUgb2YgdC5pc3N1ZXMpZS5wYXRoLmxlbmd0aD4wPyhyW2UucGF0aFswXV09cltlLnBhdGhbMF1dfHxbXSxyW2UucGF0aFswXV0ucHVzaChuKGUpKSk6by5wdXNoKG4oZSkpO3JldHVybntmb3JtRXJyb3JzOm8sZmllbGRFcnJvcnM6cn19ZnVuY3Rpb24gSm4odCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17X2Vycm9yczpbXX0sbz0oZSxpPVtdKT0+e2Zvcihjb25zdCBhIG9mIGUuaXNzdWVzKWlmKGEuY29kZT09PSJpbnZhbGlkX3VuaW9uIiYmYS5lcnJvcnMubGVuZ3RoKWEuZXJyb3JzLm1hcChzPT5vKHtpc3N1ZXM6c30sWy4uLmksLi4uYS5wYXRoXSkpO2Vsc2UgaWYoYS5jb2RlPT09ImludmFsaWRfa2V5IilvKHtpc3N1ZXM6YS5pc3N1ZXN9LFsuLi5pLC4uLmEucGF0aF0pO2Vsc2UgaWYoYS5jb2RlPT09ImludmFsaWRfZWxlbWVudCIpbyh7aXNzdWVzOmEuaXNzdWVzfSxbLi4uaSwuLi5hLnBhdGhdKTtlbHNle2NvbnN0IHM9Wy4uLmksLi4uYS5wYXRoXTtpZihzLmxlbmd0aD09PTApci5fZXJyb3JzLnB1c2gobihhKSk7ZWxzZXtsZXQgYz1yLHU9MDtmb3IoO3U8cy5sZW5ndGg7KXtjb25zdCBsPXNbdV07dT09PXMubGVuZ3RoLTE/KGNbbF09Y1tsXXx8e19lcnJvcnM6W119LGNbbF0uX2Vycm9ycy5wdXNoKG4oYSkpKTpjW2xdPWNbbF18fHtfZXJyb3JzOltdfSxjPWNbbF0sdSsrfX19fTtyZXR1cm4gbyh0KSxyfWZ1bmN0aW9uIHVpKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e2Vycm9yczpbXX0sbz0oZSxpPVtdKT0+e3ZhciBhLHM7Zm9yKGNvbnN0IGMgb2YgZS5pc3N1ZXMpaWYoYy5jb2RlPT09ImludmFsaWRfdW5pb24iJiZjLmVycm9ycy5sZW5ndGgpYy5lcnJvcnMubWFwKHU9Pm8oe2lzc3Vlczp1fSxbLi4uaSwuLi5jLnBhdGhdKSk7ZWxzZSBpZihjLmNvZGU9PT0iaW52YWxpZF9rZXkiKW8oe2lzc3VlczpjLmlzc3Vlc30sWy4uLmksLi4uYy5wYXRoXSk7ZWxzZSBpZihjLmNvZGU9PT0iaW52YWxpZF9lbGVtZW50IilvKHtpc3N1ZXM6Yy5pc3N1ZXN9LFsuLi5pLC4uLmMucGF0aF0pO2Vsc2V7Y29uc3QgdT1bLi4uaSwuLi5jLnBhdGhdO2lmKHUubGVuZ3RoPT09MCl7ci5lcnJvcnMucHVzaChuKGMpKTtjb250aW51ZX1sZXQgbD1yLGc9MDtmb3IoO2c8dS5sZW5ndGg7KXtjb25zdCB2PXVbZ10sJD1nPT09dS5sZW5ndGgtMTt0eXBlb2Ygdj09InN0cmluZyI/KGwucHJvcGVydGllcz8/KGwucHJvcGVydGllcz17fSksKGE9bC5wcm9wZXJ0aWVzKVt2XT8/KGFbdl09e2Vycm9yczpbXX0pLGw9bC5wcm9wZXJ0aWVzW3ZdKToobC5pdGVtcz8/KGwuaXRlbXM9W10pLChzPWwuaXRlbXMpW3ZdPz8oc1t2XT17ZXJyb3JzOltdfSksbD1sLml0ZW1zW3ZdKSwkJiZsLmVycm9ycy5wdXNoKG4oYykpLGcrK319fTtyZXR1cm4gbyh0KSxyfWZ1bmN0aW9uIFFzKHQpe2NvbnN0IG49W10scj10Lm1hcChvPT50eXBlb2Ygbz09Im9iamVjdCI/by5rZXk6byk7Zm9yKGNvbnN0IG8gb2Ygcil0eXBlb2Ygbz09Im51bWJlciI/bi5wdXNoKGBbJHtvfV1gKTp0eXBlb2Ygbz09InN5bWJvbCI/bi5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShTdHJpbmcobykpfV1gKTovW15cdyRdLy50ZXN0KG8pP24ucHVzaChgWyR7SlNPTi5zdHJpbmdpZnkobyl9XWApOihuLmxlbmd0aCYmbi5wdXNoKCIuIiksbi5wdXNoKG8pKTtyZXR1cm4gbi5qb2luKCIiKX1mdW5jdGlvbiBsaSh0KXtjb25zdCBuPVtdLHI9Wy4uLnQuaXNzdWVzXS5zb3J0KChvLGUpPT4oby5wYXRoPz9bXSkubGVuZ3RoLShlLnBhdGg/P1tdKS5sZW5ndGgpO2Zvcihjb25zdCBvIG9mIHIpbi5wdXNoKGDinJYgJHtvLm1lc3NhZ2V9YCksby5wYXRoPy5sZW5ndGgmJm4ucHVzaChgICDihpIgYXQgJHtRcyhvLnBhdGgpfWApO3JldHVybiBuLmpvaW4oYApgKX1jb25zdCB5dD10PT4obixyLG8sZSk9Pntjb25zdCBpPW8/ey4uLm8sYXN5bmM6ITF9Onthc3luYzohMX0sYT1uLl96b2QucnVuKHt2YWx1ZTpyLGlzc3VlczpbXX0saSk7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IHhlO2lmKGEuaXNzdWVzLmxlbmd0aCl7Y29uc3Qgcz1uZXcoZT8uRXJyPz90KShhLmlzc3Vlcy5tYXAoYz0+b2UoYyxpLFYoKSkpKTt0aHJvdyBhaShzLGU/LmNhbGxlZSksc31yZXR1cm4gYS52YWx1ZX0sWXI9eXQoc2UpLGt0PXQ9PmFzeW5jKG4scixvLGUpPT57Y29uc3QgaT1vP3suLi5vLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBhPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSYmKGE9YXdhaXQgYSksYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhlPy5FcnI/P3QpKGEuaXNzdWVzLm1hcChjPT5vZShjLGksVigpKSkpO3Rocm93IGFpKHMsZT8uY2FsbGVlKSxzfXJldHVybiBhLnZhbHVlfSxRcj1rdChzZSksU3Q9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxhc3luYzohMX06e2FzeW5jOiExfSxpPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxlKTtpZihpIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgeGU7cmV0dXJuIGkuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcodD8/Y2kpKGkuaXNzdWVzLm1hcChhPT5vZShhLGUsVigpKSkpfTp7c3VjY2VzczohMCxkYXRhOmkudmFsdWV9fSxkaT1TdChzZSksd3Q9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGFzeW5jOiEwfTp7YXN5bmM6ITB9O2xldCBpPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxlKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2UmJihpPWF3YWl0IGkpLGkuaXNzdWVzLmxlbmd0aD97c3VjY2VzczohMSxlcnJvcjpuZXcgdChpLmlzc3Vlcy5tYXAoYT0+b2UoYSxlLFYoKSkpKX06e3N1Y2Nlc3M6ITAsZGF0YTppLnZhbHVlfX0sZWM9d3Qoc2UpLG1pPXQ9PihuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIHl0KHQpKG4scixlKX0sS209bWkoc2UpLHBpPXQ9PihuLHIsbyk9Pnl0KHQpKG4scixvKSxCbT1waShzZSksZmk9dD0+YXN5bmMobixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBrdCh0KShuLHIsZSl9LFdtPWZpKHNlKSxnaT10PT5hc3luYyhuLHIsbyk9Pmt0KHQpKG4scixvKSxHbT1naShzZSksdmk9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gU3QodCkobixyLGUpfSxYbT12aShzZSksaGk9dD0+KG4scixvKT0+U3QodCkobixyLG8pLFltPWhpKHNlKSwkaT10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIHd0KHQpKG4scixlKX0sUW09JGkoc2UpLF9pPXQ9PmFzeW5jKG4scixvKT0+d3QodCkobixyLG8pLGVwPV9pKHNlKSx0Yz0vXltjQ11bMC05YS16XXs2LH0kLyxuYz0vXlswLTlhLXpdKyQvLHJjPS9eWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNn0kLyxpYz0vXlswLTlhLXZBLVZdezIwfSQvLG9jPS9eW0EtWmEtejAtOV17Mjd9JC8sYWM9L15bYS16QS1aMC05Xy1dezIxfSQvLHNjPS9eUCg/OihcZCtXKXwoPyEuKlcpKD89XGR8VFxkKShcZCtZKT8oXGQrTSk/KFxkK0QpPyhUKD89XGQpKFxkK0gpPyhcZCtNKT8oXGQrKFsuLF1cZCspP1MpPyk/KSQvLHRwPS9eWy0rXT9QKD8hJCkoPzooPzpbLStdP1xkK1kpfCg/OlstK10/XGQrWy4sXVxkK1kkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/Oig/OlstK10/XGQrVyl8KD86Wy0rXT9cZCtbLixdXGQrVyQpKT8oPzooPzpbLStdP1xkK0QpfCg/OlstK10/XGQrWy4sXVxkK0QkKSk/KD86VCg/PVtcZCstXSkoPzooPzpbLStdP1xkK0gpfCg/OlstK10/XGQrWy4sXVxkK0gkKSk/KD86KD86Wy0rXT9cZCtNKXwoPzpbLStdP1xkK1suLF1cZCtNJCkpPyg/OlstK10/XGQrKD86Wy4sXVxkKyk/Uyk/KT8/JC8sY2M9L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvLHFlPXQ9PnQ/bmV3IFJlZ0V4cChgXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS0ke3R9WzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn0pJGApOi9eKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVsxLThdWzAtOWEtZkEtRl17M30tWzg5YWJBQl1bMC05YS1mQS1GXXszfS1bMC05YS1mQS1GXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwfGZmZmZmZmZmLWZmZmYtZmZmZi1mZmZmLWZmZmZmZmZmZmZmZikkLyxucD1xZSg0KSxycD1xZSg2KSxpcD1xZSg3KSx1Yz0vXig/IVwuKSg/IS4qXC5cLikoW0EtWmEtejAtOV8nK1wtXC5dKilbQS1aYS16MC05XystXUAoW0EtWmEtejAtOV1bQS1aYS16MC05XC1dKlwuKStbQS1aYS16XXsyLH0kLyxvcD0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyxhcD0vXigoW148PigpXFtcXVxcLiw7OlxzQCJdKyhcLltePD4oKVxbXF1cXC4sOzpcc0AiXSspKil8KCIuKyIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEtWl17Mix9KSkkLyxsYz0vXlteXHNAIl17MSw2NH1AW15cc0BdezEsMjU1fSQvdSxzcD1sYyxjcD0vXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLyx1cD0iXihcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXHB7RW1vamlfQ29tcG9uZW50fSkrJCI7ZnVuY3Rpb24gZGMoKXtyZXR1cm4gbmV3IFJlZ0V4cCh1cCwidSIpfWNvbnN0IG1jPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLyxwYz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopKSQvLGZjPXQ9Pntjb25zdCBuPXZlKHQ/PyI6Iik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oPzpbMC05QS1GXXsyfSR7bn0pezV9WzAtOUEtRl17Mn0kfF4oPzpbMC05YS1mXXsyfSR7bn0pezV9WzAtOWEtZl17Mn0kYCl9LGdjPS9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLyhbMC05XXxbMS0yXVswLTldfDNbMC0yXSkkLyx2Yz0vXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KVwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxoYz0vXiR8Xig/OlswLTlhLXpBLVorL117NH0pKig/Oig/OlswLTlhLXpBLVorL117Mn09PSl8KD86WzAtOWEtekEtWisvXXszfT0pKT8kLyxiaT0vXltBLVphLXowLTlfLV0qJC8sJGM9L14oPz0uezEsMjUzfVwuPyQpW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlstMC05YS16QS1aXXswLDYxfVswLTlhLXpBLVpdKT8pKlwuPyQvLF9jPS9eKFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pP1wuKStbYS16QS1aXXsyLH0kLyx5aT0vXmh0dHBzPyQvLGJjPS9eXCtbMS05XVxkezYsMTR9JC8seWM9Iig/Oig/OlxcZFxcZFsyNDY4XVswNDhdfFxcZFxcZFsxMzU3OV1bMjZdfFxcZFxcZDBbNDhdfFswMjQ2OF1bMDQ4XTAwfFsxMzU3OV1bMjZdMDApLTAyLTI5fFxcZHs0fS0oPzooPzowWzEzNTc4XXwxWzAyXSktKD86MFsxLTldfFsxMl1cXGR8M1swMV0pfCg/OjBbNDY5XXwxMSktKD86MFsxLTldfFsxMl1cXGR8MzApfCg/OjAyKS0oPzowWzEtOV18MVxcZHwyWzAtOF0pKSkiLGtjPW5ldyBSZWdFeHAoYF4ke3ljfSRgKTtmdW5jdGlvbiBTYyh0KXtjb25zdCBuPSIoPzpbMDFdXFxkfDJbMC0zXSk6WzAtNV1cXGQiO3JldHVybiB0eXBlb2YgdC5wcmVjaXNpb249PSJudW1iZXIiP3QucHJlY2lzaW9uPT09LTE/YCR7bn1gOnQucHJlY2lzaW9uPT09MD9gJHtufTpbMC01XVxcZGA6YCR7bn06WzAtNV1cXGRcXC5cXGR7JHt0LnByZWNpc2lvbn19YDpgJHtufSg/OjpbMC01XVxcZCg/OlxcLlxcZCspPyk/YH1mdW5jdGlvbiB3Yyh0KXtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7U2ModCl9JGApfWZ1bmN0aW9uIEljKHQpe2NvbnN0IG49U2Moe3ByZWNpc2lvbjp0LnByZWNpc2lvbn0pLHI9WyJaIl07dC5sb2NhbCYmci5wdXNoKCIiKSx0Lm9mZnNldCYmci5wdXNoKCIoWystXSg/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCkiKTtjb25zdCBvPWAke259KD86JHtyLmpvaW4oInwiKX0pYDtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7eWN9VCg/OiR7b30pJGApfWNvbnN0IHpjPXQ9Pntjb25zdCBuPXQ/YFtcXHNcXFNdeyR7dD8ubWluaW11bT8/MH0sJHt0Py5tYXhpbXVtPz8iIn19YDoiW1xcc1xcU10qIjtyZXR1cm4gbmV3IFJlZ0V4cChgXiR7bn0kYCl9LHhjPS9eLT9cZCtuPyQvLFRjPS9eLT9cZCskLyxraT0vXi0/XGQrKD86XC5cZCspPyQvLGpjPS9eKD86dHJ1ZXxmYWxzZSkkL2ksVWM9L15udWxsJC9pLFBjPS9edW5kZWZpbmVkJC9pLE9jPS9eW15BLVpdKiQvLERjPS9eW15hLXpdKiQvLE5jPS9eWzAtOWEtZkEtRl0qJC87ZnVuY3Rpb24gSXQodCxuKXtyZXR1cm4gbmV3IFJlZ0V4cChgXltBLVphLXowLTkrL117JHt0fX0ke259JGApfWZ1bmN0aW9uIHp0KHQpe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOV8tXXske3R9fSRgKX1jb25zdCBscD0vXlswLTlhLWZBLUZdezMyfSQvLGRwPUl0KDIyLCI9PSIpLG1wPXp0KDIyKSxwcD0vXlswLTlhLWZBLUZdezQwfSQvLGZwPUl0KDI3LCI9IiksZ3A9enQoMjcpLHZwPS9eWzAtOWEtZkEtRl17NjR9JC8saHA9SXQoNDMsIj0iKSwkcD16dCg0MyksX3A9L15bMC05YS1mQS1GXXs5Nn0kLyxicD1JdCg2NCwiIikseXA9enQoNjQpLGtwPS9eWzAtOWEtZkEtRl17MTI4fSQvLFNwPUl0KDg2LCI9PSIpLHdwPXp0KDg2KSxIbj1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmFzZTY0OmhjLGJhc2U2NHVybDpiaSxiaWdpbnQ6eGMsYm9vbGVhbjpqYyxicm93c2VyRW1haWw6Y3AsY2lkcnY0OmdjLGNpZHJ2Njp2YyxjdWlkOnRjLGN1aWQyOm5jLGRhdGU6a2MsZGF0ZXRpbWU6SWMsZG9tYWluOl9jLGR1cmF0aW9uOnNjLGUxNjQ6YmMsZW1haWw6dWMsZW1vamk6ZGMsZXh0ZW5kZWREdXJhdGlvbjp0cCxndWlkOmNjLGhleDpOYyxob3N0bmFtZTokYyxodG1sNUVtYWlsOm9wLGh0dHBQcm90b2NvbDp5aSxpZG5FbWFpbDpzcCxpbnRlZ2VyOlRjLGlwdjQ6bWMsaXB2NjpwYyxrc3VpZDpvYyxsb3dlcmNhc2U6T2MsbWFjOmZjLG1kNV9iYXNlNjQ6ZHAsbWQ1X2Jhc2U2NHVybDptcCxtZDVfaGV4OmxwLG5hbm9pZDphYyxudWxsOlVjLG51bWJlcjpraSxyZmM1MzIyRW1haWw6YXAsc2hhMV9iYXNlNjQ6ZnAsc2hhMV9iYXNlNjR1cmw6Z3Asc2hhMV9oZXg6cHAsc2hhMjU2X2Jhc2U2NDpocCxzaGEyNTZfYmFzZTY0dXJsOiRwLHNoYTI1Nl9oZXg6dnAsc2hhMzg0X2Jhc2U2NDpicCxzaGEzODRfYmFzZTY0dXJsOnlwLHNoYTM4NF9oZXg6X3Asc2hhNTEyX2Jhc2U2NDpTcCxzaGE1MTJfYmFzZTY0dXJsOndwLHNoYTUxMl9oZXg6a3Asc3RyaW5nOnpjLHRpbWU6d2MsdWxpZDpyYyx1bmRlZmluZWQ6UGMsdW5pY29kZUVtYWlsOmxjLHVwcGVyY2FzZTpEYyx1dWlkOnFlLHV1aWQ0Om5wLHV1aWQ2OnJwLHV1aWQ3OmlwLHhpZDppY30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxxPWQoIiRab2RDaGVjayIsKHQsbik9Pnt2YXIgcjt0Ll96b2Q/Pyh0Ll96b2Q9e30pLHQuX3pvZC5kZWY9biwocj10Ll96b2QpLm9uYXR0YWNoPz8oci5vbmF0dGFjaD1bXSl9KSxFYz17bnVtYmVyOiJudW1iZXIiLGJpZ2ludDoiYmlnaW50IixvYmplY3Q6ImRhdGUifSxTaT1kKCIkWm9kQ2hlY2tMZXNzVGhhbiIsKHQsbik9PntxLmluaXQodCxuKTtjb25zdCByPUVjW3R5cGVvZiBuLnZhbHVlXTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLGk9KG4uaW5jbHVzaXZlP2UubWF4aW11bTplLmV4Y2x1c2l2ZU1heGltdW0pPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bi52YWx1ZTxpJiYobi5pbmNsdXNpdmU/ZS5tYXhpbXVtPW4udmFsdWU6ZS5leGNsdXNpdmVNYXhpbXVtPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPW89Pnsobi5pbmNsdXNpdmU/by52YWx1ZTw9bi52YWx1ZTpvLnZhbHVlPG4udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46cixjb2RlOiJ0b29fYmlnIixtYXhpbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0Om8udmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHdpPWQoIiRab2RDaGVja0dyZWF0ZXJUaGFuIiwodCxuKT0+e3EuaW5pdCh0LG4pO2NvbnN0IHI9RWNbdHlwZW9mIG4udmFsdWVdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcsaT0obi5pbmNsdXNpdmU/ZS5taW5pbXVtOmUuZXhjbHVzaXZlTWluaW11bSk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLnZhbHVlPmkmJihuLmluY2x1c2l2ZT9lLm1pbmltdW09bi52YWx1ZTplLmV4Y2x1c2l2ZU1pbmltdW09bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9bz0+eyhuLmluY2x1c2l2ZT9vLnZhbHVlPj1uLnZhbHVlOm8udmFsdWU+bi52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjpyLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTp0eXBlb2Ygbi52YWx1ZT09Im9iamVjdCI/bi52YWx1ZS5nZXRUaW1lKCk6bi52YWx1ZSxpbnB1dDpvLnZhbHVlLGluY2x1c2l2ZTpuLmluY2x1c2l2ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxaYz1kKCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwodCxuKT0+e3EuaW5pdCh0LG4pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKHI9Pnt2YXIgbzsobz1yLl96b2QuYmFnKS5tdWx0aXBsZU9mPz8oby5tdWx0aXBsZU9mPW4udmFsdWUpfSksdC5fem9kLmNoZWNrPXI9PntpZih0eXBlb2Ygci52YWx1ZSE9dHlwZW9mIG4udmFsdWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbWl4IG51bWJlciBhbmQgYmlnaW50IGluIG11bHRpcGxlX29mIGNoZWNrLiIpOyh0eXBlb2Ygci52YWx1ZT09ImJpZ2ludCI/ci52YWx1ZSVuLnZhbHVlPT09QmlnSW50KDApOkVzKHIudmFsdWUsbi52YWx1ZSk9PT0wKXx8ci5pc3N1ZXMucHVzaCh7b3JpZ2luOnR5cGVvZiByLnZhbHVlLGNvZGU6Im5vdF9tdWx0aXBsZV9vZiIsZGl2aXNvcjpuLnZhbHVlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksUmM9ZCgiJFpvZENoZWNrTnVtYmVyRm9ybWF0IiwodCxuKT0+e3EuaW5pdCh0LG4pLG4uZm9ybWF0PW4uZm9ybWF0fHwiZmxvYXQ2NCI7Y29uc3Qgcj1uLmZvcm1hdD8uaW5jbHVkZXMoImludCIpLG89cj8iaW50IjoibnVtYmVyIixbZSxpXT1Mc1tuLmZvcm1hdF07dC5fem9kLm9uYXR0YWNoLnB1c2goYT0+e2NvbnN0IHM9YS5fem9kLmJhZztzLmZvcm1hdD1uLmZvcm1hdCxzLm1pbmltdW09ZSxzLm1heGltdW09aSxyJiYocy5wYXR0ZXJuPVRjKX0pLHQuX3pvZC5jaGVjaz1hPT57Y29uc3Qgcz1hLnZhbHVlO2lmKHIpe2lmKCFOdW1iZXIuaXNJbnRlZ2VyKHMpKXthLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDpvLGZvcm1hdDpuLmZvcm1hdCxjb2RlOiJpbnZhbGlkX3R5cGUiLGNvbnRpbnVlOiExLGlucHV0OnMsaW5zdDp0fSk7cmV0dXJufWlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzKSl7cz4wP2EuaXNzdWVzLnB1c2goe2lucHV0OnMsY29kZToidG9vX2JpZyIsbWF4aW11bTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixub3RlOiJJbnRlZ2VycyBtdXN0IGJlIHdpdGhpbiB0aGUgc2FmZSBpbnRlZ2VyIHJhbmdlLiIsaW5zdDp0LG9yaWdpbjpvLGluY2x1c2l2ZTohMCxjb250aW51ZTohbi5hYm9ydH0pOmEuaXNzdWVzLnB1c2goe2lucHV0OnMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOk51bWJlci5NSU5fU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OnQsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufX1zPGUmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpzLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTplLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSxzPmkmJmEuaXNzdWVzLnB1c2goe29yaWdpbjoibnVtYmVyIixpbnB1dDpzLGNvZGU6InRvb19iaWciLG1heGltdW06aSxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksQ2M9ZCgiJFpvZENoZWNrQmlnSW50Rm9ybWF0IiwodCxuKT0+e3EuaW5pdCh0LG4pO2NvbnN0W3Isb109TXNbbi5mb3JtYXRdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5mb3JtYXQ9bi5mb3JtYXQsaS5taW5pbXVtPXIsaS5tYXhpbXVtPW99KSx0Ll96b2QuY2hlY2s9ZT0+e2NvbnN0IGk9ZS52YWx1ZTtpPHImJmUuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDppLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpyLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KSxpPm8mJmUuaXNzdWVzLnB1c2goe29yaWdpbjoiYmlnaW50IixpbnB1dDppLGNvZGU6InRvb19iaWciLG1heGltdW06byxpbmNsdXNpdmU6ITAsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksQWM9ZCgiJFpvZENoZWNrTWF4U2l6ZSIsKHQsbik9Pnt2YXIgcjtxLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLm1heGltdW08ZSYmKG8uX3pvZC5iYWcubWF4aW11bT1uLm1heGltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7ZS5zaXplPD1uLm1heGltdW18fG8uaXNzdWVzLnB1c2goe29yaWdpbjpNbihlKSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxMYz1kKCIkWm9kQ2hlY2tNaW5TaXplIiwodCxuKT0+e3ZhciByO3EuaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hTmUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24ubWluaW11bT5lJiYoby5fem9kLmJhZy5taW5pbXVtPW4ubWluaW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtlLnNpemU+PW4ubWluaW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOk1uKGUpLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksTWM9ZCgiJFpvZENoZWNrU2l6ZUVxdWFscyIsKHQsbik9Pnt2YXIgcjtxLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLnNpemUhPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UubWluaW11bT1uLnNpemUsZS5tYXhpbXVtPW4uc2l6ZSxlLnNpemU9bi5zaXplfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWUsaT1lLnNpemU7aWYoaT09PW4uc2l6ZSlyZXR1cm47Y29uc3QgYT1pPm4uc2l6ZTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46TW4oZSksLi4uYT97Y29kZToidG9vX2JpZyIsbWF4aW11bTpuLnNpemV9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5zaXplfSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxxYz1kKCIkWm9kQ2hlY2tNYXhMZW5ndGgiLCh0LG4pPT57dmFyIHI7cS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFOZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLm1heGltdW08ZSYmKG8uX3pvZC5iYWcubWF4aW11bT1uLm1heGltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7aWYoZS5sZW5ndGg8PW4ubWF4aW11bSlyZXR1cm47Y29uc3QgYT1xbihlKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubWF4aW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxGYz1kKCIkWm9kQ2hlY2tNaW5MZW5ndGgiLCh0LG4pPT57dmFyIHI7cS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFOZShlKSYmZS5sZW5ndGghPT12b2lkIDB9KSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWTtuLm1pbmltdW0+ZSYmKG8uX3pvZC5iYWcubWluaW11bT1uLm1pbmltdW0pfSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWU7aWYoZS5sZW5ndGg+PW4ubWluaW11bSlyZXR1cm47Y29uc3QgYT1xbihlKTtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5taW5pbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEpjPWQoIiRab2RDaGVja0xlbmd0aEVxdWFscyIsKHQsbik9Pnt2YXIgcjtxLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5taW5pbXVtPW4ubGVuZ3RoLGUubWF4aW11bT1uLmxlbmd0aCxlLmxlbmd0aD1uLmxlbmd0aH0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlLGk9ZS5sZW5ndGg7aWYoaT09PW4ubGVuZ3RoKXJldHVybjtjb25zdCBhPXFuKGUpLHM9aT5uLmxlbmd0aDtvLmlzc3Vlcy5wdXNoKHtvcmlnaW46YSwuLi5zP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4ubGVuZ3RofTp7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubGVuZ3RofSxpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSx4dD1kKCIkWm9kQ2hlY2tTdHJpbmdGb3JtYXQiLCh0LG4pPT57dmFyIHIsbztxLmluaXQodCxuKSx0Ll96b2Qub25hdHRhY2gucHVzaChlPT57Y29uc3QgaT1lLl96b2QuYmFnO2kuZm9ybWF0PW4uZm9ybWF0LG4ucGF0dGVybiYmKGkucGF0dGVybnM/PyhpLnBhdHRlcm5zPW5ldyBTZXQpLGkucGF0dGVybnMuYWRkKG4ucGF0dGVybikpfSksbi5wYXR0ZXJuPyhyPXQuX3pvZCkuY2hlY2s/PyhyLmNoZWNrPWU9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KGUudmFsdWUpJiZlLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdCxpbnB1dDplLnZhbHVlLC4uLm4ucGF0dGVybj97cGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKX06e30saW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9KToobz10Ll96b2QpLmNoZWNrPz8oby5jaGVjaz0oKT0+e30pfSksSGM9ZCgiJFpvZENoZWNrUmVnZXgiLCh0LG4pPT57eHQuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57bi5wYXR0ZXJuLmxhc3RJbmRleD0wLCFuLnBhdHRlcm4udGVzdChyLnZhbHVlKSYmci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IixpbnB1dDpyLnZhbHVlLHBhdHRlcm46bi5wYXR0ZXJuLnRvU3RyaW5nKCksaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVmM9ZCgiJFpvZENoZWNrTG93ZXJDYXNlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1PYykseHQuaW5pdCh0LG4pfSksS2M9ZCgiJFpvZENoZWNrVXBwZXJDYXNlIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1EYykseHQuaW5pdCh0LG4pfSksQmM9ZCgiJFpvZENoZWNrSW5jbHVkZXMiLCh0LG4pPT57cS5pbml0KHQsbik7Y29uc3Qgcj12ZShuLmluY2x1ZGVzKSxvPW5ldyBSZWdFeHAodHlwZW9mIG4ucG9zaXRpb249PSJudW1iZXIiP2BeLnske24ucG9zaXRpb259fSR7cn1gOnIpO24ucGF0dGVybj1vLHQuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5wYXR0ZXJucz8/KGkucGF0dGVybnM9bmV3IFNldCksaS5wYXR0ZXJucy5hZGQobyl9KSx0Ll96b2QuY2hlY2s9ZT0+e2UudmFsdWUuaW5jbHVkZXMobi5pbmNsdWRlcyxuLnBvc2l0aW9uKXx8ZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJzdHJpbmciLGNvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIixpbmNsdWRlczpuLmluY2x1ZGVzLGlucHV0OmUudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksV2M9ZCgiJFpvZENoZWNrU3RhcnRzV2l0aCIsKHQsbik9PntxLmluaXQodCxuKTtjb25zdCByPW5ldyBSZWdFeHAoYF4ke3ZlKG4ucHJlZml4KX0uKmApO24ucGF0dGVybj8/KG4ucGF0dGVybj1yKSx0Ll96b2Qub25hdHRhY2gucHVzaChvPT57Y29uc3QgZT1vLl96b2QuYmFnO2UucGF0dGVybnM/PyhlLnBhdHRlcm5zPW5ldyBTZXQpLGUucGF0dGVybnMuYWRkKHIpfSksdC5fem9kLmNoZWNrPW89PntvLnZhbHVlLnN0YXJ0c1dpdGgobi5wcmVmaXgpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoic3RhcnRzX3dpdGgiLHByZWZpeDpuLnByZWZpeCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEdjPWQoIiRab2RDaGVja0VuZHNXaXRoIiwodCxuKT0+e3EuaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFJlZ0V4cChgLioke3ZlKG4uc3VmZml4KX0kYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXIpLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5wYXR0ZXJucz8/KGUucGF0dGVybnM9bmV3IFNldCksZS5wYXR0ZXJucy5hZGQocil9KSx0Ll96b2QuY2hlY2s9bz0+e28udmFsdWUuZW5kc1dpdGgobi5zdWZmaXgpfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiZW5kc193aXRoIixzdWZmaXg6bi5zdWZmaXgsaW5wdXQ6by52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KTtmdW5jdGlvbiBycyh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnVlKHIsdC5pc3N1ZXMpKX1jb25zdCBYYz1kKCIkWm9kQ2hlY2tQcm9wZXJ0eSIsKHQsbik9PntxLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89bi5zY2hlbWEuX3pvZC5ydW4oe3ZhbHVlOnIudmFsdWVbbi5wcm9wZXJ0eV0saXNzdWVzOltdfSx7fSk7aWYobyBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIG8udGhlbihlPT5ycyhlLHIsbi5wcm9wZXJ0eSkpO3JzKG8scixuLnByb3BlcnR5KX19KSxZYz1kKCIkWm9kQ2hlY2tNaW1lVHlwZSIsKHQsbik9PntxLmluaXQodCxuKTtjb25zdCByPW5ldyBTZXQobi5taW1lKTt0Ll96b2Qub25hdHRhY2gucHVzaChvPT57by5fem9kLmJhZy5taW1lPW4ubWltZX0pLHQuX3pvZC5jaGVjaz1vPT57ci5oYXMoby52YWx1ZS50eXBlKXx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsdmFsdWVzOm4ubWltZSxpbnB1dDpvLnZhbHVlLnR5cGUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksUWM9ZCgiJFpvZENoZWNrT3ZlcndyaXRlIiwodCxuKT0+e3EuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57ci52YWx1ZT1uLnR4KHIudmFsdWUpfX0pO2NsYXNzIGV1e2NvbnN0cnVjdG9yKG49W10pe3RoaXMuY29udGVudD1bXSx0aGlzLmluZGVudD0wLHRoaXMmJih0aGlzLmFyZ3M9bil9aW5kZW50ZWQobil7dGhpcy5pbmRlbnQrPTEsbih0aGlzKSx0aGlzLmluZGVudC09MX13cml0ZShuKXtpZih0eXBlb2Ygbj09ImZ1bmN0aW9uIil7bih0aGlzLHtleGVjdXRpb246InN5bmMifSksbih0aGlzLHtleGVjdXRpb246ImFzeW5jIn0pO3JldHVybn1jb25zdCBvPW4uc3BsaXQoYApgKS5maWx0ZXIoYT0+YSksZT1NYXRoLm1pbiguLi5vLm1hcChhPT5hLmxlbmd0aC1hLnRyaW1TdGFydCgpLmxlbmd0aCkpLGk9by5tYXAoYT0+YS5zbGljZShlKSkubWFwKGE9PiIgIi5yZXBlYXQodGhpcy5pbmRlbnQqMikrYSk7Zm9yKGNvbnN0IGEgb2YgaSl0aGlzLmNvbnRlbnQucHVzaChhKX1jb21waWxlKCl7Y29uc3Qgbj1GdW5jdGlvbixyPXRoaXM/LmFyZ3MsZT1bLi4uKHRoaXM/LmNvbnRlbnQ/P1siIl0pLm1hcChpPT5gICAke2l9YCldO3JldHVybiBuZXcgbiguLi5yLGUuam9pbihgCmApKX19Y29uc3QgdHU9e21ham9yOjQsbWlub3I6NCxwYXRjaDozfSxJPWQoIiRab2RUeXBlIiwodCxuKT0+e3ZhciByO3Q/Pyh0PXt9KSx0Ll96b2QuZGVmPW4sdC5fem9kLmJhZz10Ll96b2QuYmFnfHx7fSx0Ll96b2QudmVyc2lvbj10dTtjb25zdCBvPVsuLi50Ll96b2QuZGVmLmNoZWNrcz8/W11dO3QuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ2hlY2siKSYmby51bnNoaWZ0KHQpO2Zvcihjb25zdCBlIG9mIG8pZm9yKGNvbnN0IGkgb2YgZS5fem9kLm9uYXR0YWNoKWkodCk7aWYoby5sZW5ndGg9PT0wKShyPXQuX3pvZCkuZGVmZXJyZWQ/PyhyLmRlZmVycmVkPVtdKSx0Ll96b2QuZGVmZXJyZWQ/LnB1c2goKCk9Pnt0Ll96b2QucnVuPXQuX3pvZC5wYXJzZX0pO2Vsc2V7Y29uc3QgZT0oYSxzLGMpPT57bGV0IHU9emUoYSksbDtmb3IoY29uc3QgZyBvZiBzKXtpZihnLl96b2QuZGVmLndoZW4pe2lmKFdzKGEpfHwhZy5fem9kLmRlZi53aGVuKGEpKWNvbnRpbnVlfWVsc2UgaWYodSljb250aW51ZTtjb25zdCB2PWEuaXNzdWVzLmxlbmd0aCwkPWcuX3pvZC5jaGVjayhhKTtpZigkIGluc3RhbmNlb2YgUHJvbWlzZSYmYz8uYXN5bmM9PT0hMSl0aHJvdyBuZXcgeGU7aWYobHx8JCBpbnN0YW5jZW9mIFByb21pc2UpbD0obD8/UHJvbWlzZS5yZXNvbHZlKCkpLnRoZW4oYXN5bmMoKT0+e2F3YWl0ICQsYS5pc3N1ZXMubGVuZ3RoIT09diYmKHV8fCh1PXplKGEsdikpKX0pO2Vsc2V7aWYoYS5pc3N1ZXMubGVuZ3RoPT09diljb250aW51ZTt1fHwodT16ZShhLHYpKX19cmV0dXJuIGw/bC50aGVuKCgpPT5hKTphfSxpPShhLHMsYyk9PntpZih6ZShhKSlyZXR1cm4gYS5hYm9ydGVkPSEwLGE7Y29uc3QgdT1lKHMsbyxjKTtpZih1IGluc3RhbmNlb2YgUHJvbWlzZSl7aWYoYy5hc3luYz09PSExKXRocm93IG5ldyB4ZTtyZXR1cm4gdS50aGVuKGw9PnQuX3pvZC5wYXJzZShsLGMpKX1yZXR1cm4gdC5fem9kLnBhcnNlKHUsYyl9O3QuX3pvZC5ydW49KGEscyk9PntpZihzLnNraXBDaGVja3MpcmV0dXJuIHQuX3pvZC5wYXJzZShhLHMpO2lmKHMuZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgdT10Ll96b2QucGFyc2Uoe3ZhbHVlOmEudmFsdWUsaXNzdWVzOltdfSx7Li4ucyxza2lwQ2hlY2tzOiEwfSk7cmV0dXJuIHUgaW5zdGFuY2VvZiBQcm9taXNlP3UudGhlbihsPT5pKGwsYSxzKSk6aSh1LGEscyl9Y29uc3QgYz10Ll96b2QucGFyc2UoYSxzKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSl7aWYocy5hc3luYz09PSExKXRocm93IG5ldyB4ZTtyZXR1cm4gYy50aGVuKHU9PmUodSxvLHMpKX1yZXR1cm4gZShjLG8scyl9fVQodCwifnN0YW5kYXJkIiwoKT0+KHt2YWxpZGF0ZTplPT57dHJ5e2NvbnN0IGk9ZGkodCxlKTtyZXR1cm4gaS5zdWNjZXNzP3t2YWx1ZTppLmRhdGF9Ontpc3N1ZXM6aS5lcnJvcj8uaXNzdWVzfX1jYXRjaHtyZXR1cm4gZWModCxlKS50aGVuKGE9PmEuc3VjY2Vzcz97dmFsdWU6YS5kYXRhfTp7aXNzdWVzOmEuZXJyb3I/Lmlzc3Vlc30pfX0sdmVuZG9yOiJ6b2QiLHZlcnNpb246MX0pKX0pLFR0PWQoIiRab2RTdHJpbmciLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49Wy4uLnQ/Ll96b2QuYmFnPy5wYXR0ZXJucz8/W11dLnBvcCgpPz96Yyh0Ll96b2QuYmFnKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1TdHJpbmcoci52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2Ygci52YWx1ZT09InN0cmluZyJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyfX0pLEw9ZCgiJFpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9Pnt4dC5pbml0KHQsbiksVHQuaW5pdCh0LG4pfSksbnU9ZCgiJFpvZEdVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWNjKSxMLmluaXQodCxuKX0pLHJ1PWQoIiRab2RVVUlEIiwodCxuKT0+e2lmKG4udmVyc2lvbil7Y29uc3Qgbz17djE6MSx2MjoyLHYzOjMsdjQ6NCx2NTo1LHY2OjYsdjc6Nyx2ODo4fVtuLnZlcnNpb25dO2lmKG89PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVVSUQgdmVyc2lvbjogIiR7bi52ZXJzaW9ufSJgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49cWUobykpfWVsc2Ugbi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXFlKCkpO0wuaW5pdCh0LG4pfSksaXU9ZCgiJFpvZEVtYWlsIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj11YyksTC5pbml0KHQsbil9KSxvdT1kKCIkWm9kVVJMIiwodCxuKT0+e0wuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57dHJ5e2NvbnN0IG89ci52YWx1ZS50cmltKCk7aWYoIW4ubm9ybWFsaXplJiZuLnByb3RvY29sPy5zb3VyY2U9PT15aS5zb3VyY2UmJiEvXmh0dHBzPzpcL1wvL2kudGVzdChvKSl7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIFVSTCBmb3JtYXQiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSk7cmV0dXJufWNvbnN0IGU9bmV3IFVSTChvKTtuLmhvc3RuYW1lJiYobi5ob3N0bmFtZS5sYXN0SW5kZXg9MCxuLmhvc3RuYW1lLnRlc3QoZS5ob3N0bmFtZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBob3N0bmFtZSIscGF0dGVybjpuLmhvc3RuYW1lLnNvdXJjZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pKSxuLnByb3RvY29sJiYobi5wcm90b2NvbC5sYXN0SW5kZXg9MCxuLnByb3RvY29sLnRlc3QoZS5wcm90b2NvbC5lbmRzV2l0aCgiOiIpP2UucHJvdG9jb2wuc2xpY2UoMCwtMSk6ZS5wcm90b2NvbCl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsbm90ZToiSW52YWxpZCBwcm90b2NvbCIscGF0dGVybjpuLnByb3RvY29sLnNvdXJjZSxpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pKSxuLm5vcm1hbGl6ZT9yLnZhbHVlPWUuaHJlZjpyLnZhbHVlPW87cmV0dXJufWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6InVybCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSksYXU9ZCgiJFpvZEVtb2ppIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1kYygpKSxMLmluaXQodCxuKX0pLHN1PWQoIiRab2ROYW5vSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWFjKSxMLmluaXQodCxuKX0pLGN1PWQoIiRab2RDVUlEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj10YyksTC5pbml0KHQsbil9KSx1dT1kKCIkWm9kQ1VJRDIiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPW5jKSxMLmluaXQodCxuKX0pLGx1PWQoIiRab2RVTElEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1yYyksTC5pbml0KHQsbil9KSxkdT1kKCIkWm9kWElEIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1pYyksTC5pbml0KHQsbil9KSxtdT1kKCIkWm9kS1NVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPW9jKSxMLmluaXQodCxuKX0pLHB1PWQoIiRab2RJU09EYXRlVGltZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49SWMobikpLEwuaW5pdCh0LG4pfSksZnU9ZCgiJFpvZElTT0RhdGUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWtjKSxMLmluaXQodCxuKX0pLGd1PWQoIiRab2RJU09UaW1lIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj13YyhuKSksTC5pbml0KHQsbil9KSx2dT1kKCIkWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXNjKSxMLmluaXQodCxuKX0pLGh1PWQoIiRab2RJUHY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1tYyksTC5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9ImlwdjQifSksJHU9ZCgiJFpvZElQdjYiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXBjKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0iaXB2NiIsdC5fem9kLmNoZWNrPXI9Pnt0cnl7bmV3IFVSTChgaHR0cDovL1ske3IudmFsdWV9XWApfWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImlwdjYiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pLF91PWQoIiRab2RNQUMiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWZjKG4uZGVsaW1pdGVyKSksTC5pbml0KHQsbiksdC5fem9kLmJhZy5mb3JtYXQ9Im1hYyJ9KSxidT1kKCIkWm9kQ0lEUnY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1nYyksTC5pbml0KHQsbil9KSx5dT1kKCIkWm9kQ0lEUnY2IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj12YyksTC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pntjb25zdCBvPXIudmFsdWUuc3BsaXQoIi8iKTt0cnl7aWYoby5sZW5ndGghPT0yKXRocm93IG5ldyBFcnJvcjtjb25zdFtlLGldPW87aWYoIWkpdGhyb3cgbmV3IEVycm9yO2NvbnN0IGE9TnVtYmVyKGkpO2lmKGAke2F9YCE9PWkpdGhyb3cgbmV3IEVycm9yO2lmKGE8MHx8YT4xMjgpdGhyb3cgbmV3IEVycm9yO25ldyBVUkwoYGh0dHA6Ly9bJHtlfV1gKX1jYXRjaHtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJjaWRydjYiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fX0pO2Z1bmN0aW9uIElpKHQpe2lmKHQ9PT0iIilyZXR1cm4hMDtpZigvXHMvLnRlc3QodCl8fHQubGVuZ3RoJTQhPT0wKXJldHVybiExO3RyeXtyZXR1cm4gYXRvYih0KSwhMH1jYXRjaHtyZXR1cm4hMX19Y29uc3Qga3U9ZCgiJFpvZEJhc2U2NCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49aGMpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuY29udGVudEVuY29kaW5nPSJiYXNlNjQiLHQuX3pvZC5jaGVjaz1yPT57SWkoci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImJhc2U2NCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KTtmdW5jdGlvbiBTdSh0KXtpZighYmkudGVzdCh0KSlyZXR1cm4hMTtjb25zdCBuPXQucmVwbGFjZSgvWy1fXS9nLG89Pm89PT0iLSI/IisiOiIvIikscj1uLnBhZEVuZChNYXRoLmNlaWwobi5sZW5ndGgvNCkqNCwiPSIpO3JldHVybiBJaShyKX1jb25zdCB3dT1kKCIkWm9kQmFzZTY0VVJMIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1iaSksTC5pbml0KHQsbiksdC5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NHVybCIsdC5fem9kLmNoZWNrPXI9PntTdShyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0dXJsIixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEl1PWQoIiRab2RFMTY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1iYyksTC5pbml0KHQsbil9KTtmdW5jdGlvbiB6dSh0LG49bnVsbCl7dHJ5e2NvbnN0IHI9dC5zcGxpdCgiLiIpO2lmKHIubGVuZ3RoIT09MylyZXR1cm4hMTtjb25zdFtvXT1yO2lmKCFvKXJldHVybiExO2NvbnN0IGU9SlNPTi5wYXJzZShhdG9iKG8pKTtyZXR1cm4hKCJ0eXAiaW4gZSYmZT8udHlwIT09IkpXVCJ8fCFlLmFsZ3x8biYmKCEoImFsZyJpbiBlKXx8ZS5hbGchPT1uKSl9Y2F0Y2h7cmV0dXJuITF9fWNvbnN0IHh1PWQoIiRab2RKV1QiLCh0LG4pPT57TC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pnt6dShyLnZhbHVlLG4uYWxnKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiand0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFR1PWQoIiRab2RDdXN0b21TdHJpbmdGb3JtYXQiLCh0LG4pPT57TC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntuLmZuKHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0LGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksemk9ZCgiJFpvZE51bWJlciIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj10Ll96b2QuYmFnLnBhdHRlcm4/P2tpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPU51bWJlcihyLnZhbHVlKX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlO2lmKHR5cGVvZiBlPT0ibnVtYmVyIiYmIU51bWJlci5pc05hTihlKSYmTnVtYmVyLmlzRmluaXRlKGUpKXJldHVybiByO2NvbnN0IGk9dHlwZW9mIGU9PSJudW1iZXIiP051bWJlci5pc05hTihlKT8iTmFOIjpOdW1iZXIuaXNGaW5pdGUoZSk/dm9pZCAwOiJJbmZpbml0eSI6dm9pZCAwO3JldHVybiByLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibnVtYmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0LC4uLmk/e3JlY2VpdmVkOml9Ont9fSkscn19KSxqdT1kKCIkWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e1JjLmluaXQodCxuKSx6aS5pbml0KHQsbil9KSx4aT1kKCIkWm9kQm9vbGVhbiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1qYyx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT0hIXIudmFsdWV9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU9PSJib29sZWFuInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImJvb2xlYW4iLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLFRpPWQoIiRab2RCaWdJbnQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49eGMsdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9QmlnSW50KHIudmFsdWUpfWNhdGNoe31yZXR1cm4gdHlwZW9mIHIudmFsdWU9PSJiaWdpbnQifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYmlnaW50Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscn19KSxVdT1kKCIkWm9kQmlnSW50Rm9ybWF0IiwodCxuKT0+e0NjLmluaXQodCxuKSxUaS5pbml0KHQsbil9KSxQdT1kKCIkWm9kU3ltYm9sIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU9PSJzeW1ib2wifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoic3ltYm9sIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxPdT1kKCIkWm9kVW5kZWZpbmVkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPVBjLHQuX3pvZC52YWx1ZXM9bmV3IFNldChbdm9pZCAwXSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT4idSJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJ1bmRlZmluZWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLER1PWQoIiRab2ROdWxsIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPVVjLHQuX3pvZC52YWx1ZXM9bmV3IFNldChbbnVsbF0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gZT09PW51bGx8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudWxsIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxOdT1kKCIkWm9kQW55IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT1yPT5yfSksRXU9ZCgiJFpvZFVua25vd24iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPXI9PnJ9KSxadT1kKCIkWm9kTmV2ZXIiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT4oci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im5ldmVyIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnIudmFsdWUsaW5zdDp0fSkscil9KSxSdT1kKCIkWm9kVm9pZCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPiJ1Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InZvaWQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLEN1PWQoIiRab2REYXRlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPW5ldyBEYXRlKHIudmFsdWUpfWNhdGNoe31jb25zdCBlPXIudmFsdWUsaT1lIGluc3RhbmNlb2YgRGF0ZTtyZXR1cm4gaSYmIU51bWJlci5pc05hTihlLmdldFRpbWUoKSl8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJkYXRlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsLi4uaT97cmVjZWl2ZWQ6IkludmFsaWQgRGF0ZSJ9Ont9LGluc3Q6dH0pLHJ9fSk7ZnVuY3Rpb24gaXModCxuLHIpe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi51ZShyLHQuaXNzdWVzKSksbi52YWx1ZVtyXT10LnZhbHVlfWNvbnN0IEF1PWQoIiRab2RBcnJheSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJhcnJheSIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7ci52YWx1ZT1BcnJheShlLmxlbmd0aCk7Y29uc3QgaT1bXTtmb3IobGV0IGE9MDthPGUubGVuZ3RoO2ErKyl7Y29uc3Qgcz1lW2FdLGM9bi5lbGVtZW50Ll96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7YyBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKGMudGhlbih1PT5pcyh1LHIsYSkpKTppcyhjLHIsYSl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gT24odCxuLHIsbyxlLGkpe2NvbnN0IGE9ciBpbiBvO2lmKHQuaXNzdWVzLmxlbmd0aCl7aWYoZSYmaSYmIWEpcmV0dXJuO24uaXNzdWVzLnB1c2goLi4udWUocix0Lmlzc3VlcykpfWlmKCFhJiYhZSl7dC5pc3N1ZXMubGVuZ3RofHxuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dm9pZCAwLHBhdGg6W3JdfSk7cmV0dXJufXQudmFsdWU9PT12b2lkIDA/YSYmKG4udmFsdWVbcl09dm9pZCAwKTpuLnZhbHVlW3JdPXQudmFsdWV9ZnVuY3Rpb24gTHUodCl7Y29uc3Qgbj1PYmplY3Qua2V5cyh0LnNoYXBlKTtmb3IoY29uc3QgbyBvZiBuKWlmKCF0LnNoYXBlPy5bb10/Ll96b2Q/LnRyYWl0cz8uaGFzKCIkWm9kVHlwZSIpKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSAiJHtvfSI6IGV4cGVjdGVkIGEgWm9kIHNjaGVtYWApO2NvbnN0IHI9QXModC5zaGFwZSk7cmV0dXJuey4uLnQsa2V5czpuLGtleVNldDpuZXcgU2V0KG4pLG51bUtleXM6bi5sZW5ndGgsb3B0aW9uYWxLZXlzOm5ldyBTZXQocil9fWZ1bmN0aW9uIE11KHQsbixyLG8sZSxpKXtjb25zdCBhPVtdLHM9ZS5rZXlTZXQsYz1lLmNhdGNoYWxsLl96b2QsdT1jLmRlZi50eXBlLGw9Yy5vcHRpbj09PSJvcHRpb25hbCIsZz1jLm9wdG91dD09PSJvcHRpb25hbCI7Zm9yKGNvbnN0IHYgaW4gbil7aWYodj09PSJfX3Byb3RvX18ifHxzLmhhcyh2KSljb250aW51ZTtpZih1PT09Im5ldmVyIil7YS5wdXNoKHYpO2NvbnRpbnVlfWNvbnN0ICQ9Yy5ydW4oe3ZhbHVlOm5bdl0saXNzdWVzOltdfSxvKTskIGluc3RhbmNlb2YgUHJvbWlzZT90LnB1c2goJC50aGVuKHk9Pk9uKHkscix2LG4sbCxnKSkpOk9uKCQscix2LG4sbCxnKX1yZXR1cm4gYS5sZW5ndGgmJnIuaXNzdWVzLnB1c2goe2NvZGU6InVucmVjb2duaXplZF9rZXlzIixrZXlzOmEsaW5wdXQ6bixpbnN0Oml9KSx0Lmxlbmd0aD9Qcm9taXNlLmFsbCh0KS50aGVuKCgpPT5yKTpyfWNvbnN0IHF1PWQoIiRab2RPYmplY3QiLCh0LG4pPT57aWYoSS5pbml0KHQsbiksIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobiwic2hhcGUiKT8uZ2V0KXtjb25zdCBzPW4uc2hhcGU7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInNoYXBlIix7Z2V0OigpPT57Y29uc3QgYz17Li4uc307cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJzaGFwZSIse3ZhbHVlOmN9KSxjfX0pfWNvbnN0IG89YnQoKCk9Pkx1KG4pKTtUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pntjb25zdCBzPW4uc2hhcGUsYz17fTtmb3IoY29uc3QgdSBpbiBzKXtjb25zdCBsPXNbdV0uX3pvZDtpZihsLnZhbHVlcyl7Y1t1XT8/KGNbdV09bmV3IFNldCk7Zm9yKGNvbnN0IGcgb2YgbC52YWx1ZXMpY1t1XS5hZGQoZyl9fXJldHVybiBjfSk7Y29uc3QgZT1MZSxpPW4uY2F0Y2hhbGw7bGV0IGE7dC5fem9kLnBhcnNlPShzLGMpPT57YT8/KGE9by52YWx1ZSk7Y29uc3QgdT1zLnZhbHVlO2lmKCFlKHUpKXJldHVybiBzLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnUsaW5zdDp0fSkscztzLnZhbHVlPXt9O2NvbnN0IGw9W10sZz1hLnNoYXBlO2Zvcihjb25zdCB2IG9mIGEua2V5cyl7Y29uc3QgJD1nW3ZdLHk9JC5fem9kLm9wdGluPT09Im9wdGlvbmFsIixGPSQuX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiLFI9JC5fem9kLnJ1bih7dmFsdWU6dVt2XSxpc3N1ZXM6W119LGMpO1IgaW5zdGFuY2VvZiBQcm9taXNlP2wucHVzaChSLnRoZW4oUmU9Pk9uKFJlLHMsdix1LHksRikpKTpPbihSLHMsdix1LHksRil9cmV0dXJuIGk/TXUobCx1LHMsYyxvLnZhbHVlLHQpOmwubGVuZ3RoP1Byb21pc2UuYWxsKGwpLnRoZW4oKCk9PnMpOnN9fSksRnU9ZCgiJFpvZE9iamVjdEpJVCIsKHQsbik9PntxdS5pbml0KHQsbik7Y29uc3Qgcj10Ll96b2QucGFyc2Usbz1idCgoKT0+THUobikpLGU9dj0+e2NvbnN0ICQ9bmV3IGV1KFsic2hhcGUiLCJwYXlsb2FkIiwiY3R4Il0pLHk9by52YWx1ZSxGPUo9Pntjb25zdCBDPVhyKEopO3JldHVybmBzaGFwZVske0N9XS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFske0N9XSwgaXNzdWVzOiBbXSB9LCBjdHgpYH07JC53cml0ZSgiY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlOyIpO2NvbnN0IFI9T2JqZWN0LmNyZWF0ZShudWxsKTtsZXQgUmU9MDtmb3IoY29uc3QgSiBvZiB5LmtleXMpUltKXT1ga2V5XyR7UmUrK31gOyQud3JpdGUoImNvbnN0IG5ld1Jlc3VsdCA9IHt9OyIpO2Zvcihjb25zdCBKIG9mIHkua2V5cyl7Y29uc3QgQz1SW0pdLEI9WHIoSiksWWE9dltKXSxRYT1ZYT8uX3pvZD8ub3B0aW49PT0ib3B0aW9uYWwiLHdtPVlhPy5fem9kPy5vcHRvdXQ9PT0ib3B0aW9uYWwiOyQud3JpdGUoYGNvbnN0ICR7Q30gPSAke0YoSil9O2ApLFFhJiZ3bT8kLndyaXRlKGAKICAgICAgICBpZiAoJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBpZiAoJHtCfSBpbiBpbnB1dCkgewogICAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0N9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7Qn0sIC4uLmlzcy5wYXRoXSA6IFske0J9XQogICAgICAgICAgICB9KSkpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtDfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtCfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtCfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0J9XSA9ICR7Q30udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTpRYT8kLndyaXRlKGAKICAgICAgICBpZiAoJHtDfS5pc3N1ZXMubGVuZ3RoKSB7CiAgICAgICAgICBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke0N9Lmlzc3Vlcy5tYXAoaXNzID0+ICh7CiAgICAgICAgICAgIC4uLmlzcywKICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtCfSwgLi4uaXNzLnBhdGhdIDogWyR7Qn1dCiAgICAgICAgICB9KSkpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoJHtDfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBpZiAoJHtCfSBpbiBpbnB1dCkgewogICAgICAgICAgICBuZXdSZXN1bHRbJHtCfV0gPSB1bmRlZmluZWQ7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1Jlc3VsdFske0J9XSA9ICR7Q30udmFsdWU7CiAgICAgICAgfQogICAgICAgIAogICAgICBgKTokLndyaXRlKGAKICAgICAgICBjb25zdCAke0N9X3ByZXNlbnQgPSAke0J9IGluIGlucHV0OwogICAgICAgIGlmICgke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7Q30uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske0J9LCAuLi5pc3MucGF0aF0gOiBbJHtCfV0KICAgICAgICAgIH0pKSk7CiAgICAgICAgfQogICAgICAgIGlmICghJHtDfV9wcmVzZW50ICYmICEke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goewogICAgICAgICAgICBjb2RlOiAiaW52YWxpZF90eXBlIiwKICAgICAgICAgICAgZXhwZWN0ZWQ6ICJub25vcHRpb25hbCIsCiAgICAgICAgICAgIGlucHV0OiB1bmRlZmluZWQsCiAgICAgICAgICAgIHBhdGg6IFske0J9XQogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHtDfV9wcmVzZW50KSB7CiAgICAgICAgICBpZiAoJHtDfS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0J9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0J9XSA9ICR7Q30udmFsdWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgYCl9JC53cml0ZSgicGF5bG9hZC52YWx1ZSA9IG5ld1Jlc3VsdDsiKSwkLndyaXRlKCJyZXR1cm4gcGF5bG9hZDsiKTtjb25zdCBLPSQuY29tcGlsZSgpO3JldHVybihKLEMpPT5LKHYsSixDKX07bGV0IGk7Y29uc3QgYT1MZSxzPSFndC5qaXRsZXNzLHU9cyYmUnMudmFsdWUsbD1uLmNhdGNoYWxsO2xldCBnO3QuX3pvZC5wYXJzZT0odiwkKT0+e2c/PyhnPW8udmFsdWUpO2NvbnN0IHk9di52YWx1ZTtyZXR1cm4gYSh5KT9zJiZ1JiYkPy5hc3luYz09PSExJiYkLmppdGxlc3MhPT0hMD8oaXx8KGk9ZShuLnNoYXBlKSksdj1pKHYsJCksbD9NdShbXSx5LHYsJCxnLHQpOnYpOnIodiwkKToodi5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im9iamVjdCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDp5LGluc3Q6dH0pLHYpfX0pO2Z1bmN0aW9uIG9zKHQsbixyLG8pe2Zvcihjb25zdCBpIG9mIHQpaWYoaS5pc3N1ZXMubGVuZ3RoPT09MClyZXR1cm4gbi52YWx1ZT1pLnZhbHVlLG47Y29uc3QgZT10LmZpbHRlcihpPT4hemUoaSkpO3JldHVybiBlLmxlbmd0aD09PTE/KG4udmFsdWU9ZVswXS52YWx1ZSxlWzBdKToobi5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsaW5wdXQ6bi52YWx1ZSxpbnN0OnIsZXJyb3JzOnQubWFwKGk9PmkuaXNzdWVzLm1hcChhPT5vZShhLG8sVigpKSkpfSksbil9Y29uc3QgVm49ZCgiJFpvZFVuaW9uIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4ub3B0aW9ucy5zb21lKG89Pm8uX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpPyJvcHRpb25hbCI6dm9pZCAwKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vcHRpb25zLnNvbWUobz0+by5fem9kLm9wdG91dD09PSJvcHRpb25hbCIpPyJvcHRpb25hbCI6dm9pZCAwKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+e2lmKG4ub3B0aW9ucy5ldmVyeShvPT5vLl96b2QudmFsdWVzKSlyZXR1cm4gbmV3IFNldChuLm9wdGlvbnMuZmxhdE1hcChvPT5BcnJheS5mcm9tKG8uX3pvZC52YWx1ZXMpKSl9KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9PntpZihuLm9wdGlvbnMuZXZlcnkobz0+by5fem9kLnBhdHRlcm4pKXtjb25zdCBvPW4ub3B0aW9ucy5tYXAoZT0+ZS5fem9kLnBhdHRlcm4pO3JldHVybiBuZXcgUmVnRXhwKGBeKCR7by5tYXAoZT0+QW4oZS5zb3VyY2UpKS5qb2luKCJ8Iil9KSRgKX19KTtjb25zdCByPW4ub3B0aW9ucy5sZW5ndGg9PT0xP24ub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO3QuX3pvZC5wYXJzZT0obyxlKT0+e2lmKHIpcmV0dXJuIHIobyxlKTtsZXQgaT0hMTtjb25zdCBhPVtdO2Zvcihjb25zdCBzIG9mIG4ub3B0aW9ucyl7Y29uc3QgYz1zLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0sZSk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2UpYS5wdXNoKGMpLGk9ITA7ZWxzZXtpZihjLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBjO2EucHVzaChjKX19cmV0dXJuIGk/UHJvbWlzZS5hbGwoYSkudGhlbihzPT5vcyhzLG8sdCxlKSk6b3MoYSxvLHQsZSl9fSk7ZnVuY3Rpb24gYXModCxuLHIsbyl7Y29uc3QgZT10LmZpbHRlcihpPT5pLmlzc3Vlcy5sZW5ndGg9PT0wKTtyZXR1cm4gZS5sZW5ndGg9PT0xPyhuLnZhbHVlPWVbMF0udmFsdWUsbik6KGUubGVuZ3RoPT09MD9uLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6dC5tYXAoaT0+aS5pc3N1ZXMubWFwKGE9Pm9lKGEsbyxWKCkpKSl9KTpuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6W10saW5jbHVzaXZlOiExfSksbil9Y29uc3QgSnU9ZCgiJFpvZFhvciIsKHQsbik9PntWbi5pbml0KHQsbiksbi5pbmNsdXNpdmU9ITE7Y29uc3Qgcj1uLm9wdGlvbnMubGVuZ3RoPT09MT9uLm9wdGlvbnNbMF0uX3pvZC5ydW46bnVsbDt0Ll96b2QucGFyc2U9KG8sZSk9PntpZihyKXJldHVybiByKG8sZSk7bGV0IGk9ITE7Y29uc3QgYT1bXTtmb3IoY29uc3QgcyBvZiBuLm9wdGlvbnMpe2NvbnN0IGM9cy5fem9kLnJ1bih7dmFsdWU6by52YWx1ZSxpc3N1ZXM6W119LGUpO2MgaW5zdGFuY2VvZiBQcm9taXNlPyhhLnB1c2goYyksaT0hMCk6YS5wdXNoKGMpfXJldHVybiBpP1Byb21pc2UuYWxsKGEpLnRoZW4ocz0+YXMocyxvLHQsZSkpOmFzKGEsbyx0LGUpfX0pLEh1PWQoIiRab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57bi5pbmNsdXNpdmU9ITEsVm4uaW5pdCh0LG4pO2NvbnN0IHI9dC5fem9kLnBhcnNlO1QodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IGU9e307Zm9yKGNvbnN0IGkgb2Ygbi5vcHRpb25zKXtjb25zdCBhPWkuX3pvZC5wcm9wVmFsdWVzO2lmKCFhfHxPYmplY3Qua2V5cyhhKS5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtuLm9wdGlvbnMuaW5kZXhPZihpKX0iYCk7Zm9yKGNvbnN0W3MsY11vZiBPYmplY3QuZW50cmllcyhhKSl7ZVtzXXx8KGVbc109bmV3IFNldCk7Zm9yKGNvbnN0IHUgb2YgYyllW3NdLmFkZCh1KX19cmV0dXJuIGV9KTtjb25zdCBvPWJ0KCgpPT57Y29uc3QgZT1uLm9wdGlvbnMsaT1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IHM9YS5fem9kLnByb3BWYWx1ZXM/LltuLmRpc2NyaW1pbmF0b3JdO2lmKCFzfHxzLnNpemU9PT0wKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkaXNjcmltaW5hdGVkIHVuaW9uIG9wdGlvbiBhdCBpbmRleCAiJHtuLm9wdGlvbnMuaW5kZXhPZihhKX0iYCk7Zm9yKGNvbnN0IGMgb2Ygcyl7aWYoaS5oYXMoYykpdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSAiJHtTdHJpbmcoYyl9ImApO2kuc2V0KGMsYSl9fXJldHVybiBpfSk7dC5fem9kLnBhcnNlPShlLGkpPT57Y29uc3QgYT1lLnZhbHVlO2lmKCFMZShhKSlyZXR1cm4gZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDoib2JqZWN0IixpbnB1dDphLGluc3Q6dH0pLGU7Y29uc3Qgcz1vLnZhbHVlLmdldChhPy5bbi5kaXNjcmltaW5hdG9yXSk7cmV0dXJuIHM/cy5fem9kLnJ1bihlLGkpOm4udW5pb25GYWxsYmFja3x8aS5kaXJlY3Rpb249PT0iYmFja3dhcmQiP3IoZSxpKTooZS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF91bmlvbiIsZXJyb3JzOltdLG5vdGU6Ik5vIG1hdGNoaW5nIGRpc2NyaW1pbmF0b3IiLGRpc2NyaW1pbmF0b3I6bi5kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbShvLnZhbHVlLmtleXMoKSksaW5wdXQ6YSxwYXRoOltuLmRpc2NyaW1pbmF0b3JdLGluc3Q6dH0pLGUpfX0pLFZ1PWQoIiRab2RJbnRlcnNlY3Rpb24iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlLGk9bi5sZWZ0Ll96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbyksYT1uLnJpZ2h0Ll96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlfHxhIGluc3RhbmNlb2YgUHJvbWlzZT9Qcm9taXNlLmFsbChbaSxhXSkudGhlbigoW2MsdV0pPT5zcyhyLGMsdSkpOnNzKHIsaSxhKX19KTtmdW5jdGlvbiBlaSh0LG4pe2lmKHQ9PT1uKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKHQgaW5zdGFuY2VvZiBEYXRlJiZuIGluc3RhbmNlb2YgRGF0ZSYmK3Q9PStuKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKFRlKHQpJiZUZShuKSl7Y29uc3Qgcj1PYmplY3Qua2V5cyhuKSxvPU9iamVjdC5rZXlzKHQpLmZpbHRlcihpPT5yLmluZGV4T2YoaSkhPT0tMSksZT17Li4udCwuLi5ufTtmb3IoY29uc3QgaSBvZiBvKXtjb25zdCBhPWVpKHRbaV0sbltpXSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltpLC4uLmEubWVyZ2VFcnJvclBhdGhdfTtlW2ldPWEuZGF0YX1yZXR1cm57dmFsaWQ6ITAsZGF0YTplfX1pZihBcnJheS5pc0FycmF5KHQpJiZBcnJheS5pc0FycmF5KG4pKXtpZih0Lmxlbmd0aCE9PW4ubGVuZ3RoKXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX07Y29uc3Qgcj1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7Y29uc3QgZT10W29dLGk9bltvXSxhPWVpKGUsaSk7aWYoIWEudmFsaWQpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltvLC4uLmEubWVyZ2VFcnJvclBhdGhdfTtyLnB1c2goYS5kYXRhKX1yZXR1cm57dmFsaWQ6ITAsZGF0YTpyfX1yZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W119fWZ1bmN0aW9uIHNzKHQsbixyKXtjb25zdCBvPW5ldyBNYXA7bGV0IGU7Zm9yKGNvbnN0IHMgb2Ygbi5pc3N1ZXMpaWYocy5jb2RlPT09InVucmVjb2duaXplZF9rZXlzIil7ZT8/KGU9cyk7Zm9yKGNvbnN0IGMgb2Ygcy5rZXlzKW8uaGFzKGMpfHxvLnNldChjLHt9KSxvLmdldChjKS5sPSEwfWVsc2UgdC5pc3N1ZXMucHVzaChzKTtmb3IoY29uc3QgcyBvZiByLmlzc3VlcylpZihzLmNvZGU9PT0idW5yZWNvZ25pemVkX2tleXMiKWZvcihjb25zdCBjIG9mIHMua2V5cylvLmhhcyhjKXx8by5zZXQoYyx7fSksby5nZXQoYykucj0hMDtlbHNlIHQuaXNzdWVzLnB1c2gocyk7Y29uc3QgaT1bLi4ub10uZmlsdGVyKChbLHNdKT0+cy5sJiZzLnIpLm1hcCgoW3NdKT0+cyk7aWYoaS5sZW5ndGgmJmUmJnQuaXNzdWVzLnB1c2goey4uLmUsa2V5czppfSksemUodCkpcmV0dXJuIHQ7Y29uc3QgYT1laShuLnZhbHVlLHIudmFsdWUpO2lmKCFhLnZhbGlkKXRocm93IG5ldyBFcnJvcihgVW5tZXJnYWJsZSBpbnRlcnNlY3Rpb24uIEVycm9yIHBhdGg6ICR7SlNPTi5zdHJpbmdpZnkoYS5tZXJnZUVycm9yUGF0aCl9YCk7cmV0dXJuIHQudmFsdWU9YS5kYXRhLHR9Y29uc3Qgamk9ZCgiJFpvZFR1cGxlIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9bi5pdGVtczt0Ll96b2QucGFyc2U9KG8sZSk9Pntjb25zdCBpPW8udmFsdWU7aWYoIUFycmF5LmlzQXJyYXkoaSkpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2lucHV0OmksaW5zdDp0LGV4cGVjdGVkOiJ0dXBsZSIsY29kZToiaW52YWxpZF90eXBlIn0pLG87by52YWx1ZT1bXTtjb25zdCBhPVtdLHM9Y3Mociwib3B0aW4iKSxjPWNzKHIsIm9wdG91dCIpO2lmKCFuLnJlc3Qpe2lmKGkubGVuZ3RoPHMpcmV0dXJuIG8uaXNzdWVzLnB1c2goe2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpzLGluY2x1c2l2ZTohMCxpbnB1dDppLGluc3Q6dCxvcmlnaW46ImFycmF5In0pLG87aS5sZW5ndGg+ci5sZW5ndGgmJm8uaXNzdWVzLnB1c2goe2NvZGU6InRvb19iaWciLG1heGltdW06ci5sZW5ndGgsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDp0LG9yaWdpbjoiYXJyYXkifSl9Y29uc3QgdT1uZXcgQXJyYXkoci5sZW5ndGgpO2ZvcihsZXQgbD0wO2w8ci5sZW5ndGg7bCsrKXtjb25zdCBnPXJbbF0uX3pvZC5ydW4oe3ZhbHVlOmlbbF0saXNzdWVzOltdfSxlKTtnIGluc3RhbmNlb2YgUHJvbWlzZT9hLnB1c2goZy50aGVuKHY9Pnt1W2xdPXZ9KSk6dVtsXT1nfWlmKG4ucmVzdCl7bGV0IGw9ci5sZW5ndGgtMTtjb25zdCBnPWkuc2xpY2Uoci5sZW5ndGgpO2Zvcihjb25zdCB2IG9mIGcpe2wrKztjb25zdCAkPW4ucmVzdC5fem9kLnJ1bih7dmFsdWU6dixpc3N1ZXM6W119LGUpOyQgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaCgkLnRoZW4oeT0+dXMoeSxvLGwpKSk6dXMoJCxvLGwpfX1yZXR1cm4gYS5sZW5ndGg/UHJvbWlzZS5hbGwoYSkudGhlbigoKT0+bHModSxvLHIsaSxjKSk6bHModSxvLHIsaSxjKX19KTtmdW5jdGlvbiBjcyh0LG4pe2ZvcihsZXQgcj10Lmxlbmd0aC0xO3I+PTA7ci0tKWlmKHRbcl0uX3pvZFtuXSE9PSJvcHRpb25hbCIpcmV0dXJuIHIrMTtyZXR1cm4gMH1mdW5jdGlvbiB1cyh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnVlKHIsdC5pc3N1ZXMpKSxuLnZhbHVlW3JdPXQudmFsdWV9ZnVuY3Rpb24gbHModCxuLHIsbyxlKXtmb3IobGV0IGk9MDtpPHIubGVuZ3RoO2krKyl7Y29uc3QgYT10W2ldLHM9aTxvLmxlbmd0aDtpZihhLmlzc3Vlcy5sZW5ndGgpe2lmKCFzJiZpPj1lKXtuLnZhbHVlLmxlbmd0aD1pO2JyZWFrfW4uaXNzdWVzLnB1c2goLi4udWUoaSxhLmlzc3VlcykpfW4udmFsdWVbaV09YS52YWx1ZX1mb3IobGV0IGk9bi52YWx1ZS5sZW5ndGgtMTtpPj1vLmxlbmd0aCYmKHJbaV0uX3pvZC5vcHRvdXQ9PT0ib3B0aW9uYWwiJiZuLnZhbHVlW2ldPT09dm9pZCAwKTtpLS0pbi52YWx1ZS5sZW5ndGg9aTtyZXR1cm4gbn1jb25zdCBLdT1kKCIkWm9kUmVjb3JkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighVGUoZSkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJyZWNvcmQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO2NvbnN0IGk9W10sYT1uLmtleVR5cGUuX3pvZC52YWx1ZXM7aWYoYSl7ci52YWx1ZT17fTtjb25zdCBzPW5ldyBTZXQ7Zm9yKGNvbnN0IHUgb2YgYSlpZih0eXBlb2YgdT09InN0cmluZyJ8fHR5cGVvZiB1PT0ibnVtYmVyInx8dHlwZW9mIHU9PSJzeW1ib2wiKXtzLmFkZCh0eXBlb2YgdT09Im51bWJlciI/dS50b1N0cmluZygpOnUpO2NvbnN0IGw9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTp1LGlzc3VlczpbXX0sbyk7aWYobCBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYobC5pc3N1ZXMubGVuZ3RoKXtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpsLmlzc3Vlcy5tYXAoJD0+b2UoJCxvLFYoKSkpLGlucHV0OnUscGF0aDpbdV0saW5zdDp0fSk7Y29udGludWV9Y29uc3QgZz1sLnZhbHVlLHY9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmVbdV0saXNzdWVzOltdfSxvKTt2IGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2godi50aGVuKCQ9PnskLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4udWUodSwkLmlzc3VlcykpLHIudmFsdWVbZ109JC52YWx1ZX0pKToodi5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLnVlKHUsdi5pc3N1ZXMpKSxyLnZhbHVlW2ddPXYudmFsdWUpfWxldCBjO2Zvcihjb25zdCB1IGluIGUpcy5oYXModSl8fChjPWM/P1tdLGMucHVzaCh1KSk7YyYmYy5sZW5ndGg+MCYmci5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGlucHV0OmUsaW5zdDp0LGtleXM6Y30pfWVsc2V7ci52YWx1ZT17fTtmb3IoY29uc3QgcyBvZiBSZWZsZWN0Lm93bktleXMoZSkpe2lmKHM9PT0iX19wcm90b19fInx8IU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHMpKWNvbnRpbnVlO2xldCBjPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6cyxpc3N1ZXM6W119LG8pO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyBFcnJvcigiQXN5bmMgc2NoZW1hcyBub3Qgc3VwcG9ydGVkIGluIG9iamVjdCBrZXlzIGN1cnJlbnRseSIpO2lmKHR5cGVvZiBzPT0ic3RyaW5nIiYma2kudGVzdChzKSYmYy5pc3N1ZXMubGVuZ3RoKXtjb25zdCBnPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6TnVtYmVyKHMpLGlzc3VlczpbXX0sbyk7aWYoZyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7Zy5pc3N1ZXMubGVuZ3RoPT09MCYmKGM9Zyl9aWYoYy5pc3N1ZXMubGVuZ3RoKXtuLm1vZGU9PT0ibG9vc2UiP3IudmFsdWVbc109ZVtzXTpyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJyZWNvcmQiLGlzc3VlczpjLmlzc3Vlcy5tYXAoZz0+b2UoZyxvLFYoKSkpLGlucHV0OnMscGF0aDpbc10saW5zdDp0fSk7Y29udGludWV9Y29uc3QgbD1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZVtzXSxpc3N1ZXM6W119LG8pO2wgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChsLnRoZW4oZz0+e2cuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi51ZShzLGcuaXNzdWVzKSksci52YWx1ZVtjLnZhbHVlXT1nLnZhbHVlfSkpOihsLmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4udWUocyxsLmlzc3VlcykpLHIudmFsdWVbYy52YWx1ZV09bC52YWx1ZSl9fXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pLEJ1PWQoIiRab2RNYXAiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCEoZSBpbnN0YW5jZW9mIE1hcCkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJtYXAiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyO2NvbnN0IGk9W107ci52YWx1ZT1uZXcgTWFwO2Zvcihjb25zdFthLHNdb2YgZSl7Y29uc3QgYz1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmEsaXNzdWVzOltdfSxvKSx1PW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7YyBpbnN0YW5jZW9mIFByb21pc2V8fHUgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaChQcm9taXNlLmFsbChbYyx1XSkudGhlbigoW2wsZ10pPT57ZHMobCxnLHIsYSxlLHQsbyl9KSk6ZHMoYyx1LHIsYSxlLHQsbyl9cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSk7ZnVuY3Rpb24gZHModCxuLHIsbyxlLGksYSl7dC5pc3N1ZXMubGVuZ3RoJiYoUG4uaGFzKHR5cGVvZiBvKT9yLmlzc3Vlcy5wdXNoKC4uLnVlKG8sdC5pc3N1ZXMpKTpyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2tleSIsb3JpZ2luOiJtYXAiLGlucHV0OmUsaW5zdDppLGlzc3Vlczp0Lmlzc3Vlcy5tYXAocz0+b2UocyxhLFYoKSkpfSkpLG4uaXNzdWVzLmxlbmd0aCYmKFBuLmhhcyh0eXBlb2Ygbyk/ci5pc3N1ZXMucHVzaCguLi51ZShvLG4uaXNzdWVzKSk6ci5pc3N1ZXMucHVzaCh7b3JpZ2luOiJtYXAiLGNvZGU6ImludmFsaWRfZWxlbWVudCIsaW5wdXQ6ZSxpbnN0Omksa2V5Om8saXNzdWVzOm4uaXNzdWVzLm1hcChzPT5vZShzLGEsVigpKSl9KSksci52YWx1ZS5zZXQodC52YWx1ZSxuLnZhbHVlKX1jb25zdCBXdT1kKCIkWm9kU2V0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighKGUgaW5zdGFuY2VvZiBTZXQpKXJldHVybiByLmlzc3Vlcy5wdXNoKHtpbnB1dDplLGluc3Q6dCxleHBlY3RlZDoic2V0Iixjb2RlOiJpbnZhbGlkX3R5cGUifSkscjtjb25zdCBpPVtdO3IudmFsdWU9bmV3IFNldDtmb3IoY29uc3QgYSBvZiBlKXtjb25zdCBzPW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTphLGlzc3VlczpbXX0sbyk7cyBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKHMudGhlbihjPT5tcyhjLHIpKSk6bXMocyxyKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBtcyh0LG4pe3QuaXNzdWVzLmxlbmd0aCYmbi5pc3N1ZXMucHVzaCguLi50Lmlzc3Vlcyksbi52YWx1ZS5hZGQodC52YWx1ZSl9Y29uc3QgR3U9ZCgiJFpvZEVudW0iLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1vaShuLmVudHJpZXMpLG89bmV3IFNldChyKTt0Ll96b2QudmFsdWVzPW8sdC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXigke3IuZmlsdGVyKGU9PlBuLmhhcyh0eXBlb2YgZSkpLm1hcChlPT50eXBlb2YgZT09InN0cmluZyI/dmUoZSk6ZS50b1N0cmluZygpKS5qb2luKCJ8Iil9KSRgKSx0Ll96b2QucGFyc2U9KGUsaSk9Pntjb25zdCBhPWUudmFsdWU7cmV0dXJuIG8uaGFzKGEpfHxlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6cixpbnB1dDphLGluc3Q6dH0pLGV9fSksWHU9ZCgiJFpvZExpdGVyYWwiLCh0LG4pPT57aWYoSS5pbml0KHQsbiksbi52YWx1ZXMubGVuZ3RoPT09MCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjcmVhdGUgbGl0ZXJhbCBzY2hlbWEgd2l0aCBubyB2YWxpZCB2YWx1ZXMiKTtjb25zdCByPW5ldyBTZXQobi52YWx1ZXMpO3QuX3pvZC52YWx1ZXM9cix0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeKCR7bi52YWx1ZXMubWFwKG89PnR5cGVvZiBvPT0ic3RyaW5nIj92ZShvKTpvP3ZlKG8udG9TdHJpbmcoKSk6U3RyaW5nKG8pKS5qb2luKCJ8Iil9KSRgKSx0Ll96b2QucGFyc2U9KG8sZSk9Pntjb25zdCBpPW8udmFsdWU7cmV0dXJuIHIuaGFzKGkpfHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6bi52YWx1ZXMsaW5wdXQ6aSxpbnN0OnR9KSxvfX0pLFl1PWQoIiRab2RGaWxlIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gZSBpbnN0YW5jZW9mIEZpbGV8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJmaWxlIixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscn19KSxRdT1kKCIkWm9kVHJhbnNmb3JtIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgQ24odC5jb25zdHJ1Y3Rvci5uYW1lKTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7aWYoby5hc3luYylyZXR1cm4oZSBpbnN0YW5jZW9mIFByb21pc2U/ZTpQcm9taXNlLnJlc29sdmUoZSkpLnRoZW4oYT0+KHIudmFsdWU9YSxyLmZhbGxiYWNrPSEwLHIpKTtpZihlIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgeGU7cmV0dXJuIHIudmFsdWU9ZSxyLmZhbGxiYWNrPSEwLHJ9fSk7ZnVuY3Rpb24gcHModCxuKXtyZXR1cm4gbj09PXZvaWQgMCYmKHQuaXNzdWVzLmxlbmd0aHx8dC5mYWxsYmFjayk/e2lzc3VlczpbXSx2YWx1ZTp2b2lkIDB9OnR9Y29uc3QgVWk9ZCgiJFpvZE9wdGlvbmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLHQuX3pvZC5vcHRvdXQ9Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXM/bmV3IFNldChbLi4ubi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsdm9pZCAwXSk6dm9pZCAwKSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QucGF0dGVybjtyZXR1cm4gcj9uZXcgUmVnRXhwKGBeKCR7QW4oci5zb3VyY2UpfSk/JGApOnZvaWQgMH0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uaW5uZXJUeXBlLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiKXtjb25zdCBlPXIudmFsdWUsaT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+cHMoYSxlKSk6cHMoaSxlKX1yZXR1cm4gci52YWx1ZT09PXZvaWQgMD9yOm4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9fSksZWw9ZCgiJFpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57VWkuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT5uLmlubmVyVHlwZS5fem9kLnBhdHRlcm4pLHQuX3pvZC5wYXJzZT0ocixvKT0+bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLHRsPWQoIiRab2ROdWxsYWJsZSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiByP25ldyBSZWdFeHAoYF4oJHtBbihyLnNvdXJjZSl9fG51bGwpJGApOnZvaWQgMH0pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyxudWxsXSk6dm9pZCAwKSx0Ll96b2QucGFyc2U9KHIsbyk9PnIudmFsdWU9PT1udWxsP3I6bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLG5sPWQoIiRab2REZWZhdWx0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2lmKHIudmFsdWU9PT12b2lkIDApcmV0dXJuIHIudmFsdWU9bi5kZWZhdWx0VmFsdWUscjtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT5mcyhpLG4pKTpmcyhlLG4pfX0pO2Z1bmN0aW9uIGZzKHQsbil7cmV0dXJuIHQudmFsdWU9PT12b2lkIDAmJih0LnZhbHVlPW4uZGVmYXVsdFZhbHVlKSx0fWNvbnN0IHJsPWQoIiRab2RQcmVmYXVsdCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+KG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkInx8ci52YWx1ZT09PXZvaWQgMCYmKHIudmFsdWU9bi5kZWZhdWx0VmFsdWUpLG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbykpfSksaWw9ZCgiJFpvZE5vbk9wdGlvbmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnZhbHVlcztyZXR1cm4gcj9uZXcgU2V0KFsuLi5yXS5maWx0ZXIobz0+byE9PXZvaWQgMCkpOnZvaWQgMH0pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PmdzKGksdCkpOmdzKGUsdCl9fSk7ZnVuY3Rpb24gZ3ModCxuKXtyZXR1cm4hdC5pc3N1ZXMubGVuZ3RoJiZ0LnZhbHVlPT09dm9pZCAwJiZ0Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJub25vcHRpb25hbCIsaW5wdXQ6dC52YWx1ZSxpbnN0Om59KSx0fWNvbnN0IG9sPWQoIiRab2RTdWNjZXNzIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgQ24oIlpvZFN1Y2Nlc3MiKTtjb25zdCBlPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLmlzc3Vlcy5sZW5ndGg9PT0wLHIpKTooci52YWx1ZT1lLmlzc3Vlcy5sZW5ndGg9PT0wLHIpfX0pLGFsPWQoIiRab2RDYXRjaCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2Qub3B0aW49Im9wdGlvbmFsIixUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWkudmFsdWUsaS5pc3N1ZXMubGVuZ3RoJiYoci52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnIsZXJyb3I6e2lzc3VlczppLmlzc3Vlcy5tYXAoYT0+b2UoYSxvLFYoKSkpfSxpbnB1dDpyLnZhbHVlfSksci5pc3N1ZXM9W10sci5mYWxsYmFjaz0hMCkscikpOihyLnZhbHVlPWUudmFsdWUsZS5pc3N1ZXMubGVuZ3RoJiYoci52YWx1ZT1uLmNhdGNoVmFsdWUoey4uLnIsZXJyb3I6e2lzc3VlczplLmlzc3Vlcy5tYXAoaT0+b2UoaSxvLFYoKSkpfSxpbnB1dDpyLnZhbHVlfSksci5pc3N1ZXM9W10sci5mYWxsYmFjaz0hMCkscil9fSksc2w9ZCgiJFpvZE5hTiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PigodHlwZW9mIHIudmFsdWUhPSJudW1iZXIifHwhTnVtYmVyLmlzTmFOKHIudmFsdWUpKSYmci5pc3N1ZXMucHVzaCh7aW5wdXQ6ci52YWx1ZSxpbnN0OnQsZXhwZWN0ZWQ6Im5hbiIsY29kZToiaW52YWxpZF90eXBlIn0pLHIpfSksUGk9ZCgiJFpvZFBpcGUiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW4uX3pvZC52YWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW4uX3pvZC5vcHRpbiksVCh0Ll96b2QsIm9wdG91dCIsKCk9Pm4ub3V0Ll96b2Qub3B0b3V0KSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW4uX3pvZC5wcm9wVmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpe2NvbnN0IGk9bi5vdXQuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PlNuKGEsbi5pbixvKSk6U24oaSxuLmluLG8pfWNvbnN0IGU9bi5pbi5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+U24oaSxuLm91dCxvKSk6U24oZSxuLm91dCxvKX19KTtmdW5jdGlvbiBTbih0LG4scil7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8odC5hYm9ydGVkPSEwLHQpOm4uX3pvZC5ydW4oe3ZhbHVlOnQudmFsdWUsaXNzdWVzOnQuaXNzdWVzLGZhbGxiYWNrOnQuZmFsbGJhY2t9LHIpfWNvbnN0IE9pPWQoIiRab2RDb2RlYyIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbi5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbi5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vdXQuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbi5fem9kLnByb3BWYWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKChvLmRpcmVjdGlvbnx8ImZvcndhcmQiKT09PSJmb3J3YXJkIil7Y29uc3QgaT1uLmluLl96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT53bihhLG4sbykpOnduKGksbixvKX1lbHNle2NvbnN0IGk9bi5vdXQuX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PnduKGEsbixvKSk6d24oaSxuLG8pfX19KTtmdW5jdGlvbiB3bih0LG4scil7aWYodC5pc3N1ZXMubGVuZ3RoKXJldHVybiB0LmFib3J0ZWQ9ITAsdDtpZigoci5kaXJlY3Rpb258fCJmb3J3YXJkIik9PT0iZm9yd2FyZCIpe2NvbnN0IGU9bi50cmFuc2Zvcm0odC52YWx1ZSx0KTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PkluKHQsaSxuLm91dCxyKSk6SW4odCxlLG4ub3V0LHIpfWVsc2V7Y29uc3QgZT1uLnJldmVyc2VUcmFuc2Zvcm0odC52YWx1ZSx0KTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PkluKHQsaSxuLmluLHIpKTpJbih0LGUsbi5pbixyKX19ZnVuY3Rpb24gSW4odCxuLHIsbyl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD8odC5hYm9ydGVkPSEwLHQpOnIuX3pvZC5ydW4oe3ZhbHVlOm4saXNzdWVzOnQuaXNzdWVzfSxvKX1jb25zdCBjbD1kKCIkWm9kUHJlcHJvY2VzcyIsKHQsbik9PntQaS5pbml0KHQsbil9KSx1bD1kKCIkWm9kUmVhZG9ubHkiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dCksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXJldHVybiBuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKHZzKTp2cyhlKX19KTtmdW5jdGlvbiB2cyh0KXtyZXR1cm4gdC52YWx1ZT1PYmplY3QuZnJlZXplKHQudmFsdWUpLHR9Y29uc3QgbGw9ZCgiJFpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPVtdO2Zvcihjb25zdCBvIG9mIG4ucGFydHMpaWYodHlwZW9mIG89PSJvYmplY3QiJiZvIT09bnVsbCl7aWYoIW8uX3pvZC5wYXR0ZXJuKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQsIG5vIHBhdHRlcm4gZm91bmQ6ICR7Wy4uLm8uX3pvZC50cmFpdHNdLnNoaWZ0KCl9YCk7Y29uc3QgZT1vLl96b2QucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cD9vLl96b2QucGF0dGVybi5zb3VyY2U6by5fem9kLnBhdHRlcm47aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtvLl96b2QudHJhaXRzfWApO2NvbnN0IGk9ZS5zdGFydHNXaXRoKCJeIik/MTowLGE9ZS5lbmRzV2l0aCgiJCIpP2UubGVuZ3RoLTE6ZS5sZW5ndGg7ci5wdXNoKGUuc2xpY2UoaSxhKSl9ZWxzZSBpZihvPT09bnVsbHx8Q3MuaGFzKHR5cGVvZiBvKSlyLnB1c2godmUoYCR7b31gKSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke299YCk7dC5fem9kLnBhdHRlcm49bmV3IFJlZ0V4cChgXiR7ci5qb2luKCIiKX0kYCksdC5fem9kLnBhcnNlPShvLGUpPT50eXBlb2Ygby52YWx1ZSE9InN0cmluZyI/KG8uaXNzdWVzLnB1c2goe2lucHV0Om8udmFsdWUsaW5zdDp0LGV4cGVjdGVkOiJzdHJpbmciLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxvKToodC5fem9kLnBhdHRlcm4ubGFzdEluZGV4PTAsdC5fem9kLnBhdHRlcm4udGVzdChvLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7aW5wdXQ6by52YWx1ZSxpbnN0OnQsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDpuLmZvcm1hdD8/InRlbXBsYXRlX2xpdGVyYWwiLHBhdHRlcm46dC5fem9kLnBhdHRlcm4uc291cmNlfSksbyl9KSxkbD1kKCIkWm9kRnVuY3Rpb24iLCh0LG4pPT4oSS5pbml0KHQsbiksdC5fZGVmPW4sdC5fem9kLmRlZj1uLHQuaW1wbGVtZW50PXI9PntpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoImltcGxlbWVudCgpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBmdW5jdGlvbiguLi5vKXtjb25zdCBlPXQuX2RlZi5pbnB1dD9Zcih0Ll9kZWYuaW5wdXQsbyk6byxpPVJlZmxlY3QuYXBwbHkocix0aGlzLGUpO3JldHVybiB0Ll9kZWYub3V0cHV0P1lyKHQuX2RlZi5vdXRwdXQsaSk6aX19LHQuaW1wbGVtZW50QXN5bmM9cj0+e2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50QXN5bmMoKSBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVuY3Rpb24iKTtyZXR1cm4gYXN5bmMgZnVuY3Rpb24oLi4ubyl7Y29uc3QgZT10Ll9kZWYuaW5wdXQ/YXdhaXQgUXIodC5fZGVmLmlucHV0LG8pOm8saT1hd2FpdCBSZWZsZWN0LmFwcGx5KHIsdGhpcyxlKTtyZXR1cm4gdC5fZGVmLm91dHB1dD9hd2FpdCBRcih0Ll9kZWYub3V0cHV0LGkpOml9fSx0Ll96b2QucGFyc2U9KHIsbyk9PnR5cGVvZiByLnZhbHVlIT0iZnVuY3Rpb24iPyhyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJmdW5jdGlvbiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyKToodC5fZGVmLm91dHB1dCYmdC5fZGVmLm91dHB1dC5fem9kLmRlZi50eXBlPT09InByb21pc2UiP3IudmFsdWU9dC5pbXBsZW1lbnRBc3luYyhyLnZhbHVlKTpyLnZhbHVlPXQuaW1wbGVtZW50KHIudmFsdWUpLHIpLHQuaW5wdXQ9KC4uLnIpPT57Y29uc3Qgbz10LmNvbnN0cnVjdG9yO3JldHVybiBBcnJheS5pc0FycmF5KHJbMF0pP25ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6bmV3IGppKHt0eXBlOiJ0dXBsZSIsaXRlbXM6clswXSxyZXN0OnJbMV19KSxvdXRwdXQ6dC5fZGVmLm91dHB1dH0pOm5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6clswXSxvdXRwdXQ6dC5fZGVmLm91dHB1dH0pfSx0Lm91dHB1dD1yPT57Y29uc3Qgbz10LmNvbnN0cnVjdG9yO3JldHVybiBuZXcgbyh7dHlwZToiZnVuY3Rpb24iLGlucHV0OnQuX2RlZi5pbnB1dCxvdXRwdXQ6cn0pfSx0KSksbWw9ZCgiJFpvZFByb21pc2UiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT5Qcm9taXNlLnJlc29sdmUoci52YWx1ZSkudGhlbihlPT5uLmlubmVyVHlwZS5fem9kLnJ1bih7dmFsdWU6ZSxpc3N1ZXM6W119LG8pKX0pLHBsPWQoIiRab2RMYXp5IiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJpbm5lclR5cGUiLCgpPT57Y29uc3Qgcj1uO3JldHVybiByLl9jYWNoZWRJbm5lcnx8KHIuX2NhY2hlZElubmVyPW4uZ2V0dGVyKCkpLHIuX2NhY2hlZElubmVyfSksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5wYXR0ZXJuKSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnByb3BWYWx1ZXMpLFQodC5fem9kLCJvcHRpbiIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdGluPz92b2lkIDApLFQodC5fem9kLCJvcHRvdXQiLCgpPT50Ll96b2QuaW5uZXJUeXBlPy5fem9kPy5vcHRvdXQ/P3ZvaWQgMCksdC5fem9kLnBhcnNlPShyLG8pPT50Ll96b2QuaW5uZXJUeXBlLl96b2QucnVuKHIsbyl9KSxmbD1kKCIkWm9kQ3VzdG9tIiwodCxuKT0+e3EuaW5pdCh0LG4pLEkuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+cix0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZSxlPW4uZm4obyk7aWYoZSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIGUudGhlbihpPT5ocyhpLHIsbyx0KSk7aHMoZSxyLG8sdCl9fSk7ZnVuY3Rpb24gaHModCxuLHIsbyl7aWYoIXQpe2NvbnN0IGU9e2NvZGU6ImN1c3RvbSIsaW5wdXQ6cixpbnN0Om8scGF0aDpbLi4uby5fem9kLmRlZi5wYXRoPz9bXV0sY29udGludWU6IW8uX3pvZC5kZWYuYWJvcnR9O28uX3pvZC5kZWYucGFyYW1zJiYoZS5wYXJhbXM9by5fem9kLmRlZi5wYXJhbXMpLG4uaXNzdWVzLnB1c2goTWUoZSkpfX1jb25zdCBJcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2K3YsdmBIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn0sZmlsZTp7dW5pdDoi2KjYp9mK2KoiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxhcnJheTp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxzZXQ6e3VuaXQ6Iti52YbYtdixIix2ZXJiOiLYo9mGINmK2K3ZiNmKIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmF2K/YrtmEIixlbWFpbDoi2KjYsdmK2K8g2KXZhNmD2KrYsdmI2YbZiiIsdXJsOiLYsdin2KjYtyIsZW1vamk6Itil2YrZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2KrYp9ix2YrYriDZiNmI2YLYqiDYqNmF2LnZitin2LEgSVNPIixkYXRlOiLYqtin2LHZitiuINio2YXYudmK2KfYsSBJU08iLHRpbWU6ItmI2YLYqiDYqNmF2LnZitin2LEgSVNPIixkdXJhdGlvbjoi2YXYr9ipINio2YXYudmK2KfYsSBJU08iLGlwdjQ6Iti52YbZiNin2YYgSVB2NCIsaXB2Njoi2LnZhtmI2KfZhiBJUHY2IixjaWRydjQ6ItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY0IixjaWRydjY6ItmF2K/ZiSDYudmG2KfZiNmK2YYg2KjYtdmK2LrYqSBJUHY2IixiYXNlNjQ6ItmG2Y7YtSDYqNiq2LHZhdmK2LIgYmFzZTY0LWVuY29kZWQiLGJhc2U2NHVybDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjR1cmwtZW5jb2RlZCIsanNvbl9zdHJpbmc6ItmG2Y7YtSDYudmE2Ykg2YfZitim2KkgSlNPTiIsZTE2NDoi2LHZgtmFINmH2KfYqtmBINio2YXYudmK2KfYsSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmF2K/YrtmEIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3YjCDZiNmE2YPZhiDYqtmFINil2K/Yrtin2YQgJHtzfWA6YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtpfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEICR7ayhlLnZhbHVlc1swXSl9YDpg2KfYrtiq2YrYp9ixINi62YrYsSDZhdmC2KjZiNmEOiDZitiq2YjZgti5INin2YbYqtmC2KfYoSDYo9it2K8g2YfYsNmHINin2YTYrtmK2KfYsdin2Ko6ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Ag2KPZg9io2LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2KPZhiDYqtmD2YjZhiAke2Uub3JpZ2luPz8i2KfZhNmC2YrZhdipIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdixIn1gOmDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KPYtdi62LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2YTZgCAke2Uub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg2KPYtdi62LEg2YXZhiDYp9mE2YTYp9iy2YU6INmK2YHYqtix2LYg2YTZgCAke2Uub3JpZ2lufSDYo9mGINmK2YPZiNmGICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitio2K/YoyDYqNmAICIke2UucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNmG2Y7YtSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZhtiq2YfZiiDYqNmAICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitiq2LbZhdmR2Y7ZhiAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZiti32KfYqNmCINin2YTZhtmF2LcgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INi62YrYsSDZhdmC2KjZiNmEYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNix2YLZhSDYutmK2LEg2YXZgtio2YjZhDog2YrYrNioINij2YYg2YrZg9mI2YYg2YXZhiDZhdi22KfYudmB2KfYqiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDZhdi52LHZgSR7ZS5rZXlzLmxlbmd0aD4xPyLYp9iqIjoiIn0g2LrYsdmK2Kgke2Uua2V5cy5sZW5ndGg+MT8i2KkiOiIifTogJHtfKGUua2V5cywi2IwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YXYudix2YEg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQg2YHZiiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i2YXYr9iu2YQg2LrZitixINmF2YLYqNmI2YQifX19O2Z1bmN0aW9uIHpwKCl7cmV0dXJue2xvY2FsZUVycm9yOklwKCl9fWNvbnN0IHhwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJzaW12b2wiLHZlcmI6Im9sbWFsxLFkxLFyIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsWTEsXIifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoib2xtYWzEsWTEsXIifSxzZXQ6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6Im9sbWFsxLFkxLFyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiZW1haWwgYWRkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGV0aW1lIixkYXRlOiJJU08gZGF0ZSIsdGltZToiSVNPIHRpbWUiLGR1cmF0aW9uOiJJU08gZHVyYXRpb24iLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IG51bWJlciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRheGlsIG9sYW4gJHtzfWA6YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtpfSwgZGF4aWwgb2xhbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluICR7ayhlLnZhbHVlc1swXSl9YDpgWWFubMSxxZ8gc2XDp2ltOiBhxZ9hxJ/EsWRha8SxbGFyZGFuIGJpcmkgb2xtYWzEsWTEsXI6ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh294IGLDtnnDvGs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbj8/ImTJmXnJmXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50In1gOmDDh294IGLDtnnDvGs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbj8/ImTJmXnJmXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgw4dveCBracOnaWs6IGfDtnpsyZluaWzJmW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLnByZWZpeH0iIGlsyZkgYmHFn2xhbWFsxLFkxLFyYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BZYW5sxLHFnyBtyZl0bjogIiR7aS5zdWZmaXh9IiBpbMmZIGJpdG3JmWxpZGlyYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLmluY2x1ZGVzfSIgZGF4aWwgb2xtYWzEsWTEsXJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gWWFubMSxxZ8gbcmZdG46ICR7aS5wYXR0ZXJufSDFn2FibG9udW5hIHV5xJ91biBvbG1hbMSxZMSxcmA6YFlhbmzEscWfICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBZYW5sxLHFnyDJmWTJmWQ6ICR7ZS5kaXZpc29yfSBpbMmZIGLDtmzDvG7JmSBiaWzJmW4gb2xtYWzEsWTEsXJgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhw6dhciR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBkYXhpbGluZMmZIHlhbmzEscWfIGHDp2FyYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJZYW5sxLHFnyBkyZl5yZlyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gZMmZecmZcmA7ZGVmYXVsdDpyZXR1cm4iWWFubMSxxZ8gZMmZecmZciJ9fX07ZnVuY3Rpb24gVHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6eHAoKX19ZnVuY3Rpb24gJHModCxuLHIsbyl7Y29uc3QgZT1NYXRoLmFicyh0KSxpPWUlMTAsYT1lJTEwMDtyZXR1cm4gYT49MTEmJmE8PTE5P286aT09PTE/bjppPj0yJiZpPD00P3I6b31jb25zdCBqcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLRgdGW0LzQstCw0LsiLGZldzoi0YHRltC80LLQsNC70YsiLG1hbnk6ItGB0ZbQvNCy0LDQu9Cw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9LGFycmF5Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0YsiLG1hbnk6ItGN0LvQtdC80LXQvdGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0YsiLG1hbnk6ItGN0LvQtdC80LXQvdGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtGLIixtYW55OiLQsdCw0LnRgtCw0Z4ifSx2ZXJiOiLQvNC10YbRjCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLRg9Cy0L7QtCIsZW1haWw6ImVtYWlsINCw0LTRgNCw0YEiLHVybDoiVVJMIixlbW9qaToi0Y3QvNC+0LTQt9GWIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LTQsNGC0LAg0ZYg0YfQsNGBIixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDRh9Cw0YEiLGR1cmF0aW9uOiJJU08g0L/RgNCw0YbRj9Cz0LvQsNGB0YbRjCIsaXB2NDoiSVB2NCDQsNC00YDQsNGBIixpcHY2OiJJUHY2INCw0LTRgNCw0YEiLGNpZHJ2NDoiSVB2NCDQtNGL0Y/Qv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTRi9GP0L/QsNC30L7QvSIsYmFzZTY0OiLRgNCw0LTQvtC6INGDINGE0LDRgNC80LDRhtC1IGJhc2U2NCIsYmFzZTY0dXJsOiLRgNCw0LTQvtC6INGDINGE0LDRgNC80LDRhtC1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IkpTT04g0YDQsNC00L7QuiIsZTE2NDoi0L3Rg9C80LDRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItGD0LLQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0LvRltC6IixhcnJheToi0LzQsNGB0ZbRniJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNGe0YHRjyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINCw0YLRgNGL0LzQsNC90LAgJHtzfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0Z7RgdGPICR7aX0sINCw0YLRgNGL0LzQsNC90LAgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDQu9Cw0YHRjyAke2soZS52YWx1ZXNbMF0pfWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LLQsNGA0YvRj9C90YI6INGH0LDQutCw0Z7RgdGPINCw0LTQt9GW0L0g0LcgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPSRzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LLRj9C70ZbQutGWOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0Y3QvdC90LUifSDQv9Cw0LLRltC90L3QsCAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPSRzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0JfQsNC90LDQtNGC0LAg0LzQsNC70Ys6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2lufSDQv9Cw0LLRltC90L3QsCAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwINCx0YvRhtGMICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC/0LDRh9GL0L3QsNGG0YbQsCDQtyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INC30LDQutCw0L3Rh9Cy0LDRhtGG0LAg0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQvNGP0YjRh9Cw0YbRjCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQsNC00L/QsNCy0Y/QtNCw0YbRjCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndGP0L/RgNCw0LLRltC70YzQvdGLICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdGLINC70ZbQujog0L/QsNCy0ZbQvdC10L0g0LHRi9GG0Ywg0LrRgNCw0YLQvdGL0LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDRgdC/0LDQt9C90LDQvdGLICR7ZS5rZXlzLmxlbmd0aD4xPyLQutC70Y7Rh9GLIjoi0LrQu9GO0YcifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndGP0L/RgNCw0LLRltC70YzQvdGLINC60LvRjtGHINGDICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90LDQtSDQt9C90LDRh9GN0L3QvdC1INGeICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0In19fTtmdW5jdGlvbiBVcCgpe3JldHVybntsb2NhbGVFcnJvcjpqcCgpfX1jb25zdCBQcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxmaWxlOnt1bml0OiLQsdCw0LnRgtCwIix2ZXJiOiLQtNCwINGB0YrQtNGK0YDQttCwIn0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLRhdC+0LQiLGVtYWlsOiLQuNC80LXQudC7INCw0LTRgNC10YEiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0LTQttC4Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtCwIix0aW1lOiJJU08g0LLRgNC10LzQtSIsZHVyYXRpb246IklTTyDQv9GA0L7QtNGK0LvQttC40YLQtdC70L3QvtGB0YIiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgSIsaXB2NjoiSVB2NiDQsNC00YDQtdGBIixjaWRydjQ6IklQdjQg0LTQuNCw0L/QsNC30L7QvSIsY2lkcnY2OiJJUHY2INC00LjQsNC/0LDQt9C+0L0iLGJhc2U2NDoiYmFzZTY0LdC60L7QtNC40YDQsNC9INC90LjQtyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LrQvtC00LjRgNCw0L0g0L3QuNC3Iixqc29uX3N0cmluZzoiSlNPTiDQvdC40LciLGUxNjQ6IkUuMTY0INC90L7QvNC10YAiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstGF0L7QtCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9C+0LvRg9GH0LXQvSAke3N9YDpg0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSAke2l9LCDQv9C+0LvRg9GH0LXQvSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7ayhlLnZhbHVlc1swXSl9YDpg0J3QtdCy0LDQu9C40LTQvdCwINC+0L/RhtC40Y86INC+0YfQsNC60LLQsNC90L4g0LXQtNC90L4g0L7RgiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINGB0YrQtNGK0YDQttCwICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0LAifWA6YNCi0LLRitGA0LTQtSDQs9C+0LvRj9C80L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW4/PyLRgdGC0L7QudC90L7RgdGCIn0g0LTQsCDQsdGK0LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDRgdGK0LTRitGA0LbQsCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0KLQstGK0YDQtNC1INC80LDQu9C60L46INC+0YfQsNC60LLQsCDRgdC1ICR7ZS5vcmlnaW59INC00LAg0LHRitC00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO2lmKGkuZm9ybWF0PT09InN0YXJ0c193aXRoIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNC/0L7Rh9Cy0LAg0YEgIiR7aS5wcmVmaXh9ImA7aWYoaS5mb3JtYXQ9PT0iZW5kc193aXRoIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LfQsNCy0YrRgNGI0LLQsCDRgSAiJHtpLnN1ZmZpeH0iYDtpZihpLmZvcm1hdD09PSJpbmNsdWRlcyIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINCy0LrQu9GO0YfQstCwICIke2kuaW5jbHVkZXN9ImA7aWYoaS5mb3JtYXQ9PT0icmVnZXgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LLQv9Cw0LTQsCDRgSAke2kucGF0dGVybn1gO2xldCBhPSLQndC10LLQsNC70LjQtNC10L0iO3JldHVybiBpLmZvcm1hdD09PSJlbW9qaSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkYXRldGltZSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkYXRlIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QsCIpLGkuZm9ybWF0PT09InRpbWUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdC+IiksaS5mb3JtYXQ9PT0iZHVyYXRpb24iJiYoYT0i0J3QtdCy0LDQu9C40LTQvdCwIiksYCR7YX0gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQstCw0LvQuNC00L3QviDRh9C40YHQu9C+OiDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQutGA0LDRgtC90L4g0L3QsCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNC30L/QvtC30L3QsNGCJHtlLmtleXMubGVuZ3RoPjE/ItC4IjoiIn0g0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0L7QstC1IjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC60LvRjtGHINCyICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdCwINGB0YLQvtC50L3QvtGB0YIg0LIgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtCJ9fX07ZnVuY3Rpb24gT3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6UHAoKX19Y29uc3QgRHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcsOgY3RlcnMiLHZlcmI6ImNvbnRlbmlyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImNvbnRlbmlyIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRzIix2ZXJiOiJjb250ZW5pciJ9LHNldDp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJhZHJlw6dhIGVsZWN0csOybmljYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBpIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhZGEgSVNPIixpcHY0OiJhZHJlw6dhIElQdjQiLGlwdjY6ImFkcmXDp2EgSVB2NiIsY2lkcnY0OiJyYW5nIElQdjQiLGNpZHJ2NjoicmFuZyBJUHY2IixiYXNlNjQ6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjYWRlbmEgY29kaWZpY2FkYSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjYWRlbmEgSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXB1cyBpbnbDoGxpZDogcydlc3BlcmF2YSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHMnaGEgcmVidXQgJHtzfWA6YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhICR7aX0sIHMnaGEgcmVidXQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVmFsb3IgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtrKGUudmFsdWVzWzBdKX1gOmBPcGNpw7MgaW52w6BsaWRhOiBzJ2VzcGVyYXZhIHVuYSBkZSAke18oZS52YWx1ZXMsIiBvICIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iY29tIGEgbcOgeGltIjoibWVueXMgZGUiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE1hc3NhIGdyYW46IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW4/PyJlbCB2YWxvciJ9IGNvbnRpbmd1w6lzICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9YDpgTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gZm9zICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iY29tIGEgbcOtbmltIjoibcOpcyBkZSIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW59IGNvbnRpbmd1w6lzICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgTWFzc2EgcGV0aXQ6IHMnZXNwZXJhdmEgcXVlICR7ZS5vcmlnaW59IGZvcyAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZGUgY29tZW7Dp2FyIGFtYiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGQnYWNhYmFyIGFtYiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZCdpbmNsb3VyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gRm9ybWF0IGludsOgbGlkOiBoYSBkZSBjb2luY2lkaXIgYW1iIGVsIHBhdHLDsyAke2kucGF0dGVybn1gOmBGb3JtYXQgaW52w6BsaWQgcGVyIGEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6BsaWQ6IGhhIGRlIHNlciBtw7psdGlwbGUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2xhdSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gbm8gcmVjb25lZ3VkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2xhdSBpbnbDoGxpZGEgYSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoGxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gRWxlbWVudCBpbnbDoGxpZCBhICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyYWRhIGludsOgbGlkYSJ9fX07ZnVuY3Rpb24gTnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6RHAoKX19Y29uc3QgRXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWvFryIsdmVyYjoibcOtdCJ9LGZpbGU6e3VuaXQ6ImJhanTFryIsdmVyYjoibcOtdCJ9LGFycmF5Ont1bml0OiJwcnZrxa8iLHZlcmI6Im3DrXQifSxzZXQ6e3VuaXQ6InBydmvFryIsdmVyYjoibcOtdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJyZWd1bMOhcm7DrSB2w71yYXoiLGVtYWlsOiJlLW1haWxvdsOhIGFkcmVzYSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0dW0gYSDEjWFzIHZlIGZvcm3DoXR1IElTTyIsZGF0ZToiZGF0dW0gdmUgZm9ybcOhdHUgSVNPIix0aW1lOiLEjWFzIHZlIGZvcm3DoXR1IElTTyIsZHVyYXRpb246ImRvYmEgdHJ2w6Fuw60gSVNPIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoicm96c2FoIElQdjQiLGNpZHJ2Njoicm96c2FoIElQdjYiLGJhc2U2NDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjQiLGJhc2U2NHVybDoixZlldMSbemVjIHpha8OzZG92YW7DvSB2ZSBmb3Jtw6F0dSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLFmWV0xJt6ZWMgdmUgZm9ybcOhdHUgSlNPTiIsZTE2NDoixI3DrXNsbyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZzdHVwIn0sbz17bmFuOiJOYU4iLG51bWJlcjoixI3DrXNsbyIsc3RyaW5nOiLFmWV0xJt6ZWMiLGZ1bmN0aW9uOiJmdW5rY2UiLGFycmF5OiJwb2xlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb2JkcsW+ZW5vICR7c31gOmBOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke2l9LCBvYmRyxb5lbm8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZXBsYXRuw6EgbW/Fvm5vc3Q6IG/EjWVrw6F2w6FuYSBqZWRuYSB6IGhvZG5vdCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSG9kbm90YSBqZSBwxZnDrWxpxaEgdmVsa8OhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIG3DrXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icHJ2a8WvIn1gOmBIb2Rub3RhIGplIHDFmcOtbGnFoSB2ZWxrw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBtw610ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/InBydmvFryJ9YDpgSG9kbm90YSBqZSBwxZnDrWxpxaEgbWFsw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gYsO9dCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gemHEjcOtbmF0IG5hICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIGtvbsSNaXQgbmEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSBvYnNhaG92YXQgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9kcG92w61kYXQgdnpvcnUgJHtpLnBhdHRlcm59YDpgTmVwbGF0bsO9IGZvcm3DoXQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5lcGxhdG7DqSDEjcOtc2xvOiBtdXPDrSBiw710IG7DoXNvYmtlbSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXpuw6Ftw6kga2zDrcSNZTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOZXBsYXRuw70ga2zDrcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5lcGxhdG7DvSB2c3R1cCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXBsYXRuw6EgaG9kbm90YSB2ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZXBsYXRuw70gdnN0dXAifX19O2Z1bmN0aW9uIFpwKCl7cmV0dXJue2xvY2FsZUVycm9yOkVwKCl9fWNvbnN0IFJwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWduIix2ZXJiOiJoYXZkZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJoYXZkZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6ImluZGVob2xkdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiJpbmRlaG9sZHQifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLW1haWxhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2zDpnQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2zDpnQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZWQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RldCBzdHJlbmciLGpzb25fc3RyaW5nOiJKU09OLXN0cmVuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJzdHJlbmciLG51bWJlcjoidGFsIixib29sZWFuOiJib29sZWFuIixhcnJheToibGlzdGUiLG9iamVjdDoib2JqZWt0IixzZXQ6InPDpnQiLGZpbGU6ImZpbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpayAke3N9YDpgVWd5bGRpZ3QgaW5wdXQ6IGZvcnZlbnRlZGUgJHtpfSwgZmlrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVneWxkaWcgdsOmcmRpOiBmb3J2ZW50ZWRlICR7ayhlLnZhbHVlc1swXSl9YDpgVWd5bGRpZ3QgdmFsZzogZm9ydmVudGVkZSBlbiBhZiBmw7hsZ2VuZGUgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YEZvciBzdG9yOiBmb3J2ZW50ZWRlICR7cz8/InZhbHVlIn0gJHthLnZlcmJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yOiBmb3J2ZW50ZWRlICR7cz8/InZhbHVlIn0gaGF2ZGUgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YEZvciBsaWxsZTogZm9ydmVudGVkZSAke3N9ICR7YS52ZXJifSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YEZvciBsaWxsZTogZm9ydmVudGVkZSAke3N9IGhhdmRlICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgc3RhcnRlIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBlbmRlIG1lZCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVneWxkaWcgc3RyZW5nOiBza2FsIGluZGVob2xkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgbWF0Y2hlIG3DuG5zdGVyZXQgJHtpLnBhdHRlcm59YDpgVWd5bGRpZyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZ3QgdGFsOiBza2FsIHbDpnJlIGRlbGVsaWd0IG1lZCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVWtlbmR0ZSBuw7hnbGVyIjoiVWtlbmR0IG7DuGdsZSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4Z2xlIGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVneWxkaWd0IGlucHV0OiBtYXRjaGVyIGluZ2VuIGFmIGRlIHRpbGxhZHRlIHR5cGVyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVneWxkaWcgdsOmcmRpIGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlVneWxkaWd0IGlucHV0In19fTtmdW5jdGlvbiBDcCgpe3JldHVybntsb2NhbGVFcnJvcjpScCgpfX1jb25zdCBBcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiWmVpY2hlbiIsdmVyYjoienUgaGFiZW4ifSxmaWxlOnt1bml0OiJCeXRlcyIsdmVyYjoienUgaGFiZW4ifSxhcnJheTp7dW5pdDoiRWxlbWVudGUiLHZlcmI6Inp1IGhhYmVuIn0sc2V0Ont1bml0OiJFbGVtZW50ZSIsdmVyYjoienUgaGFiZW4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiRWluZ2FiZSIsZW1haWw6IkUtTWFpbC1BZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6IkVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tRGF0dW0gdW5kIC1VaHJ6ZWl0IixkYXRlOiJJU08tRGF0dW0iLHRpbWU6IklTTy1VaHJ6ZWl0IixkdXJhdGlvbjoiSVNPLURhdWVyIixpcHY0OiJJUHY0LUFkcmVzc2UiLGlwdjY6IklQdjYtQWRyZXNzZSIsY2lkcnY0OiJJUHY0LUJlcmVpY2giLGNpZHJ2NjoiSVB2Ni1CZXJlaWNoIixiYXNlNjQ6IkJhc2U2NC1jb2RpZXJ0ZXIgU3RyaW5nIixiYXNlNjR1cmw6IkJhc2U2NC1VUkwtY29kaWVydGVyIFN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04tU3RyaW5nIixlMTY0OiJFLjE2NC1OdW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJFaW5nYWJlIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiWmFobCIsYXJyYXk6IkFycmF5In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBlcmhhbHRlbiAke3N9YDpgVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCAke2l9LCBlcmhhbHRlbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7ayhlLnZhbHVlc1swXSl9YDpgVW5nw7xsdGlnZSBPcHRpb246IGVyd2FydGV0IGVpbmUgdm9uICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BadSBncm/DnzogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbj8/IldlcnQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJFbGVtZW50ZSJ9IGhhdGA6YFp1IGdyb8OfOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2luPz8iV2VydCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBpc3RgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSBoYXRgOmBadSBrbGVpbjogZXJ3YXJ0ZXQsIGRhc3MgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgbWl0ICIke2kucHJlZml4fSIgYmVnaW5uZW5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7aS5zdWZmaXh9IiBlbmRlbmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgIiR7aS5pbmNsdWRlc30iIGVudGhhbHRlbmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVbmfDvGx0aWdlciBTdHJpbmc6IG11c3MgZGVtIE11c3RlciAke2kucGF0dGVybn0gZW50c3ByZWNoZW5gOmBVbmfDvGx0aWc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVbmfDvGx0aWdlIFphaGw6IG11c3MgZWluIFZpZWxmYWNoZXMgdm9uICR7ZS5kaXZpc29yfSBzZWluYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVuYmVrYW5udGUgU2NobMO8c3NlbCI6IlVuYmVrYW5udGVyIFNjaGzDvHNzZWwifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBVbmfDvGx0aWdlciBTY2hsw7xzc2VsIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVbmfDvGx0aWdlIEVpbmdhYmUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVW5nw7xsdGlnZXIgV2VydCBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVW5nw7xsdGlnZSBFaW5nYWJlIn19fTtmdW5jdGlvbiBMcCgpe3JldHVybntsb2NhbGVFcnJvcjpBcCgpfX1jb25zdCBNcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiz4fOsc+BzrHOus+Ezq7Pgc61z4IiLHZlcmI6Is69zrEgzq3Ph861zrkifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LGFycmF5Ont1bml0OiLPg8+Ezr/Ouc+HzrXOr86xIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sc2V0Ont1bml0OiLPg8+Ezr/Ouc+HzrXOr86xIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sbWFwOnt1bml0OiLOus6xz4TOsc+Hz4nPgc6uz4POtc65z4IiLHZlcmI6Is69zrEgzq3Ph861zrkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoizrXOr8+Dzr/OtM6/z4IiLGVtYWlsOiLOtM65zrXPjc64z4XOvc+DzrcgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDOt868zrXPgc6/zrzOt869zq/OsSDOus6xzrkgz47Pgc6xIixkYXRlOiJJU08gzrfOvM61z4HOv868zrfOvc6vzrEiLHRpbWU6IklTTyDPjs+BzrEiLGR1cmF0aW9uOiJJU08gzrTOuc6sz4HOus61zrnOsSIsaXB2NDoizrTOuc61z43OuM+Fzr3Pg863IElQdjQiLGlwdjY6Is60zrnOtc+NzrjPhc69z4POtyBJUHY2IixtYWM6Is60zrnOtc+NzrjPhc69z4POtyBNQUMiLGNpZHJ2NDoizrXPjc+Bzr/PgiBJUHY0IixjaWRydjY6Is61z43Pgc6/z4IgSVB2NiIsYmFzZTY0OiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgzrrPic60zrnOus6/z4DOv865zrfOvM6tzr3OtyDPg861IGJhc2U2NCIsYmFzZTY0dXJsOiLPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqwgzrrPic60zrnOus6/z4DOv865zrfOvM6tzr3OtyDPg861IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCBKU09OIixlMTY0OiLOsc+BzrnOuM68z4zPgiBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Is61zq/Pg86/zrTOv8+CIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuIHR5cGVvZiBlLmV4cGVjdGVkPT0ic3RyaW5nIiYmL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgzrvOrs+GzrjOt866zrUgJHtzfWA6YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2l9LCDOu86uz4bOuM63zrrOtSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtrKGUudmFsdWVzWzBdKX1gOmDOnM63IM6tzrPOus+Fz4HOtyDOtc+AzrnOu86/zrPOrjogzrHOvc6xzrzOtc69z4zPhM6xzr0gzq3Ovc6xIM6xz4DPjCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gzqDOv867z40gzrzOtc6zzqzOu86/OiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2luPz8iz4TOuc68zq4ifSDOvc6xIM6tz4fOtc65ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Is+Dz4TOv865z4fOtc6vzrEifWA6YM6gzr/Ou8+NIM68zrXOs86szrvOvzogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbj8/Is+EzrnOvM6uIn0gzr3OsSDOtc6vzr3Osc65ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YM6gzr/Ou8+NIM68zrnOus+Bz4w6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW59IM69zrEgzq3Ph861zrkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YM6gzr/Ou8+NIM68zrnOus+Bz4w6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW59IM69zrEgzrXOr869zrHOuSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDOvs61zrrOuc69zqwgzrzOtSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrXOu861zrnPjs69zrXOuSDOvM61ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gzpzOtyDOrc6zzrrPhc+Bzrcgz4PPhc68zrLOv867zr/Pg861zrnPgc6sOiDPgM+Bzq3PgM61zrkgzr3OsSDPgM61z4HOuc6tz4fOtc65ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrHOuc+BzrnOrM62zrXOuSDOvM61IM+Ezr8gzrzOv8+Ezq/Oss6/ICR7aS5wYXR0ZXJufWA6YM6czrcgzq3Os866z4XPgc6/OiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzr/PgiDOsc+BzrnOuM68z4zPgjogz4DPgc6tz4DOtc65IM69zrEgzrXOr869zrHOuSDPgM6/zrvOu86xz4DOu86sz4POuc6/IM+Ezr/PhSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDOhs6zzr3Pic+Dz4Qke2Uua2V5cy5sZW5ndGg+MT8izrEiOiLOvyJ9IM66zrvOtc65zrQke2Uua2V5cy5sZW5ndGg+MT8izrnOrCI6Is6vIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzr8gzrrOu861zrnOtM6vIM+Dz4TOvyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4izpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4IiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gzpzOtyDOrc6zzrrPhc+Bzrcgz4TOuc68zq4gz4PPhM6/ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgiJ9fX07ZnVuY3Rpb24gcXAoKXtyZXR1cm57bG9jYWxlRXJyb3I6TXAoKX19Y29uc3QgRnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNoYXJhY3RlcnMiLHZlcmI6InRvIGhhdmUifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoiaXRlbXMiLHZlcmI6InRvIGhhdmUifSxtYXA6e3VuaXQ6ImVudHJpZXMiLHZlcmI6InRvIGhhdmUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlbWFpbCBhZGRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0ZXRpbWUiLGRhdGU6IklTTyBkYXRlIix0aW1lOiJJU08gdGltZSIsZHVyYXRpb246IklTTyBkdXJhdGlvbiIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLG1hYzoiTUFDIGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgbnVtYmVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm5gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtpfSwgcmVjZWl2ZWQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgJHtrKGUudmFsdWVzWzBdKX1gOmBJbnZhbGlkIG9wdGlvbjogZXhwZWN0ZWQgb25lIG9mICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUb28gYmlnOiBleHBlY3RlZCAke2Uub3JpZ2luPz8idmFsdWUifSB0byBoYXZlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn1gOmBUb28gYmlnOiBleHBlY3RlZCAke2Uub3JpZ2luPz8idmFsdWUifSB0byBiZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUb28gc21hbGw6IGV4cGVjdGVkICR7ZS5vcmlnaW59IHRvIGhhdmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtlLm9yaWdpbn0gdG8gYmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IHN0YXJ0IHdpdGggIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3QgZW5kIHdpdGggIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBpbmNsdWRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBtYXRjaCBwYXR0ZXJuICR7aS5wYXR0ZXJufWA6YEludmFsaWQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEludmFsaWQgbnVtYmVyOiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVW5yZWNvZ25pemVkIGtleSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gSW52YWxpZCBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIGUub3B0aW9ucyYmQXJyYXkuaXNBcnJheShlLm9wdGlvbnMpJiZlLm9wdGlvbnMubGVuZ3RoPjA/YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtlLm9wdGlvbnMubWFwKGE9PmAnJHthfSdgKS5qb2luKCIgfCAiKX1gOiJJbnZhbGlkIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEludmFsaWQgdmFsdWUgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkludmFsaWQgaW5wdXQifX19O2Z1bmN0aW9uIGdsKCl7cmV0dXJue2xvY2FsZUVycm9yOkZwKCl9fWNvbnN0IEpwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3Ryb2puIix2ZXJiOiJoYXZpIn0sZmlsZTp7dW5pdDoiYmFqdG9qbiIsdmVyYjoiaGF2aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b2puIix2ZXJiOiJoYXZpIn0sc2V0Ont1bml0OiJlbGVtZW50b2puIix2ZXJiOiJoYXZpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVuaWdvIixlbWFpbDoicmV0YWRyZXNvIix1cmw6IlVSTCIsZW1vamk6ImVtb8SdaW8iLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1kYXRvdGVtcG8iLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08tdGVtcG8iLGR1cmF0aW9uOiJJU08tZGHFrXJvIixpcHY0OiJJUHY0LWFkcmVzbyIsaXB2NjoiSVB2Ni1hZHJlc28iLGNpZHJ2NDoiSVB2NC1yYW5nbyIsY2lkcnY2OiJJUHY2LXJhbmdvIixiYXNlNjQ6IjY0LXVtZSBrb2RpdGEga2FyYWt0cmFybyIsYmFzZTY0dXJsOiJVUkwtNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvIixqc29uX3N0cmluZzoiSlNPTi1rYXJha3RyYXJvIixlMTY0OiJFLjE2NC1ub21icm8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbmlnbyJ9LG89e25hbjoiTmFOIixudW1iZXI6Im5vbWJybyIsYXJyYXk6InRhYmVsbyIsbnVsbDoic2VudmFsb3JhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmljZXZpxJ1pcyAke3N9YDpgTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgJHtpfSwgcmljZXZpxJ1pcyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyAke2soZS52YWx1ZXNbMF0pfWA6YE5ldmFsaWRhIG9wY2lvOiBhdGVuZGnEnWlzIHVudSBlbCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvIGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2luPz8idmFsb3JvIn0gaGF2dSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b2puIn1gOmBUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRybyBtYWxncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbn0gaGF2dSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvIG1hbGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2lufSBlc3R1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb21lbmNpxJ1pIHBlciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBmaW5pxJ1pIHBlciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGlua2x1eml2aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMga29uZ3J1aSBrdW4gbGEgbW9kZWxvICR7aS5wYXR0ZXJufWA6YE5ldmFsaWRhICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZhbGlkYSBub21icm86IGRldmFzIGVzdGkgb2JsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWtvbmF0YSR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn0gxZ1sb3NpbG8ke2Uua2V5cy5sZW5ndGg+MT8iaiI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmFsaWRhIMWdbG9zaWxvIGVuICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZXZhbGlkYSBlbmlnbyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXZhbGlkYSB2YWxvcm8gZW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIn19fTtmdW5jdGlvbiBIcCgpe3JldHVybntsb2NhbGVFcnJvcjpKcCgpfX1jb25zdCBWcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVuZXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoidGVuZXIifSxhcnJheTp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9LHNldDp7dW5pdDoiZWxlbWVudG9zIix2ZXJiOiJ0ZW5lciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyYWRhIixlbWFpbDoiZGlyZWNjacOzbiBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJmZWNoYSB5IGhvcmEgSVNPIixkYXRlOiJmZWNoYSBJU08iLHRpbWU6ImhvcmEgSVNPIixkdXJhdGlvbjoiZHVyYWNpw7NuIElTTyIsaXB2NDoiZGlyZWNjacOzbiBJUHY0IixpcHY2OiJkaXJlY2Npw7NuIElQdjYiLGNpZHJ2NDoicmFuZ28gSVB2NCIsY2lkcnY2OiJyYW5nbyBJUHY2IixiYXNlNjQ6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2FkYSBlbiBiYXNlNjQiLGpzb25fc3RyaW5nOiJjYWRlbmEgSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJ0ZXh0byIsbnVtYmVyOiJuw7ptZXJvIixib29sZWFuOiJib29sZWFubyIsYXJyYXk6ImFycmVnbG8iLG9iamVjdDoib2JqZXRvIixzZXQ6ImNvbmp1bnRvIixmaWxlOiJhcmNoaXZvIixkYXRlOiJmZWNoYSIsYmlnaW50OiJuw7ptZXJvIGdyYW5kZSIsc3ltYm9sOiJzw61tYm9sbyIsdW5kZWZpbmVkOiJpbmRlZmluaWRvIixudWxsOiJudWxvIixmdW5jdGlvbjoiZnVuY2nDs24iLG1hcDoibWFwYSIscmVjb3JkOiJyZWdpc3RybyIsdHVwbGU6InR1cGxhIixlbnVtOiJlbnVtZXJhY2nDs24iLHVuaW9uOiJ1bmnDs24iLGxpdGVyYWw6ImxpdGVyYWwiLHByb21pc2U6InByb21lc2EiLHZvaWQ6InZhY8OtbyIsbmV2ZXI6Im51bmNhIix1bmtub3duOiJkZXNjb25vY2lkbyIsYW55OiJjdWFscXVpZXJhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlY2liaWRvICR7c31gOmBFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtpfSwgcmVjaWJpZG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhICR7ayhlLnZhbHVlc1swXSl9YDpgT3BjacOzbiBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIHVuYSBkZSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7cz8/InZhbG9yIn0gdHV2aWVyYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50b3MifWA6YERlbWFzaWFkbyBncmFuZGU6IHNlIGVzcGVyYWJhIHF1ZSAke3M/PyJ2YWxvciJ9IGZ1ZXJhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YERlbWFzaWFkbyBwZXF1ZcOxbzogc2UgZXNwZXJhYmEgcXVlICR7c30gdHV2aWVyYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtzfSBmdWVyYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBjb21lbnphciBjb24gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSB0ZXJtaW5hciBlbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENhZGVuYSBpbnbDoWxpZGE6IGRlYmUgaW5jbHVpciAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBjb2luY2lkaXIgY29uIGVsIHBhdHLDs24gJHtpLnBhdHRlcm59YDpgSW52w6FsaWRvICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOw7ptZXJvIGludsOhbGlkbzogZGViZSBzZXIgbcO6bHRpcGxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYExsYXZlJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBkZXNjb25vY2lkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTGxhdmUgaW52w6FsaWRhIGVuICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3IgaW52w6FsaWRvIGVuICR7b1tlLm9yaWdpbl0/P2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50cmFkYSBpbnbDoWxpZGEifX19O2Z1bmN0aW9uIEtwKCl7cmV0dXJue2xvY2FsZUVycm9yOlZwKCl9fWNvbnN0IEJwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLaqdin2LHYp9qp2KrYsSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9LGZpbGU6e3VuaXQ6Itio2KfbjNiqIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sYXJyYXk6e3VuaXQ6Itii24zYqtmFIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sc2V0Ont1bml0OiLYotuM2KrZhSIsdmVyYjoi2K/Yp9i02KrZhyDYqNin2LTYryJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZiNix2YjYr9uMIixlbWFpbDoi2KLYr9ix2LMg2KfbjNmF24zZhCIsdXJsOiJVUkwiLGVtb2ppOiLYp9uM2YXZiNis24wiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6Itiq2KfYsduM2K4g2Ygg2LLZhdin2YYg2KfbjNiy2YgiLGRhdGU6Itiq2KfYsduM2K4g2KfbjNiy2YgiLHRpbWU6Itiy2YXYp9mGINin24zYstmIIixkdXJhdGlvbjoi2YXYr9iqINiy2YXYp9mGINin24zYstmIIixpcHY0OiJJUHY0INii2K/YsdizIixpcHY2OiJJUHY2INii2K/YsdizIixjaWRydjQ6IklQdjQg2K/Yp9mF2YbZhyIsY2lkcnY2OiJJUHY2INiv2KfZhdmG2YciLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg2LHYtNiq2YciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2LHYtNiq2YciLGpzb25fc3RyaW5nOiJKU09OINix2LTYqtmHIixlMTY0OiJFLjE2NCDYudiv2K8iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9uMIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KLYsdin24zZhyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXbjOKAjNio2YjYr9iMICR7c30g2K/YsduM2KfZgdiqINi02K9gOmDZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke2l9INmF24zigIzYqNmI2K/YjCAke3N9INiv2LHbjNin2YHYqiDYtNivYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZiNix2YjYr9uMINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiAke2soZS52YWx1ZXNbMF0pfSDZhduM4oCM2KjZiNivYDpg2q/YstuM2YbZhyDZhtin2YXYudiq2KjYsTog2YXbjOKAjNio2KfbjNiz2Kog24zaqduMINin2LIgJHtfKGUudmFsdWVzLCJ8Iil9INmF24zigIzYqNmI2K9gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2K7bjNmE24wg2KjYstix2q86ICR7ZS5vcmlnaW4/PyLZhdmC2K/Yp9ixIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LEifSDYqNin2LTYr2A6YNiu24zZhNuMINio2LLYsdqvOiAke2Uub3JpZ2luPz8i2YXZgtiv2KfYsSJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNiu24zZhNuMINqp2YjahtqpOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9INio2KfYtNivYDpg2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDYqNin2LTYr2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtpLnByZWZpeH0iINi02LHZiNi5INi02YjYr2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINio2KcgIiR7aS5zdWZmaXh9IiDYqtmF2KfZhSDYtNmI2K9gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2LHYtNiq2Ycg2YbYp9mF2LnYqtio2LE6INio2KfbjNivINi02KfZhdmEICIke2kuaW5jbHVkZXN9IiDYqNin2LTYr2A6aS5mb3JtYXQ9PT0icmVnZXgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyDYp9mE2q/ZiNuMICR7aS5wYXR0ZXJufSDZhdi32KfYqNmC2Kog2K/Yp9i02KrZhyDYqNin2LTYr2A6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDZhtin2YXYudiq2KjYsWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYudiv2K8g2YbYp9mF2LnYqtio2LE6INio2KfbjNivINmF2LbYsdioICR7ZS5kaXZpc29yfSDYqNin2LTYr2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNqp2YTbjNivJHtlLmtleXMubGVuZ3RoPjE/ItmH2KfbjCI6IiJ9INmG2KfYtNmG2KfYszogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDaqdmE24zYryDZhtin2LTZhtin2LMg2K/YsSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhdmC2K/Yp9ixINmG2KfZhdi52KrYqNixINiv2LEgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LEifX19O2Z1bmN0aW9uIFdwKCl7cmV0dXJue2xvY2FsZUVycm9yOkJwKCl9fWNvbnN0IEdwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJtZXJra2nDpCIsc3ViamVjdDoibWVya2tpam9ub24ifSxmaWxlOnt1bml0OiJ0YXZ1YSIsc3ViamVjdDoidGllZG9zdG9uIn0sYXJyYXk6e3VuaXQ6ImFsa2lvdGEiLHN1YmplY3Q6Imxpc3RhbiJ9LHNldDp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoiam91a29uIn0sbnVtYmVyOnt1bml0OiIiLHN1YmplY3Q6Imx1dnVuIn0sYmlnaW50Ont1bml0OiIiLHN1YmplY3Q6InN1dXJlbiBrb2tvbmFpc2x1dnVuIn0saW50Ont1bml0OiIiLHN1YmplY3Q6Imtva29uYWlzbHV2dW4ifSxkYXRlOnt1bml0OiIiLHN1YmplY3Q6InDDpGl2w6Rtw6TDpHLDpG4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoic8Okw6RubsO2bGxpbmVuIGxhdXNla2UiLGVtYWlsOiJzw6Roa8O2cG9zdGlvc29pdGUiLHVybDoiVVJMLW9zb2l0ZSIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tYWlrYWxlaW1hIixkYXRlOiJJU08tcMOkaXbDpG3DpMOkcsOkIix0aW1lOiJJU08tYWlrYSIsZHVyYXRpb246IklTTy1rZXN0byIsaXB2NDoiSVB2NC1vc29pdGUiLGlwdjY6IklQdjYtb3NvaXRlIixjaWRydjQ6IklQdjQtYWx1ZSIsY2lkcnY2OiJJUHY2LWFsdWUiLGJhc2U2NDoiYmFzZTY0LWtvb2RhdHR1IG1lcmtraWpvbm8iLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvb2RhdHR1IG1lcmtraWpvbm8iLGpzb25fc3RyaW5nOiJKU09OLW1lcmtraWpvbm8iLGUxNjQ6IkUuMTY0LWx1a3UiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ0ZW1wbGFhdHRpbWVya2tpam9ubyJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvbGkgJHtzfWA6YFZpcmhlZWxsaW5lbiB0eXlwcGk6IG9kb3RldHRpaW4gJHtpfSwgb2xpICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgb2xsYSAke2soZS52YWx1ZXNbMF0pfWA6YFZpcmhlZWxsaW5lbiB2YWxpbnRhOiB0w6R5dHl5IG9sbGEgeWtzaSBzZXVyYWF2aXN0YTogJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YExpaWFuIHN1dXJpOiAke2Euc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gLnRyaW0oKTpgTGlpYW4gc3V1cmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BMaWlhbiBwaWVuaTogJHthLnN1YmplY3R9IHTDpHl0eXkgb2xsYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YC50cmltKCk6YExpaWFuIHBpZW5pOiBhcnZvbiB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgYWxrYWEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBsb3BwdWEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IHNpc8OkbHTDpMOkICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IHZhc3RhdGEgc8Okw6RubsO2bGxpc3TDpCBsYXVzZWtldHRhICR7aS5wYXR0ZXJufWA6YFZpcmhlZWxsaW5lbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVmlyaGVlbGxpbmVuIGx1a3U6IHTDpHl0eXkgb2xsYSBsdXZ1biAke2UuZGl2aXNvcn0gbW9uaWtlcnRhYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlR1bnRlbWF0dG9tYXQgYXZhaW1ldCI6IlR1bnRlbWF0b24gYXZhaW4ifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiJWaXJoZWVsbGluZW4gYXZhaW4gdGlldHVlZXNzYSI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVmlyaGVlbGxpbmVuIHVuaW9uaSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybiJWaXJoZWVsbGluZW4gYXJ2byBqb3Vrb3NzYSI7ZGVmYXVsdDpyZXR1cm4iVmlyaGVlbGxpbmVuIHN5w7Z0ZSJ9fX07ZnVuY3Rpb24gWHAoKXtyZXR1cm57bG9jYWxlRXJyb3I6R3AoKX19Y29uc3QgWXA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHLDqWUiLGVtYWlsOiJhZHJlc3NlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0ZSBldCBoZXVyZSBJU08iLGRhdGU6ImRhdGUgSVNPIix0aW1lOiJoZXVyZSBJU08iLGR1cmF0aW9uOiJkdXLDqWUgSVNPIixpcHY0OiJhZHJlc3NlIElQdjQiLGlwdjY6ImFkcmVzc2UgSVB2NiIsY2lkcnY0OiJwbGFnZSBJUHY0IixjaWRydjY6InBsYWdlIElQdjYiLGJhc2U2NDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaGHDrm5lIEpTT04iLGUxNjQ6Im51bcOpcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyw6llIn0sbz17c3RyaW5nOiJjaGHDrm5lIixudW1iZXI6Im5vbWJyZSIsaW50OiJlbnRpZXIiLGJvb2xlYW46ImJvb2zDqWVuIixiaWdpbnQ6ImdyYW5kIGVudGllciIsc3ltYm9sOiJzeW1ib2xlIix1bmRlZmluZWQ6ImluZMOpZmluaSIsbnVsbDoibnVsbCIsbmV2ZXI6ImphbWFpcyIsdm9pZDoidmlkZSIsZGF0ZToiZGF0ZSIsYXJyYXk6InRhYmxlYXUiLG9iamVjdDoib2JqZXQiLHR1cGxlOiJ0dXBsZSIscmVjb3JkOiJlbnJlZ2lzdHJlbWVudCIsbWFwOiJjYXJ0ZSIsc2V0OiJlbnNlbWJsZSIsZmlsZToiZmljaGllciIsbm9ub3B0aW9uYWw6Im5vbi1vcHRpb25uZWwiLG5hbjoiTmFOIixmdW5jdGlvbjoiZm9uY3Rpb24ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50csOpZSBpbnZhbGlkZSA6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSBhdHRlbmR1LCAke3N9IHJlw6d1YDpgRW50csOpZSBpbnZhbGlkZSA6ICR7aX0gYXR0ZW5kdSwgJHtzfSByZcOndWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50csOpZSBpbnZhbGlkZSA6ICR7ayhlLnZhbHVlc1swXSl9IGF0dGVuZHVgOmBPcHRpb24gaW52YWxpZGUgOiB1bmUgdmFsZXVyIHBhcm1pICR7XyhlLnZhbHVlcywifCIpfSBhdHRlbmR1ZWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wIGdyYW5kIDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IsOpbMOpbWVudChzKSJ9YDpgVHJvcCBncmFuZCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0IMOqdHJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgcGV0aXQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgcGV0aXQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCDDqnRyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29tbWVuY2VyIHBhciAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBzZSB0ZXJtaW5lciBwYXIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBpbmNsdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb3JyZXNwb25kcmUgYXUgbW9kw6hsZSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUifX19O2Z1bmN0aW9uIFFwKCl7cmV0dXJue2xvY2FsZUVycm9yOllwKCl9fWNvbnN0IGVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3TDqHJlcyIsdmVyYjoiYXZvaXIifSxmaWxlOnt1bml0OiJvY3RldHMiLHZlcmI6ImF2b2lyIn0sYXJyYXk6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn0sc2V0Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJlbnRyw6llIixlbWFpbDoiYWRyZXNzZSBjb3VycmllbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0ZS1oZXVyZSBJU08iLGRhdGU6ImRhdGUgSVNPIix0aW1lOiJoZXVyZSBJU08iLGR1cmF0aW9uOiJkdXLDqWUgSVNPIixpcHY0OiJhZHJlc3NlIElQdjQiLGlwdjY6ImFkcmVzc2UgSVB2NiIsY2lkcnY0OiJwbGFnZSBJUHY0IixjaWRydjY6InBsYWdlIElQdjYiLGJhc2U2NDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjQiLGJhc2U2NHVybDoiY2hhw65uZSBlbmNvZMOpZSBlbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJjaGHDrm5lIEpTT04iLGUxNjQ6Im51bcOpcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyw6llIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZcOndSAke3N9YDpgRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtpfSwgcmXDp3UgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50csOpZSBpbnZhbGlkZSA6IGF0dGVuZHUgJHtrKGUudmFsdWVzWzBdKX1gOmBPcHRpb24gaW52YWxpZGUgOiBhdHRlbmR1IGwndW5lIGRlcyB2YWxldXJzIHN1aXZhbnRlcyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuKJpCI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gYWl0ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm9wIGdyYW5kIDogYXR0ZW5kdSBxdWUgJHtlLm9yaWdpbj8/ImxhIHZhbGV1ciJ9IHNvaXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuKJpSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2lufSBhaXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgcGV0aXQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2lufSBzb2l0ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb3RpZiAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52YWxpZGVgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYnJlIGludmFsaWRlIDogZG9pdCDDqnRyZSB1biBtdWx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbMOpJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBub24gcmVjb25udWUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IDogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbMOpIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsZXVyIGludmFsaWRlIGRhbnMgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHLDqWUgaW52YWxpZGUifX19O2Z1bmN0aW9uIHRmKCl7cmV0dXJue2xvY2FsZUVycm9yOmVmKCl9fWNvbnN0IG5mPSgpPT57Y29uc3QgdD17c3RyaW5nOntsYWJlbDoi157Xl9eo15XXlteqIixnZW5kZXI6ImYifSxudW1iZXI6e2xhYmVsOiLXnteh16TXqCIsZ2VuZGVyOiJtIn0sYm9vbGVhbjp7bGFiZWw6Itei16jXmiDXkdeV15zXmdeQ16DXmSIsZ2VuZGVyOiJtIn0sYmlnaW50OntsYWJlbDoiQmlnSW50IixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiIsZ2VuZGVyOiJtIn0sYXJyYXk6e2xhYmVsOiLXntei16jXmiIsZ2VuZGVyOiJtIn0sb2JqZWN0OntsYWJlbDoi15DXldeR15nXmden15giLGdlbmRlcjoibSJ9LG51bGw6e2xhYmVsOiLXoteo15og16jXmdenIChudWxsKSIsZ2VuZGVyOiJtIn0sdW5kZWZpbmVkOntsYWJlbDoi16LXqNeaINec15Ag157XldeS15PXqCAodW5kZWZpbmVkKSIsZ2VuZGVyOiJtIn0sc3ltYm9sOntsYWJlbDoi16HXmdee15HXldecIChTeW1ib2wpIixnZW5kZXI6Im0ifSxmdW5jdGlvbjp7bGFiZWw6Itek15XXoNen16bXmdeUIixnZW5kZXI6ImYifSxtYXA6e2xhYmVsOiLXntek15QgKE1hcCkiLGdlbmRlcjoiZiJ9LHNldDp7bGFiZWw6Iten15HXldem15QgKFNldCkiLGdlbmRlcjoiZiJ9LGZpbGU6e2xhYmVsOiLXp9eV15HXpSIsZ2VuZGVyOiJtIn0scHJvbWlzZTp7bGFiZWw6IlByb21pc2UiLGdlbmRlcjoibSJ9LE5hTjp7bGFiZWw6Ik5hTiIsZ2VuZGVyOiJtIn0sdW5rbm93bjp7bGFiZWw6Itei16jXmiDXnNeQINeZ15PXldeiIixnZW5kZXI6Im0ifSx2YWx1ZTp7bGFiZWw6Itei16jXmiIsZ2VuZGVyOiJtIn19LG49e3N0cmluZzp7dW5pdDoi16rXldeV15nXnSIsc2hvcnRMYWJlbDoi16fXpteoIixsb25nTGFiZWw6IteQ16jXldeaIn0sZmlsZTp7dW5pdDoi15HXmdeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxhcnJheTp7dW5pdDoi16TXqNeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxzZXQ6e3VuaXQ6Itek16jXmdeY15nXnSIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn0sbnVtYmVyOnt1bml0OiIiLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9fSxyPXU9PnU/dFt1XTp2b2lkIDAsbz11PT57Y29uc3QgbD1yKHUpO3JldHVybiBsP2wubGFiZWw6dT8/dC51bmtub3duLmxhYmVsfSxlPXU9PmDXlCR7byh1KX1gLGk9dT0+KHIodSk/LmdlbmRlcj8/Im0iKT09PSJmIj8i16bXqNeZ15vXlCDXnNeU15nXldeqIjoi16bXqNeZ15og15zXlNeZ15XXqiIsYT11PT51P25bdV0/P251bGw6bnVsbCxzPXtyZWdleDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sZW1haWw6e2xhYmVsOiLXm9eq15XXkdeqINeQ15nXnteZ15nXnCIsZ2VuZGVyOiJmIn0sdXJsOntsYWJlbDoi15vXqteV15HXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGVtb2ppOntsYWJlbDoi15DXmdee15XXkifXmSIsZ2VuZGVyOiJtIn0sdXVpZDp7bGFiZWw6IlVVSUQiLGdlbmRlcjoibSJ9LG5hbm9pZDp7bGFiZWw6Im5hbm9pZCIsZ2VuZGVyOiJtIn0sZ3VpZDp7bGFiZWw6IkdVSUQiLGdlbmRlcjoibSJ9LGN1aWQ6e2xhYmVsOiJjdWlkIixnZW5kZXI6Im0ifSxjdWlkMjp7bGFiZWw6ImN1aWQyIixnZW5kZXI6Im0ifSx1bGlkOntsYWJlbDoiVUxJRCIsZ2VuZGVyOiJtIn0seGlkOntsYWJlbDoiWElEIixnZW5kZXI6Im0ifSxrc3VpZDp7bGFiZWw6IktTVUlEIixnZW5kZXI6Im0ifSxkYXRldGltZTp7bGFiZWw6Iteq15DXqNeZ15og15XXltee158gSVNPIixnZW5kZXI6Im0ifSxkYXRlOntsYWJlbDoi16rXkNeo15nXmiBJU08iLGdlbmRlcjoibSJ9LHRpbWU6e2xhYmVsOiLXltee158gSVNPIixnZW5kZXI6Im0ifSxkdXJhdGlvbjp7bGFiZWw6Itee16nXmiDXltee158gSVNPIixnZW5kZXI6Im0ifSxpcHY0OntsYWJlbDoi15vXqteV15HXqiBJUHY0IixnZW5kZXI6ImYifSxpcHY2OntsYWJlbDoi15vXqteV15HXqiBJUHY2IixnZW5kZXI6ImYifSxjaWRydjQ6e2xhYmVsOiLXmNeV15XXlyBJUHY0IixnZW5kZXI6Im0ifSxjaWRydjY6e2xhYmVsOiLXmNeV15XXlyBJUHY2IixnZW5kZXI6Im0ifSxiYXNlNjQ6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCIsZ2VuZGVyOiJmIn0sYmFzZTY0dXJsOntsYWJlbDoi157Xl9eo15XXlteqINeR15HXodeZ16EgNjQg15zXm9eq15XXkdeV16og16jXqdeqIixnZW5kZXI6ImYifSxqc29uX3N0cmluZzp7bGFiZWw6Itee15fXqNeV15bXqiBKU09OIixnZW5kZXI6ImYifSxlMTY0OntsYWJlbDoi157Xodek16ggRS4xNjQiLGdlbmRlcjoibSJ9LGp3dDp7bGFiZWw6IkpXVCIsZ2VuZGVyOiJtIn0sZW5kc193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxpbmNsdWRlczp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sbG93ZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxzdGFydHNfd2l0aDp7bGFiZWw6Iten15zXmCIsZ2VuZGVyOiJtIn0sdXBwZXJjYXNlOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifX0sYz17bmFuOiJOYU4ifTtyZXR1cm4gdT0+e3N3aXRjaCh1LmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgbD11LmV4cGVjdGVkLGc9Y1tsPz8iIl0/P28obCksdj1TKHUuaW5wdXQpLCQ9Y1t2XT8/dFt2XT8ubGFiZWw/P3Y7cmV0dXJuL15bQS1aXS8udGVzdCh1LmV4cGVjdGVkKT9g16fXnNeYINec15Ag16rXp9eZ1586INem16jXmdeaINec15TXmdeV16ogaW5zdGFuY2VvZiAke3UuZXhwZWN0ZWR9LCDXlNeq16fXkdecICR7JH1gOmDXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiAke2d9LCDXlNeq16fXkdecICR7JH1gfWNhc2UiaW52YWxpZF92YWx1ZSI6e2lmKHUudmFsdWVzLmxlbmd0aD09PTEpcmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNei16jXmiDXl9eZ15nXkSDXnNeU15nXldeqICR7ayh1LnZhbHVlc1swXSl9YDtjb25zdCBsPXUudmFsdWVzLm1hcCgkPT5rKCQpKTtpZih1LnZhbHVlcy5sZW5ndGg9PT0yKXJldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2xbMF19INeQ15UgJHtsWzFdfWA7Y29uc3QgZz1sW2wubGVuZ3RoLTFdO3JldHVybmDXoteo15og15zXkCDXqten15nXnzog15TXkNek16nXqNeV15nXldeqINeU157XqteQ15nXnteV16og15TXnyAke2wuc2xpY2UoMCwtMSkuam9pbigiLCAiKX0g15DXlSAke2d9YH1jYXNlInRvb19iaWciOntjb25zdCBsPWEodS5vcmlnaW4pLGc9ZSh1Lm9yaWdpbj8/InZhbHVlIik7aWYodS5vcmlnaW49PT0ic3RyaW5nIilyZXR1cm5gJHtsPy5sb25nTGFiZWw/PyLXkNeo15XXmiJ9INee15PXmTogJHtnfSDXpteo15nXm9eUINec15TXm9eZ15wgJHt1Lm1heGltdW0udG9TdHJpbmcoKX0gJHtsPy51bml0Pz8iIn0gJHt1LmluY2x1c2l2ZT8i15DXlSDXpNeX15XXqiI6Itec15vXnCDXlNeZ15XXqteoIn1gLnRyaW0oKTtpZih1Lm9yaWdpbj09PSJudW1iZXIiKXtjb25zdCB5PXUuaW5jbHVzaXZlP2DXp9eY158g15DXlSDXqdeV15XXlCDXnC0ke3UubWF4aW11bX1gOmDXp9eY158g154tJHt1Lm1heGltdW19YDtyZXR1cm5g15LXk9eV15wg157Xk9eZOiAke2d9INem16jXmdeaINec15TXmdeV16ogJHt5fWB9aWYodS5vcmlnaW49PT0iYXJyYXkifHx1Lm9yaWdpbj09PSJzZXQiKXtjb25zdCB5PXUub3JpZ2luPT09InNldCI/Item16jXmdeb15QiOiLXpteo15nXmiIsRj11LmluY2x1c2l2ZT9gJHt1Lm1heGltdW19ICR7bD8udW5pdD8/IiJ9INeQ15Ug16TXl9eV16pgOmDXpNeX15XXqiDXni0ke3UubWF4aW11bX0gJHtsPy51bml0Pz8iIn1gO3JldHVybmDXkteT15XXnCDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7Rn1gLnRyaW0oKX1jb25zdCB2PXUuaW5jbHVzaXZlPyI8PSI6IjwiLCQ9aSh1Lm9yaWdpbj8/InZhbHVlIik7cmV0dXJuIGw/LnVuaXQ/YCR7bC5sb25nTGFiZWx9INee15PXmTogJHtnfSAkeyR9ICR7dn0ke3UubWF4aW11bS50b1N0cmluZygpfSAke2wudW5pdH1gOmAke2w/LmxvbmdMYWJlbD8/IteS15PXldecIn0g157Xk9eZOiAke2d9ICR7JH0gJHt2fSR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGw9YSh1Lm9yaWdpbiksZz1lKHUub3JpZ2luPz8idmFsdWUiKTtpZih1Lm9yaWdpbj09PSJzdHJpbmciKXJldHVybmAke2w/LnNob3J0TGFiZWw/PyLXp9em16gifSDXnteT15k6ICR7Z30g16bXqNeZ15vXlCDXnNeU15vXmdecICR7dS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bD8udW5pdD8/IiJ9ICR7dS5pbmNsdXNpdmU/IteQ15Ug15nXldeq16giOiLXnNek15fXldeqIn1gLnRyaW0oKTtpZih1Lm9yaWdpbj09PSJudW1iZXIiKXtjb25zdCB5PXUuaW5jbHVzaXZlP2DXkteT15XXnCDXkNeVINep15XXldeUINecLSR7dS5taW5pbXVtfWA6YNeS15PXldecINeeLSR7dS5taW5pbXVtfWA7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30g16bXqNeZ15og15zXlNeZ15XXqiAke3l9YH1pZih1Lm9yaWdpbj09PSJhcnJheSJ8fHUub3JpZ2luPT09InNldCIpe2NvbnN0IHk9dS5vcmlnaW49PT0ic2V0Ij8i16bXqNeZ15vXlCI6Item16jXmdeaIjtpZih1Lm1pbmltdW09PT0xJiZ1LmluY2x1c2l2ZSl7Y29uc3QgUj0odS5vcmlnaW49PT0ic2V0Iiwi15zXpNeX15XXqiDXpNeo15nXmCDXkNeX15MiKTtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtSfWB9Y29uc3QgRj11LmluY2x1c2l2ZT9gJHt1Lm1pbmltdW19ICR7bD8udW5pdD8/IiJ9INeQ15Ug15nXldeq16hgOmDXmdeV16rXqCDXni0ke3UubWluaW11bX0gJHtsPy51bml0Pz8iIn1gO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke0Z9YC50cmltKCl9Y29uc3Qgdj11LmluY2x1c2l2ZT8iPj0iOiI+IiwkPWkodS5vcmlnaW4/PyJ2YWx1ZSIpO3JldHVybiBsPy51bml0P2Ake2wuc2hvcnRMYWJlbH0g157Xk9eZOiAke2d9ICR7JH0gJHt2fSR7dS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7bC51bml0fWA6YCR7bD8uc2hvcnRMYWJlbD8/Iten15jXnyJ9INee15PXmTogJHtnfSAkeyR9ICR7dn0ke3UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGw9dTtpZihsLmZvcm1hdD09PSJzdGFydHNfd2l0aCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeq15fXmdecINeRICIke2wucHJlZml4fSJgO2lmKGwuZm9ybWF0PT09ImVuZHNfd2l0aCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeh16rXmdeZ150g15EgIiR7bC5zdWZmaXh9ImA7aWYobC5mb3JtYXQ9PT0iaW5jbHVkZXMiKXJldHVybmDXlNee15fXqNeV15bXqiDXl9eZ15nXkdeqINec15vXnNeV15wgIiR7bC5pbmNsdWRlc30iYDtpZihsLmZvcm1hdD09PSJyZWdleCIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXlNeq15DXmdedINec16rXkdeg15nXqiAke2wucGF0dGVybn1gO2NvbnN0IGc9c1tsLmZvcm1hdF0sdj1nPy5sYWJlbD8/bC5mb3JtYXQseT0oZz8uZ2VuZGVyPz8ibSIpPT09ImYiPyLXqten15nXoNeUIjoi16rXp9eZ158iO3JldHVybmAke3Z9INec15AgJHt5fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDXnteh16TXqCDXnNeQINeq16fXmdefOiDXl9eZ15nXkSDXnNeU15nXldeqINee15vXpNec15Qg16nXnCAke3UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDXntek16rXlyR7dS5rZXlzLmxlbmd0aD4xPyLXldeqIjoiIn0g15zXkCDXnteW15XXlCR7dS5rZXlzLmxlbmd0aD4xPyLXmdedIjoi15QifTogJHtfKHUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiLXqdeT15Qg15zXkCDXqten15nXnyDXkdeQ15XXkdeZ15nXp9eYIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLXp9ec15gg15zXkCDXqten15nXnyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDXoteo15og15zXkCDXqten15nXnyDXkSR7ZSh1Lm9yaWdpbj8/ImFycmF5Iil9YDtkZWZhdWx0OnJldHVybiLXp9ec15gg15zXkCDXqten15nXnyJ9fX07ZnVuY3Rpb24gcmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6bmYoKX19Y29uc3Qgb2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InpuYWtvdmEiLHZlcmI6ImltYXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92YSIsdmVyYjoiaW1hdGkifSxhcnJheTp7dW5pdDoic3RhdmtpIix2ZXJiOiJpbWF0aSJ9LHNldDp7dW5pdDoic3RhdmtpIix2ZXJiOiJpbWF0aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ1bm9zIixlbWFpbDoiZW1haWwgYWRyZXNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gaSB2cmlqZW1lIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB2cmlqZW1lIixkdXJhdGlvbjoiSVNPIHRyYWphbmplIixpcHY0OiJJUHY0IGFkcmVzYSIsaXB2NjoiSVB2NiBhZHJlc2EiLGNpZHJ2NDoiSVB2NCByYXNwb24iLGNpZHJ2NjoiSVB2NiByYXNwb24iLGJhc2U2NDoiYmFzZTY0IGtvZGlyYW5pIHRla3N0IixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RpcmFuaSB0ZWtzdCIsanNvbl9zdHJpbmc6IkpTT04gdGVrc3QiLGUxNjQ6IkUuMTY0IGJyb2oiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ1bm9zIn0sbz17bmFuOiJOYU4iLHN0cmluZzoidGVrc3QiLG51bWJlcjoiYnJvaiIsYm9vbGVhbjoiYm9vbGVhbiIsYXJyYXk6Im5peiIsb2JqZWN0OiJvYmpla3QiLHNldDoic2t1cCIsZmlsZToiZGF0b3Rla2EiLGRhdGU6ImRhdHVtIixiaWdpbnQ6ImJpZ2ludCIsc3ltYm9sOiJzaW1ib2wiLHVuZGVmaW5lZDoidW5kZWZpbmVkIixudWxsOiJudWxsIixmdW5jdGlvbjoiZnVua2NpamEiLG1hcDoibWFwYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZWlzcHJhdmFuIHVub3M6IG/EjWVrdWplIHNlIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYSBwcmltbGplbm8gamUgJHtzfWA6YE5laXNwcmF2YW4gdW5vczogb8SNZWt1amUgc2UgJHtpfSwgYSBwcmltbGplbm8gamUgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmVpc3ByYXZuYSB2cmlqZWRub3N0OiBvxI1la2l2YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmVpc3ByYXZuYSBvcGNpamE6IG/EjWVraXZhbm8gamVkbm8gb2QgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YFByZXZlbGlrbzogb8SNZWtpdmFubyBkYSAke3M/PyJ2cmlqZWRub3N0In0gaW1hICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbmF0YSJ9YDpgUHJldmVsaWtvOiBvxI1la2l2YW5vIGRhICR7cz8/InZyaWplZG5vc3QifSBidWRlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbikscz1vW2Uub3JpZ2luXT8/ZS5vcmlnaW47cmV0dXJuIGE/YFByZW1hbG86IG/EjWVraXZhbm8gZGEgJHtzfSBpbWEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZW1hbG86IG/EjWVraXZhbm8gZGEgJHtzfSBidWRlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZWlzcHJhdmFuIHRla3N0OiBtb3JhIHphcG/EjWluamF0aSBzICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgemF2csWhYXZhdGkgcyAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgc2FkcsW+YXZhdGkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgb2Rnb3ZhcmF0aSB1em9ya3UgJHtpLnBhdHRlcm59YDpgTmVpc3ByYXZuYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVpc3ByYXZhbiBicm9qOiBtb3JhIGJpdGkgdmnFoWVrcmF0bmlrIG9kICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lcHJlcG96bmF0JHtlLmtleXMubGVuZ3RoPjE/Imkga2xqdcSNZXZpIjoiIGtsanXEjSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5laXNwcmF2YW4ga2xqdcSNIHUgJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOZWlzcHJhdmFuIHVub3MiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmVpc3ByYXZuYSB2cmlqZWRub3N0IHUgJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJOZWlzcHJhdmFuIHVub3MifX19O2Z1bmN0aW9uIGFmKCl7cmV0dXJue2xvY2FsZUVycm9yOm9mKCl9fWNvbnN0IHNmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoibGVneWVuIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibGVneWVuIn0sYXJyYXk6e3VuaXQ6ImVsZW0iLHZlcmI6ImxlZ3llbiJ9LHNldDp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImJlbWVuZXQiLGVtYWlsOiJlbWFpbCBjw61tIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaWTFkWLDqWx5ZWciLGRhdGU6IklTTyBkw6F0dW0iLHRpbWU6IklTTyBpZMWRIixkdXJhdGlvbjoiSVNPIGlkxZFpbnRlcnZhbGx1bSIsaXB2NDoiSVB2NCBjw61tIixpcHY2OiJJUHY2IGPDrW0iLGNpZHJ2NDoiSVB2NCB0YXJ0b23DoW55IixjaWRydjY6IklQdjYgdGFydG9tw6FueSIsYmFzZTY0OiJiYXNlNjQta8OzZG9sdCBzdHJpbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWvDs2RvbHQgc3RyaW5nIixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0IHN6w6FtIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiYmVtZW5ldCJ9LG89e25hbjoiTmFOIixudW1iZXI6InN6w6FtIixhcnJheToidMO2bWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhIGthcG90dCDDqXJ0w6lrICR7c31gOmDDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayAke2l9LCBhIGthcG90dCDDqXJ0w6lrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7ayhlLnZhbHVlc1swXSl9YDpgw4lydsOpbnl0ZWxlbiBvcGNpw7M6IHZhbGFtZWx5aWsgw6lydMOpayB2w6FydCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMO6bCBuYWd5OiAke2Uub3JpZ2luPz8iw6lydMOpayJ9IG3DqXJldGUgdMO6bCBuYWd5ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW0ifWA6YFTDumwgbmFneTogYSBiZW1lbmV0aSDDqXJ0w6lrICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gdMO6bCBuYWd5OiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbn0gbcOpcmV0ZSB0w7psIGtpY3NpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUw7psIGtpY3NpOiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbn0gdMO6bCBraWNzaSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kucHJlZml4fSIgw6lydMOpa2tlbCBrZWxsIGtlemTFkWRuaWVgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLnN1ZmZpeH0iIMOpcnTDqWtrZWwga2VsbCB2w6lnesWRZG5pZWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5pbmNsdWRlc30iIMOpcnTDqWtldCBrZWxsIHRhcnRhbG1hem5pYWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogJHtpLnBhdHRlcm59IG1pbnTDoW5hayBrZWxsIG1lZ2ZlbGVsbmllYDpgw4lydsOpbnl0ZWxlbiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gw4lydsOpbnl0ZWxlbiBzesOhbTogJHtlLmRpdmlzb3J9IHTDtmJic3rDtnLDtnPDqW5layBrZWxsIGxlbm5pZWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYElzbWVyZXRsZW4ga3VsY3Mke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYMOJcnbDqW55dGVsZW4ga3VsY3MgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDDiXJ2w6lueXRlbGVuIMOpcnTDqWs6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLDiXJ2w6lueXRlbGVuIGJlbWVuZXQifX19O2Z1bmN0aW9uIGNmKCl7cmV0dXJue2xvY2FsZUVycm9yOnNmKCl9fWZ1bmN0aW9uIF9zKHQsbixyKXtyZXR1cm4gTWF0aC5hYnModCk9PT0xP246cn1mdW5jdGlvbiBDZSh0KXtpZighdClyZXR1cm4iIjtjb25zdCBuPVsi1aEiLCLVpSIsItWoIiwi1asiLCLVuCIsItW41oIiLCLWhSJdLHI9dFt0Lmxlbmd0aC0xXTtyZXR1cm4gdCsobi5pbmNsdWRlcyhyKT8i1bYiOiLVqCIpfWNvbnN0IHVmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItW21bfVodW2IixtYW55OiLVttW31aHVttW21aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn0sZmlsZTp7dW5pdDp7b25lOiLVotWh1bXVqSIsbWFueToi1aLVodW11anVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxhcnJheTp7dW5pdDp7b25lOiLVv9Wh1oDWgCIsbWFueToi1b/VodaA1oDVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxzZXQ6e3VuaXQ6e29uZToi1b/VodaA1oAiLG1hbnk6ItW/1aHWgNaA1aXWgCJ9LHZlcmI6ItW41oLVttWl1bbVodWsIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItW01bjWgtW/1oQiLGVtYWlsOiLVp9WsLiDVsNWh1b3WgdWlIix1cmw6IlVSTCIsZW1vamk6ItWn1bTVuNW71asiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDVodW01b3VodWp1avVviDWhyDVqtWh1bQiLGRhdGU6IklTTyDVodW01b3VodWp1avVviIsdGltZToiSVNPINWq1aHVtCIsZHVyYXRpb246IklTTyDVv9aH1bjVstW41oLVqdW11bjWgtW2IixpcHY0OiJJUHY0INWw1aHVvdaB1aUiLGlwdjY6IklQdjYg1bDVodW91oHVpSIsY2lkcnY0OiJJUHY0INW01avVu9Wh1a/VodW11oQiLGNpZHJ2NjoiSVB2NiDVtNWr1bvVodWv1aHVtdaEIixiYXNlNjQ6ImJhc2U2NCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg1bHWh9Wh1bnVodaD1bjVviDVv9W41bIiLGpzb25fc3RyaW5nOiJKU09OINW/1bjVsiIsZTE2NDoiRS4xNjQg1bDVodW01aHWgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItW01bjWgtW/1oQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLVqdWr1b4iLGFycmF5OiLVptWh1bbVo9W+1aHVriJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINW91b/VodaB1b7VpdWsINWnICR7c31gOmDVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke2l9LCDVvdW/1aHWgdW+1aXVrCDVpyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW04oCkINW91brVodW91b7VuNaC1bQg1afWgCAke2soZS52YWx1ZXNbMV0pfWA6YNWN1a3VodWsINW/1aHWgNWi1aXWgNWh1a/igKQg1b3VutWh1b3VvtW41oLVtCDVp9aAINWw1aXVv9aH1bXVodWs1bbVpdaA1avWgSDVtNWl1a/VqNWdICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz1fcyhzLGEudW5pdC5vbmUsYS51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbj8/ItWh1oDVqtWl1oQiKX0g1a/VuNaC1bbVpdW21aEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDVidWh1oPVodWm1aHVttaBINW01aXVriDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbj8/ItWh1oDVqtWl1oQiKX0g1azVq9W21asgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9X3MocyxhLnVuaXQub25lLGEudW5pdC5tYW55KTtyZXR1cm5g1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbil9INWv1bjWgtW21aXVttWhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g1YnVodaD1aHVptWh1bbWgSDWg9W41oTWgCDVodaA1arVpdaE4oCkINW91brVodW91b7VuNaC1bQg1acsINW41oAgJHtDZShlLm9yaWdpbil9INWs1avVttWrICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1b3Vr9W91b7VqyAiJHtpLnByZWZpeH0iLdW41b5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVodW+1aHWgNW/1b7VqyAiJHtpLnN1ZmZpeH0iLdW41b5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINW61aHWgNW41oLVttWh1a/VqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWw1aHVtNWh1brVodW/1aHVvdWt1aHVttWrICR7aS5wYXR0ZXJufSDVsdaH1aHVudWh1oPVq9W2YDpg1Y3VrdWh1awgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNWN1a3VodWsINWp1avVvuKApCDVutWl1b/WhCDVpyDVotWh1abVtNWh1brVodW/1avVryDVrNWr1bbVqyAke2UuZGl2aXNvcn0t1atgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDVidWz1aHVttWh1bnVvtWh1a4g1aLVodW21aHVrNWrJHtlLmtleXMubGVuZ3RoPjE/ItW21aXWgCI6IiJ9LiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNWN1a3VodWsINWi1aHVttWh1azVqyAke0NlKGUub3JpZ2luKX0t1bjWgtW0YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNWN1a3VodWsINWh1oDVqtWl1oQgJHtDZShlLm9yaWdpbil9LdW41oLVtGA7ZGVmYXVsdDpyZXR1cm4i1Y3VrdWh1awg1bTVuNaC1b/WhNWh1aPWgNW41oLVtCJ9fX07ZnVuY3Rpb24gbGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6dWYoKX19Y29uc3QgZGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJtZW1pbGlraSJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6Im1lbWlsaWtpIn0sYXJyYXk6e3VuaXQ6Iml0ZW0iLHZlcmI6Im1lbWlsaWtpIn0sc2V0Ont1bml0OiJpdGVtIix2ZXJiOiJtZW1pbGlraSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFuZ2dhbCBkYW4gd2FrdHUgZm9ybWF0IElTTyIsZGF0ZToidGFuZ2dhbCBmb3JtYXQgSVNPIix0aW1lOiJqYW0gZm9ybWF0IElTTyIsZHVyYXRpb246ImR1cmFzaSBmb3JtYXQgSVNPIixpcHY0OiJhbGFtYXQgSVB2NCIsaXB2NjoiYWxhbWF0IElQdjYiLGNpZHJ2NDoicmVudGFuZyBhbGFtYXQgSVB2NCIsY2lkcnY2OiJyZW50YW5nIGFsYW1hdCBJUHY2IixiYXNlNjQ6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGVuZ2FuIGVua29kZSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoiYW5na2EgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGl0ZXJpbWEgJHtzfWA6YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7aX0sIGRpdGVyaW1hICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuICR7ayhlLnZhbHVlc1swXSl9YDpgUGlsaWhhbiB0aWRhayB2YWxpZDogZGloYXJhcGthbiBzYWxhaCBzYXR1IGRhcmkgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbj8/InZhbHVlIn0gbWVtaWxpa2kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuIn1gOmBUZXJsYWx1IGJlc2FyOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IG1lbmphZGkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW1pbGlraSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGloYXJhcGthbiAke2Uub3JpZ2lufSBtZW5qYWRpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIGRpbXVsYWkgZGVuZ2FuICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgYmVyYWtoaXIgZGVuZ2FuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBtZW55ZXJ0YWthbiAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBzZXN1YWkgcG9sYSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gdGlkYWsgdmFsaWRgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gQW5na2EgdGlkYWsgdmFsaWQ6IGhhcnVzIGtlbGlwYXRhbiBkYXJpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpICR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gS3VuY2kgdGlkYWsgdmFsaWQgZGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IHRpZGFrIHZhbGlkIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pbGFpIHRpZGFrIHZhbGlkIGRpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCB0aWRhayB2YWxpZCJ9fX07ZnVuY3Rpb24gbWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZGYoKX19Y29uc3QgcGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InN0YWZpIix2ZXJiOiJhw7AgaGFmYSJ9LGZpbGU6e3VuaXQ6ImLDpnRpIix2ZXJiOiJhw7AgaGFmYSJ9LGFycmF5Ont1bml0OiJobHV0aSIsdmVyYjoiYcOwIGhhZmEifSxzZXQ6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaWxkaSIsZW1haWw6Im5ldGZhbmciLHVybDoidmVmc2zDs8OwIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYWdzZXRuaW5nIG9nIHTDrW1pIixkYXRlOiJJU08gZGFnc2V0bmluZyIsdGltZToiSVNPIHTDrW1pIixkdXJhdGlvbjoiSVNPIHTDrW1hbGVuZ2QiLGlwdjQ6IklQdjQgYWRkcmVzcyIsaXB2NjoiSVB2NiBhZGRyZXNzIixjaWRydjQ6IklQdjQgcmFuZ2UiLGNpZHJ2NjoiSVB2NiByYW5nZSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCBzdHJlbmd1ciIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJlbmd1ciIsanNvbl9zdHJpbmc6IkpTT04gc3RyZW5ndXIiLGUxNjQ6IkUuMTY0IHTDtmx1Z2lsZGkiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJnaWxkaSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7Dum1lciIsYXJyYXk6ImZ5bGtpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFJhbmd0IGdpbGRpOiDDnsO6IHNsw7NzdCBpbm4gJHtzfSDDvmFyIHNlbSDDoSBhw7AgdmVyYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH1gOmBSYW5ndCBnaWxkaTogw57DuiBzbMOzc3QgaW5uICR7c30gw75hciBzZW0gw6EgYcOwIHZlcmEgJHtpfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gUmFuZ3QgZ2lsZGk6IGdlcnQgcsOhw7AgZnlyaXIgJHtrKGUudmFsdWVzWzBdKX1gOmDDk2dpbHQgdmFsOiBtw6EgdmVyYSBlaXR0IGFmIGVmdGlyZmFyYW5kaSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gT2Ygc3TDs3J0OiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2luPz8iZ2lsZGkifSBoYWZpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImhsdXRpIn1gOmBPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IHPDqSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2lufSBoYWZpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBPZiBsw610acOwOiBnZXJ0IGVyIHLDocOwIGZ5cmlyIGHDsCAke2Uub3JpZ2lufSBzw6kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBieXJqYSDDoSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DDk2dpbGR1ciBzdHJlbmd1cjogdmVyw7B1ciBhw7AgZW5kYSDDoSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBpbm5paGFsZGEgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBmeWxnamEgbXluc3RyaSAke2kucGF0dGVybn1gOmBSYW5ndCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gUsO2bmcgdGFsYTogdmVyw7B1ciBhw7AgdmVyYSBtYXJnZmVsZGkgYWYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gw5PDvmVra3QgJHtlLmtleXMubGVuZ3RoPjE/ImlyIGx5a2xhciI6InVyIGx5a2lsbCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFJhbmd1ciBseWtpbGwgw60gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlJhbmd0IGdpbGRpIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFJhbmd0IGdpbGRpIMOtICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJSYW5ndCBnaWxkaSJ9fX07ZnVuY3Rpb24gZmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6cGYoKX19Y29uc3QgZ2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmF0dGVyaSIsdmVyYjoiYXZlcmUifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJhdmVyZSJ9LGFycmF5Ont1bml0OiJlbGVtZW50aSIsdmVyYjoiYXZlcmUifSxzZXQ6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImluZGlyaXp6byBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJvcmEgSVNPIixkdXJhdGlvbjoiZHVyYXRhIElTTyIsaXB2NDoiaW5kaXJpenpvIElQdjQiLGlwdjY6ImluZGlyaXp6byBJUHY2IixjaWRydjQ6ImludGVydmFsbG8gSVB2NCIsY2lkcnY2OiJpbnRlcnZhbGxvIElQdjYiLGJhc2U2NDoic3RyaW5nYSBjb2RpZmljYXRhIGluIGJhc2U2NCIsYmFzZTY0dXJsOiJVUkwgY29kaWZpY2F0YSBpbiBiYXNlNjQiLGpzb25fc3RyaW5nOiJzdHJpbmdhIEpTT04iLGUxNjQ6Im51bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoibnVtZXJvIixhcnJheToidmV0dG9yZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByaWNldnV0byAke3N9YDpgSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7aX0sIHJpY2V2dXRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyAke2soZS52YWx1ZXNbMF0pfWA6YE9wemlvbmUgbm9uIHZhbGlkYTogYXR0ZXNvIHVubyB0cmEgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGF2ZXJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRpIn1gOmBUcm9wcG8gZ3JhbmRlOiAke2Uub3JpZ2luPz8idmFsb3JlIn0gZGV2ZSBlc3NlcmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgYXZlcmUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3BwbyBwaWNjb2xvOiAke2Uub3JpZ2lufSBkZXZlIGVzc2VyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluaXppYXJlIGNvbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgdGVybWluYXJlIGNvbiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBpbmNsdWRlcmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSBjb3JyaXNwb25kZXJlIGFsIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW5wdXQgbm9uIHZhbGlkbzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bWVybyBub24gdmFsaWRvOiBkZXZlIGVzc2VyZSB1biBtdWx0aXBsbyBkaSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGlhdiR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiZSJ9IG5vbiByaWNvbm9zY2l1dCR7ZS5rZXlzLmxlbmd0aD4xPyJlIjoiYSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoaWF2ZSBub24gdmFsaWRhIGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJJbnB1dCBub24gdmFsaWRvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yZSBub24gdmFsaWRvIGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnB1dCBub24gdmFsaWRvIn19fTtmdW5jdGlvbiB2Zigpe3JldHVybntsb2NhbGVFcnJvcjpnZigpfX1jb25zdCBoZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5paH5a2XIix2ZXJiOiLjgafjgYLjgosifSxmaWxlOnt1bml0OiLjg5DjgqTjg4giLHZlcmI6IuOBp+OBguOCiyJ9LGFycmF5Ont1bml0OiLopoHntKAiLHZlcmI6IuOBp+OBguOCiyJ9LHNldDp7dW5pdDoi6KaB57SgIix2ZXJiOiLjgafjgYLjgosifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi5YWl5Yqb5YCkIixlbWFpbDoi44Oh44O844Or44Ki44OJ44Os44K5Iix1cmw6IlVSTCIsZW1vamk6Iue1teaWh+WtlyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNP5pel5pmCIixkYXRlOiJJU0/ml6Xku5giLHRpbWU6IklTT+aZguWIuyIsZHVyYXRpb246IklTT+acn+mWkyIsaXB2NDoiSVB2NOOCouODieODrOOCuSIsaXB2NjoiSVB2NuOCouODieODrOOCuSIsY2lkcnY0OiJJUHY056+E5ZuyIixjaWRydjY6IklQdjbnr4Tlm7IiLGJhc2U2NDoiYmFzZTY044Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixiYXNlNjR1cmw6ImJhc2U2NHVybOOCqOODs+OCs+ODvOODieaWh+Wtl+WIlyIsanNvbl9zdHJpbmc6IkpTT07mloflrZfliJciLGUxNjQ6IkUuMTY055Wq5Y+3Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi5YWl5Yqb5YCkIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi5pWw5YCkIixhcnJheToi6YWN5YiXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOeEoeWKueOBquWFpeWKmzogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtzfeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBquWFpeWKmzogJHtpfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn+OBjOOAgSR7c33jgYzlhaXlipvjgZXjgozjgb7jgZfjgZ9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOeEoeWKueOBquWFpeWKmzogJHtrKGUudmFsdWVzWzBdKX3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ9gOmDnhKHlirnjgarpgbjmip46ICR7XyhlLnZhbHVlcywi44CBIil944Gu44GE44Ga44KM44GL44Gn44GC44KL5b+F6KaB44GM44GC44KK44G+44GZYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLku6XkuIvjgafjgYLjgosiOiLjgojjgorlsI/jgZXjgYQiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOWkp+OBjeOBmeOBjuOCi+WApDogJHtlLm9yaWdpbj8/IuWApCJ944GvJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2EudW5pdD8/Iuimgee0oCJ9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWkp+OBjeOBmeOBjuOCi+WApDogJHtlLm9yaWdpbj8/IuWApCJ944GvJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2l95b+F6KaB44GM44GC44KK44G+44GZYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuS7peS4iuOBp+OBguOCiyI6IuOCiOOCiuWkp+OBjeOBhCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHthLnVuaXR9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWA6YOWwj+OBleOBmeOBjuOCi+WApDogJHtlLm9yaWdpbn3jga8ke2UubWluaW11bS50b1N0cmluZygpfSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLnByZWZpeH0i44Gn5aeL44G+44KL5b+F6KaB44GM44GC44KK44G+44GZYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kuc3VmZml4fSLjgafntYLjgo/jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g54Sh5Yq544Gq5paH5a2X5YiXOiAiJHtpLmluY2x1ZGVzfSLjgpLlkKvjgoDlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09InJlZ2V4Ij9g54Sh5Yq544Gq5paH5a2X5YiXOiDjg5Hjgr/jg7zjg7Mke2kucGF0dGVybn3jgavkuIDoh7TjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmDnhKHlirnjgaoke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g54Sh5Yq544Gq5pWw5YCkOiAke2UuZGl2aXNvcn3jga7lgI3mlbDjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDoqo3orZjjgZXjgozjgabjgYTjgarjgYTjgq3jg7wke2Uua2V5cy5sZW5ndGg+MT8i576kIjoiIn06ICR7XyhlLmtleXMsIuOAgSIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW595YaF44Gu54Sh5Yq544Gq44Kt44O8YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLnhKHlirnjgarlhaXlipsiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarlgKRgO2RlZmF1bHQ6cmV0dXJuIueEoeWKueOBquWFpeWKmyJ9fX07ZnVuY3Rpb24gJGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6aGYoKX19Y29uc3QgX2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuGDoeGDmOGDm+GDkeGDneGDmuGDnSIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LGZpbGU6e3VuaXQ6IuGDkeGDkOGDmOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LGFycmF5Ont1bml0OiLhg5Thg5rhg5Thg5vhg5Thg5zhg6Lhg5giLHZlcmI6IuGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EifSxzZXQ6e3VuaXQ6IuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiLGVtYWlsOiLhg5Thg5ot4YOk4YOd4YOh4YOi4YOY4YOhIOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsdXJsOiJVUkwiLGVtb2ppOiLhg5Thg5vhg53hg6/hg5giLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IuGDl+GDkOGDoOGDmOGDpuGDmC3hg5Phg6Dhg50iLGRhdGU6IuGDl+GDkOGDoOGDmOGDpuGDmCIsdGltZToi4YOT4YOg4YOdIixkdXJhdGlvbjoi4YOu4YOQ4YOc4YOS4YOg4YOr4YOa4YOY4YOV4YOd4YOR4YOQIixpcHY0OiJJUHY0IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsaXB2NjoiSVB2NiDhg5vhg5jhg6Hhg5Dhg5vhg5Dhg6Dhg5fhg5giLGNpZHJ2NDoiSVB2NCDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGNpZHJ2NjoiSVB2NiDhg5Phg5jhg5Dhg57hg5Dhg5bhg53hg5zhg5giLGJhc2U2NDoiYmFzZTY0LeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg5Xhg5Thg5rhg5giLGJhc2U2NHVybDoiYmFzZTY0dXJsLeGDmeGDneGDk+GDmOGDoOGDlOGDkeGDo+GDmuGDmCDhg5Xhg5Thg5rhg5giLGpzb25fc3RyaW5nOiJKU09OIOGDleGDlOGDmuGDmCIsZTE2NDoiRS4xNjQg4YOc4YOd4YOb4YOU4YOg4YOYIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4YOg4YOY4YOq4YOu4YOV4YOYIixzdHJpbmc6IuGDleGDlOGDmuGDmCIsYm9vbGVhbjoi4YOR4YOj4YOa4YOU4YOQ4YOc4YOYIixmdW5jdGlvbjoi4YOk4YOj4YOc4YOl4YOq4YOY4YOQIixhcnJheToi4YOb4YOQ4YOh4YOY4YOV4YOYIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke3N9YDpg4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7aX0sIOGDm+GDmOGDpuGDlOGDkeGDo+GDmuGDmCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtrKGUudmFsdWVzWzBdKX1gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOQ4YOg4YOY4YOQ4YOc4YOi4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5jhg5Ag4YOU4YOg4YOXLeGDlOGDoOGDl+GDmCAke18oZS52YWx1ZXMsInwiKX0t4YOT4YOQ4YOcYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg5Phg5jhg5Phg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2luPz8i4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOT4YOY4YOT4YOYOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbj8/IuGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCJ9IOGDmOGDp+GDneGDoSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhg5bhg5Thg5Phg5vhg5Thg6Lhg5Dhg5Mg4YOe4YOQ4YOi4YOQ4YOg4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtlLm9yaWdpbn0g4YOY4YOn4YOd4YOhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOY4YOs4YOn4YOU4YOR4YOd4YOT4YOU4YOhICIke2kucHJlZml4fSIt4YOY4YOXYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOb4YOX4YOQ4YOV4YOg4YOT4YOU4YOR4YOd4YOT4YOU4YOhICIke2kuc3VmZml4fSIt4YOY4YOXYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5jhg6rhg5Dhg5Xhg5Phg5Thg6EgIiR7aS5pbmNsdWRlc30iLeGDoWA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOV4YOU4YOa4YOYOiDhg6Phg5zhg5Phg5Ag4YOo4YOU4YOU4YOh4YOQ4YOR4YOQ4YOb4YOU4YOR4YOd4YOT4YOU4YOhIOGDqOGDkOGDkeGDmuGDneGDnOGDoSAke2kucGF0dGVybn1gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5ggJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6Dhg5jhg6rhg67hg5Xhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6fhg53hg6EgJHtlLmRpdmlzb3J9LeGDmOGDoSDhg6/hg5Thg6Dhg5Dhg5Phg5hgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDhg6Phg6rhg5zhg53hg5Hhg5gg4YOS4YOQ4YOh4YOQ4YOm4YOU4YORJHtlLmtleXMubGVuZ3RoPjE/IuGDlOGDkeGDmCI6IuGDmCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Hhg5ggJHtlLm9yaWdpbn0t4YOo4YOYYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AgJHtlLm9yaWdpbn0t4YOo4YOYYDtkZWZhdWx0OnJldHVybiLhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQIn19fTtmdW5jdGlvbiBiZigpe3JldHVybntsb2NhbGVFcnJvcjpfZigpfX1jb25zdCB5Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4Z6P4Z694Z6i4Z6A4Z+S4Z6f4Z6aIix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifSxmaWxlOnt1bml0OiLhnpThn4MiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGFycmF5Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LHNldDp7dW5pdDoi4Z6S4Z624Z6P4Z67Iix2ZXJiOiLhnoLhnr3hnprhnpjhnrbhnpMifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIixlbWFpbDoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6T4Z6i4Z+K4Z644Z6Y4Z+C4Z6bIix1cmw6IlVSTCIsZW1vamk6IuGen+GeieGfkuGeieGetuGeouGetuGemuGemOGfkuGemOGejuGfjSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIOGek+Get+GehOGemOGfieGfhOGehCBJU08iLGRhdGU6IuGegOGetuGem+GelOGemuGet+GeheGfkuGehuGfgeGekSBJU08iLHRpbWU6IuGemOGfieGfhOGehCBJU08iLGR1cmF0aW9uOiLhnprhnpnhn4jhnpbhn4HhnpsgSVNPIixpcHY0OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsaXB2Njoi4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjYiLGNpZHJ2NDoi4Z6K4Z+C4Z6T4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjQiLGNpZHJ2Njoi4Z6K4Z+C4Z6T4Z6i4Z624Z6f4Z6Z4Z6K4Z+S4Z6L4Z624Z6TIElQdjYiLGJhc2U2NDoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6i4Z+K4Z634Z6A4Z684Z6KIGJhc2U2NCIsYmFzZTY0dXJsOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6aIEpTT04iLGUxNjQ6IuGem+GfgeGegSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGemyJ9LG89e25hbjoiTmFOIixudW1iZXI6IuGem+GfgeGegSIsYXJyYXk6IuGeouGetuGemuGfgSAoQXJyYXkpIixudWxsOiLhnoLhn5LhnpjhnrbhnpPhno/hnpjhn5Lhnpvhn4MgKG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3N9YDpg4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2l9IOGelOGfieGeu+Gek+GfkuGej+GfguGekeGekeGeveGem+GelOGetuGekyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ayhlLnZhbHVlc1swXSl9YDpg4Z6H4Z6Y4Z+S4Z6a4Z6+4Z6f4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeh+GetuGemOGeveGemeGegOGfkuGek+Geu+GehOGeheGfhuGejuGfhOGemCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuGekuGetuGej+GeuyJ9YDpg4Z6S4Z+G4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2luPz8i4Z6P4Z6Y4Z+S4Z6b4Z+DIn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDhno/hnrzhnoXhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW59ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGeheGetuGelOGfi+GeleGfkuGej+GevuGemOGeiuGfhOGemSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6U4Z6J4Z+S4Z6F4Z6U4Z+L4Z6K4Z+E4Z6ZICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGemOGetuGekyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g4Z6B4Z+S4Z6f4Z+C4Z6i4Z6A4Z+S4Z6f4Z6a4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGej+GfguGeleGfkuGeguGevOGeleGfkuGeguGehOGek+GeueGehOGekeGemOGfkuGemuGehOGfi+GeiuGfguGem+GelOGetuGek+GegOGfhuGejuGej+GfiyAke2kucGF0dGVybn1gOmDhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5YgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOGem+GfgeGegeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5Lhnprhnrzhnpzhno/hn4LhnofhnrbhnpbhnqDhnrvhnoLhnrvhno7hnpPhn4MgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4Z6a4Z6A4Z6D4Z6+4Z6J4Z6f4Z+E4Z6Y4Z634Z6T4Z6f4Z+S4Z6C4Z624Z6b4Z+L4Z+WICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4Z6f4Z+E4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z6T4Z+F4Z6A4Z+S4Z6T4Z674Z6EICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpwifX19O2Z1bmN0aW9uIHZsKCl7cmV0dXJue2xvY2FsZUVycm9yOnlmKCl9fWZ1bmN0aW9uIGtmKCl7cmV0dXJuIHZsKCl9Y29uc3QgU2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuusuOyekCIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6IuuwlOydtO2KuCIsdmVyYjoidG8gaGF2ZSJ9LGFycmF5Ont1bml0OiLqsJwiLHZlcmI6InRvIGhhdmUifSxzZXQ6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLsnoXroKUiLGVtYWlsOiLsnbTrqZTsnbwg7KO87IaMIix1cmw6IlVSTCIsZW1vamk6IuydtOuqqOyngCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOuCoOynnOyLnOqwhCIsZGF0ZToiSVNPIOuCoOynnCIsdGltZToiSVNPIOyLnOqwhCIsZHVyYXRpb246IklTTyDquLDqsIQiLGlwdjQ6IklQdjQg7KO87IaMIixpcHY2OiJJUHY2IOyjvOyGjCIsY2lkcnY0OiJJUHY0IOuylOychCIsY2lkcnY2OiJJUHY2IOuylOychCIsYmFzZTY0OiJiYXNlNjQg7J247L2U65SpIOusuOyekOyXtCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwg7J247L2U65SpIOusuOyekOyXtCIsanNvbl9zdHJpbmc6IkpTT04g66y47J6Q7Je0IixlMTY0OiJFLjE2NCDrsojtmLgiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLsnoXroKUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg67Cb7J2AIO2DgOyeheydgCAke3N97J6F64uI64ukYDpg7J6Y66q765CcIOyeheugpTog7JiI7IOBIO2DgOyeheydgCAke2l9LCDrsJvsnYAg7YOA7J6F7J2AICR7c33snoXri4jri6RgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOyemOuqu+uQnCDsnoXroKU6IOqwkuydgCAke2soZS52YWx1ZXNbMF0pfSDsnbTslrTslbwg7ZWp64uI64ukYDpg7J6Y66q765CcIOyYteyFmDogJHtfKGUudmFsdWVzLCLrmJDripQgIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLsnbTtlZgiOiLrr7jrp4wiLGE9aT09PSLrr7jrp4wiPyLsnbTslrTslbwg7ZWp64uI64ukIjoi7Jes7JW8IO2VqeuLiOuLpCIscz1uKGUub3JpZ2luKSxjPXM/LnVuaXQ/PyLsmpTshowiO3JldHVybiBzP2Ake2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0ke2N9ICR7aX0ke2F9YDpgJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDtgb3ri4jri6Q6ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7aX0ke2F9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuydtOyDgSI6Iuy0iOqzvCIsYT1pPT09IuydtOyDgSI/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixzPW4oZS5vcmlnaW4pLGM9cz8udW5pdD8/IuyalOyGjCI7cmV0dXJuIHM/YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSR7Y30gJHtpfSR7YX1gOmAke2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IOyekeyKteuLiOuLpDogJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtpfSR7YX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5wcmVmaXh9IijsnLwp66GcIOyLnOyeke2VtOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kuc3VmZml4fSIo7Jy8KeuhnCDrgZ3rgpjslbwg7ZWp64uI64ukYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOyemOuqu+uQnCDrrLjsnpDsl7Q6ICIke2kuaW5jbHVkZXN9IuydhCjrpbwpIO2PrO2VqO2VtOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09InJlZ2V4Ij9g7J6Y66q765CcIOusuOyekOyXtDog7KCV6rec7IudICR7aS5wYXR0ZXJufSDtjKjthLTqs7wg7J287LmY7ZW07JW8IO2VqeuLiOuLpGA6YOyemOuqu+uQnCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g7J6Y66q765CcIOyIq+yekDogJHtlLmRpdmlzb3J97J2YIOuwsOyImOyXrOyVvCDtlanri4jri6RgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDsnbjsi53tlaAg7IiYIOyXhuuKlCDtgqQ6ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g7J6Y66q765CcIO2CpDogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g7J6Y66q765CcIOqwkjogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuyemOuqu+uQnCDsnoXroKUifX19O2Z1bmN0aW9uIHdmKCl7cmV0dXJue2xvY2FsZUVycm9yOlNmKCl9fWNvbnN0IG10PXQ9PnQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtmdW5jdGlvbiBicyh0KXtjb25zdCBuPU1hdGguYWJzKHQpLHI9biUxMCxvPW4lMTAwO3JldHVybiBvPj0xMSYmbzw9MTl8fHI9PT0wPyJtYW55IjpyPT09MT8ib25lIjoiZmV3In1jb25zdCBJZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiJzaW1ib2xpcyIsZmV3OiJzaW1ib2xpYWkiLG1hbnk6InNpbWJvbGnFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBpbGdlc27ElyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgdHJ1bXBlc27ElyBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgdHJ1bXBlc27ElyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgaWxnZXNuxJcga2FpcCJ9fX0sZmlsZTp7dW5pdDp7b25lOiJiYWl0YXMiLGZldzoiYmFpdGFpIixtYW55OiJiYWl0xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgZGlkZXNuaXMga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG1hxb5lc25pcyBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgYsWrdGkgbmUgbWHFvmVzbmlzIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBkaWRlc25pcyBrYWlwIn19fSxhcnJheTp7dW5pdDp7b25lOiJlbGVtZW50xIUiLGZldzoiZWxlbWVudHVzIixtYW55OiJlbGVtZW50xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBkYXVnaWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIG1hxb5pYXUga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgbWHFvmlhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXAifX19LHNldDp7dW5pdDp7b25lOiJlbGVtZW50xIUiLGZldzoiZWxlbWVudHVzIixtYW55OiJlbGVtZW50xbMifSx2ZXJiOntzbWFsbGVyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBkYXVnaWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIG1hxb5pYXUga2FpcCJ9LGJpZ2dlcjp7aW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbmUgbWHFvmlhdSBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBkYXVnaWF1IGthaXAifX19fTtmdW5jdGlvbiBuKGUsaSxhLHMpe2NvbnN0IGM9dFtlXT8/bnVsbDtyZXR1cm4gYz09PW51bGw/Yzp7dW5pdDpjLnVuaXRbaV0sdmVyYjpjLnZlcmJbc11bYT8iaW5jbHVzaXZlIjoibm90SW5jbHVzaXZlIl19fWNvbnN0IHI9e3JlZ2V4OiLEr3Zlc3RpcyIsZW1haWw6ImVsLiBwYcWhdG8gYWRyZXNhcyIsdXJsOiJVUkwiLGVtb2ppOiJqYXVzdHVrYXMiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRhIGlyIGxhaWthcyIsZGF0ZToiSVNPIGRhdGEiLHRpbWU6IklTTyBsYWlrYXMiLGR1cmF0aW9uOiJJU08gdHJ1a23ElyIsaXB2NDoiSVB2NCBhZHJlc2FzIixpcHY2OiJJUHY2IGFkcmVzYXMiLGNpZHJ2NDoiSVB2NCB0aW5rbG8gcHJlZmlrc2FzIChDSURSKSIsY2lkcnY2OiJJUHY2IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixiYXNlNjQ6ImJhc2U2NCB1xb5rb2R1b3RhIGVpbHV0xJciLGJhc2U2NHVybDoiYmFzZTY0dXJsIHXFvmtvZHVvdGEgZWlsdXTElyIsanNvbl9zdHJpbmc6IkpTT04gZWlsdXTElyIsZTE2NDoiRS4xNjQgbnVtZXJpcyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSvdmVzdGlzIn0sbz17bmFuOiJOYU4iLG51bWJlcjoic2thacSNaXVzIixiaWdpbnQ6InN2ZWlrYXNpcyBza2FpxI1pdXMiLHN0cmluZzoiZWlsdXTElyIsYm9vbGVhbjoibG9naW7ElyByZWlrxaFtxJciLHVuZGVmaW5lZDoibmVhcGlicsSXxb50YSByZWlrxaFtxJciLGZ1bmN0aW9uOiJmdW5rY2lqYSIsc3ltYm9sOiJzaW1ib2xpcyIsYXJyYXk6Im1hc3l2YXMiLG9iamVjdDoib2JqZWt0YXMiLG51bGw6Im51bGluxJcgcmVpa8WhbcSXIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdhdXRhcyB0aXBhcyAke3N9LCBvIHRpa8SXdGFzaSAtIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YEdhdXRhcyB0aXBhcyAke3N9LCBvIHRpa8SXdGFzaSAtICR7aX1gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFByaXZhbG8gYsWrdGkgJHtrKGUudmFsdWVzWzBdKX1gOmBQcml2YWxvIGLFq3RpIHZpZW5hcyBpxaEgJHtfKGUudmFsdWVzLCJ8Iil9IHBhc2lyaW5raW3Fs2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW4sYT1uKGUub3JpZ2luLGJzKE51bWJlcihlLm1heGltdW0pKSxlLmluY2x1c2l2ZT8/ITEsInNtYWxsZXIiKTtpZihhPy52ZXJiKXJldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7YS52ZXJifSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBzPWUuaW5jbHVzaXZlPyJuZSBkaWRlc25pcyBrYWlwIjoibWHFvmVzbmlzIGthaXAiO3JldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtzfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2E/LnVuaXR9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luLGE9bihlLm9yaWdpbixicyhOdW1iZXIoZS5taW5pbXVtKSksZS5pbmNsdXNpdmU/PyExLCJiaWdnZXIiKTtpZihhPy52ZXJiKXJldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9ICR7YS52ZXJifSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTFsyJ9YDtjb25zdCBzPWUuaW5jbHVzaXZlPyJuZSBtYcW+ZXNuaXMga2FpcCI6ImRpZGVzbmlzIGthaXAiO3JldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkgYsWrdGkgJHtzfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2E/LnVuaXR9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEVpbHV0xJcgcHJpdmFsbyBwcmFzaWTEl3RpICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEVpbHV0xJcgcHJpdmFsbyBwYXNpYmFpZ3RpICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRWlsdXTElyBwcml2YWxvIMSvdHJhdWt0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gRWlsdXTElyBwcml2YWxvIGF0aXRpa3RpICR7aS5wYXR0ZXJufWA6YE5ldGVpc2luZ2FzICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBTa2FpxI1pdXMgcHJpdmFsbyBixat0aSAke2UuZGl2aXNvcn0ga2FydG90aW5pcy5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZWF0cGHFvmludCR7ZS5rZXlzLmxlbmd0aD4xPyJpIjoiYXMifSByYWt0JHtlLmtleXMubGVuZ3RoPjE/ImFpIjoiYXMifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybiJSYXN0YXMga2xhaWRpbmdhcyByYWt0YXMiO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIktsYWlkaW5nYSDEr3Zlc3RpcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm5gJHttdChpPz9lLm9yaWdpbj8/InJlaWvFoW3ElyIpfSB0dXJpIGtsYWlkaW5nxIUgxK92ZXN0xK9gfWRlZmF1bHQ6cmV0dXJuIktsYWlkaW5nYSDEr3Zlc3RpcyJ9fX07ZnVuY3Rpb24gemYoKXtyZXR1cm57bG9jYWxlRXJyb3I6SWYoKX19Y29uc3QgeGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItC30L3QsNGG0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGZpbGU6e3VuaXQ6ItCx0LDRmNGC0LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LGFycmF5Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9LHNldDp7dW5pdDoi0YHRgtCw0LLQutC4Iix2ZXJiOiLQtNCwINC40LzQsNCw0YIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLQvdC10YEiLGVtYWlsOiLQsNC00YDQtdGB0LAg0L3QsCDQtS3Qv9C+0YjRgtCwIix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtGf0LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLRg9C8INC4INCy0YDQtdC80LUiLGRhdGU6IklTTyDQtNCw0YLRg9C8Iix0aW1lOiJJU08g0LLRgNC10LzQtSIsZHVyYXRpb246IklTTyDQstGA0LXQvNC10YLRgNCw0LXRmtC1IixpcHY0OiJJUHY0INCw0LTRgNC10YHQsCIsaXB2NjoiSVB2NiDQsNC00YDQtdGB0LAiLGNpZHJ2NDoiSVB2NCDQvtC/0YHQtdCzIixjaWRydjY6IklQdjYg0L7Qv9GB0LXQsyIsYmFzZTY0OiJiYXNlNjQt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGJhc2U2NHVybDoiYmFzZTY0dXJsLdC10L3QutC+0LTQuNGA0LDQvdCwINC90LjQt9CwIixqc29uX3N0cmluZzoiSlNPTiDQvdC40LfQsCIsZTE2NDoiRS4xNjQg0LHRgNC+0ZgiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstC90LXRgSJ9LG89e25hbjoiTmFOIixudW1iZXI6ItCx0YDQvtGYIixhcnJheToi0L3QuNC30LAifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0L/RgNC40LzQtdC90L4gJHtzfWA6YNCT0YDQtdGI0LXQvSDQstC90LXRgTog0YHQtSDQvtGH0LXQutGD0LLQsCAke2l9LCDQv9GA0LjQvNC10L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2soZS52YWx1ZXNbMF0pfWA6YNCT0YDQtdGI0LDQvdCwINC+0L/RhtC40ZjQsDog0YHQtSDQvtGH0LXQutGD0LLQsCDQtdC00L3QsCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0J/RgNC10LzQvdC+0LPRgyDQs9C+0LvQtdC8OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW4/PyLQstGA0LXQtNC90L7RgdGC0LAifSDQtNCwINC40LzQsCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLQtdC70LXQvNC10L3RgtC4In1gOmDQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LHQuNC00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQuNC80LAgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCf0YDQtdC80L3QvtCz0YMg0LzQsNC7OiDRgdC1INC+0YfQtdC60YPQstCwICR7ZS5vcmlnaW59INC00LAg0LHQuNC00LUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQt9Cw0L/QvtGH0L3Rg9Cy0LAg0YHQviAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LfQsNCy0YDRiNGD0LLQsCDRgdC+ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINCy0LrQu9GD0YfRg9Cy0LAgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQvtC00LPQvtCw0YDQsCDQvdCwINC/0LDRgtC10YDQvdC+0YIgJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0JPRgNC10YjQtdC9INCx0YDQvtGYOiDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC00LXQu9C40LIg0YHQviAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8i0J3QtdC/0YDQtdC/0L7Qt9C90LDQtdC90Lgg0LrQu9GD0YfQtdCy0LgiOiLQndC10L/RgNC10L/QvtC30L3QsNC10L0g0LrQu9GD0YcifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQk9GA0LXRiNC10L0g0LrQu9GD0Ycg0LLQviAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCT0YDQtdGI0L3QsCDQstGA0LXQtNC90L7RgdGCINCy0L4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCT0YDQtdGI0LXQvSDQstC90LXRgSJ9fX07ZnVuY3Rpb24gVGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6eGYoKX19Y29uc3QgamY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImFrc2FyYSIsdmVyYjoibWVtcHVueWFpIn0sZmlsZTp7dW5pdDoiYmFpdCIsdmVyYjoibWVtcHVueWFpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn0sc2V0Ont1bml0OiJlbGVtZW4iLHZlcmI6Im1lbXB1bnlhaSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImFsYW1hdCBlLW1lbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToidGFyaWtoIG1hc2EgSVNPIixkYXRlOiJ0YXJpa2ggSVNPIix0aW1lOiJtYXNhIElTTyIsZHVyYXRpb246InRlbXBvaCBJU08iLGlwdjQ6ImFsYW1hdCBJUHY0IixpcHY2OiJhbGFtYXQgSVB2NiIsY2lkcnY0OiJqdWxhdCBJUHY0IixjaWRydjY6Imp1bGF0IElQdjYiLGJhc2U2NDoic3RyaW5nIGRpa29ka2FuIGJhc2U2NCIsYmFzZTY0dXJsOiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0dXJsIixqc29uX3N0cmluZzoic3RyaW5nIEpTT04iLGUxNjQ6Im5vbWJvciBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoibm9tYm9yIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkaXRlcmltYSAke3N9YDpgSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSAke2l9LCBkaXRlcmltYSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7ayhlLnZhbHVlc1swXSl9YDpgUGlsaWhhbiB0aWRhayBzYWg6IGRpamFuZ2thIHNhbGFoIHNhdHUgZGFyaXBhZGEgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpamFuZ2thICR7ZS5vcmlnaW4/PyJuaWxhaSJ9IGFkYWxhaCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGtlY2lsOiBkaWphbmdrYSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59IGFkYWxhaCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVybXVsYSBkZW5nYW4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgYmVyYWtoaXIgZGVuZ2FuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgbWVuZ2FuZHVuZ2kgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFN0cmluZyB0aWRhayBzYWg6IG1lc3RpIHNlcGFkYW4gZGVuZ2FuIGNvcmFrICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayBzYWhgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm9tYm9yIHRpZGFrIHNhaDogcGVybHUgZ2FuZGFhbiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLdW5jaSB0aWRhayBkaWtlbmFsaTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IHRpZGFrIHNhaCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWxhaSB0aWRhayBzYWggZGFsYW0gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHNhaCJ9fX07ZnVuY3Rpb24gVWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6amYoKX19Y29uc3QgUGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRla2VucyIsdmVyYjoiaGVlZnQifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiaGVlZnQifSxhcnJheTp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9LHNldDp7dW5pdDoiZWxlbWVudGVuIix2ZXJiOiJoZWVmdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnZvZXIiLGVtYWlsOiJlbWFpbGFkcmVzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gZW4gdGlqZCIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gdGlqZCIsZHVyYXRpb246IklTTyBkdXVyIixpcHY0OiJJUHY0LWFkcmVzIixpcHY2OiJJUHY2LWFkcmVzIixjaWRydjQ6IklQdjQtYmVyZWlrIixjaWRydjY6IklQdjYtYmVyZWlrIixiYXNlNjQ6ImJhc2U2NC1nZWNvZGVlcmRlIHRla3N0IixiYXNlNjR1cmw6ImJhc2U2NCBVUkwtZ2Vjb2RlZXJkZSB0ZWtzdCIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnZvZXIifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJnZXRhbCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9udHZpbmcgJHtzfWA6YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0ICR7aX0sIG9udHZpbmcgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtrKGUudmFsdWVzWzBdKX1gOmBPbmdlbGRpZ2Ugb3B0aWU6IHZlcndhY2h0IMOpw6luIHZhbiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPWUub3JpZ2luPT09ImRhdGUiPyJsYWF0IjplLm9yaWdpbj09PSJzdHJpbmciPyJsYW5nIjoiZ3Jvb3QiO3JldHVybiBhP2BUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbj8/IndhYXJkZSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlbiJ9ICR7YS52ZXJifWA6YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPWUub3JpZ2luPT09ImRhdGUiPyJ2cm9lZyI6ZS5vcmlnaW49PT0ic3RyaW5nIj8ia29ydCI6ImtsZWluIjtyZXR1cm4gYT9gVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSBpc2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgbWV0ICIke2kucHJlZml4fSIgYmVnaW5uZW5gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBvcCAiJHtpLnN1ZmZpeH0iIGVpbmRpZ2VuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCAiJHtpLmluY2x1ZGVzfSIgYmV2YXR0ZW5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG92ZXJlZW5rb21lbiBtZXQgcGF0cm9vbiAke2kucGF0dGVybn1gOmBPbmdlbGRpZzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9uZ2VsZGlnIGdldGFsOiBtb2V0IGVlbiB2ZWVsdm91ZCB2YW4gJHtlLmRpdmlzb3J9IHppam5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBPbmJla2VuZGUga2V5JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPbmdlbGRpZ2Uga2V5IGluICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJPbmdlbGRpZ2UgaW52b2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE9uZ2VsZGlnZSB3YWFyZGUgaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk9uZ2VsZGlnZSBpbnZvZXIifX19O2Z1bmN0aW9uIE9mKCl7cmV0dXJue2xvY2FsZUVycm9yOlBmKCl9fWNvbnN0IERmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ0ZWduIix2ZXJiOiLDpSBoYSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiLDpSBoYSJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9LHNldDp7dW5pdDoiZWxlbWVudGVyIix2ZXJiOiLDpSBpbm5laG9sZGUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlLXBvc3RhZHJlc3NlIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0by0gb2cga2xva2tlc2xldHQiLGRhdGU6IklTTy1kYXRvIix0aW1lOiJJU08ta2xva2tlc2xldHQiLGR1cmF0aW9uOiJJU08tdmFyaWdoZXQiLGlwdjQ6IklQdjQtb21yw6VkZSIsaXB2NjoiSVB2Ni1vbXLDpWRlIixjaWRydjQ6IklQdjQtc3Bla3RlciIsY2lkcnY2OiJJUHY2LXNwZWt0ZXIiLGJhc2U2NDoiYmFzZTY0LWVua29kZXQgc3RyZW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmtvZGV0IHN0cmVuZyIsanNvbl9zdHJpbmc6IkpTT04tc3RyZW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6InRhbGwiLGFycmF5OiJsaXN0ZSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWtrICR7c31gOmBVZ3lsZGlnIGlucHV0OiBmb3J2ZW50ZXQgJHtpfSwgZmlrayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BVZ3lsZGlnIHZlcmRpOiBmb3J2ZW50ZXQgJHtrKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlnIHZhbGc6IGZvcnZlbnRldCBlbiBhdiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRm9yIHN0b3IodCk6IGZvcnZlbnRldCAke2Uub3JpZ2luPz8idmFsdWUifSB0aWwgw6UgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVyIn1gOmBGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7ZS5vcmlnaW59IHRpbCDDpSBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRm9yIGxpdGUobik6IGZvcnZlbnRldCAke2Uub3JpZ2lufSB0aWwgw6UgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBtw6Ugc3RhcnRlIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIGVuZGUgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBpbm5laG9sZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFVneWxkaWcgc3RyZW5nOiBtw6UgbWF0Y2hlIG3DuG5zdGVyZXQgJHtpLnBhdHRlcm59YDpgVWd5bGRpZyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gVWd5bGRpZyB0YWxsOiBtw6UgdsOmcmUgZXQgbXVsdGlwbHVtIGF2ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2plbnRlIG7DuGtsZXIiOiJVa2plbnQgbsO4a2tlbCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVneWxkaWcgbsO4a2tlbCBpICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJVZ3lsZGlnIGlucHV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFVneWxkaWcgdmVyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZyBpbnB1dCJ9fX07ZnVuY3Rpb24gTmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6RGYoKX19Y29uc3QgRWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImhhcmYiLHZlcmI6Im9sbWFsxLFkxLFyIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsWTEsXIifSxhcnJheTp7dW5pdDoidW5zdXIiLHZlcmI6Im9sbWFsxLFkxLFyIn0sc2V0Ont1bml0OiJ1bnN1ciIsdmVyYjoib2xtYWzEsWTEsXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lyZW4iLGVtYWlsOiJlcG9zdGFnw6JoIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gaGVuZ8OibcSxIixkYXRlOiJJU08gdGFyaWhpIix0aW1lOiJJU08gemFtYW7EsSIsZHVyYXRpb246IklTTyBtw7xkZGV0aSIsaXB2NDoiSVB2NCBuacWfw6JuxLEiLGlwdjY6IklQdjYgbmnFn8OibsSxIixjaWRydjQ6IklQdjQgbWVuemlsaSIsY2lkcnY2OiJJUHY2IG1lbnppbGkiLGJhc2U2NDoiYmFzZTY0LcWfaWZyZWxpIG1ldGluIixiYXNlNjR1cmw6ImJhc2U2NHVybC3Fn2lmcmVsaSBtZXRpbiIsanNvbl9zdHJpbmc6IkpTT04gbWV0aW4iLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZ2lyZW4ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1hcmEiLGFycmF5OiJzYWYiLG51bGw6ImdheWIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhbMSxbmFuICR7c31gOmBGw6JzaXQgZ2lyZW46IHVtdWxhbiAke2l9LCBhbMSxbmFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEbDonNpdCBnaXJlbjogdW11bGFuICR7ayhlLnZhbHVlc1swXSl9YDpgRsOic2l0IHRlcmNpaDogbcO7dGViZXJsZXIgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZhemxhIGLDvHnDvGs6ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9LCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50cyJ9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGLDvHnDvGs6ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9LCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gb2xtYWzEsXlkxLEuYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IHNhaGlwIG9sbWFsxLF5ZMSxLmA6YEZhemxhIGvDvMOnw7xrOiAke2Uub3JpZ2lufSwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IG9sbWFsxLF5ZMSxLmB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BGw6JzaXQgbWV0aW46ICIke2kucHJlZml4fSIgaWxlIGJhxZ9sYW1hbMSxLmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRsOic2l0IG1ldGluOiAiJHtpLnN1ZmZpeH0iIGlsZSBiaXRtZWxpLmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BGw6JzaXQgbWV0aW46ICIke2kuaW5jbHVkZXN9IiBpaHRpdsOiIGV0bWVsaS5gOmkuZm9ybWF0PT09InJlZ2V4Ij9gRsOic2l0IG1ldGluOiAke2kucGF0dGVybn0gbmFrxZ/EsW5hIHV5bWFsxLEuYDpgRsOic2l0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBGw6JzaXQgc2F5xLE6ICR7ZS5kaXZpc29yfSBrYXTEsSBvbG1hbMSxeWTEsS5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhbmFodGFyICR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4gYW5haHRhciB2YXIuYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJHaXJlbiB0YW7EsW5hbWFkxLEuIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luIHRhbsSxbm1heWFuIGvEsXltZXQgdmFyLmA7ZGVmYXVsdDpyZXR1cm4iS8SxeW1ldCB0YW7EsW5hbWFkxLEuIn19fTtmdW5jdGlvbiBaZigpe3JldHVybntsb2NhbGVFcnJvcjpFZigpfX1jb25zdCBSZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn0sZmlsZTp7dW5pdDoi2KjYp9uM2bzYsyIsdmVyYjoi2YjZhNix2YoifSxhcnJheTp7dW5pdDoi2KrZiNqp2YoiLHZlcmI6ItmI2YTYsdmKIn0sc2V0Ont1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YjYsdmI2K/ZiiIsZW1haWw6Itio2LHbjNqa2YbYp9mE24zaqSIsdXJsOiLbjNmIINii2LEg2KfZhCIsZW1vamk6Itin24zZhdmI2KzZiiIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2YbbjNm82Ycg2KfZiCDZiNiu2KoiLGRhdGU6ItmG25DZvNmHIix0aW1lOiLZiNiu2KoiLGR1cmF0aW9uOiLZhdmI2K/ZhyIsaXB2NDoi2K8gSVB2NCDZvtiq2YciLGlwdjY6ItivIElQdjYg2b7YqtmHIixjaWRydjQ6ItivIElQdjQg2LPYp9it2YciLGNpZHJ2Njoi2K8gSVB2NiDYs9in2K3ZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDZhdiq2YYiLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg2YXYqtmGIixqc29uX3N0cmluZzoiSlNPTiDZhdiq2YYiLGUxNjQ6ItivIEUuMTY0INi02YXbkNix2YciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLZiNix2YjYr9mKIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi2LnYr9ivIixhcnJheToi2KfYsduQIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZiNin24wsINmF2qvYsSAke3N9INiq2LHZhNin2LPZhyDYtNmIYDpg2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gJHtpfSDZiNin24wsINmF2qvYsSAke3N9INiq2LHZhNin2LPZhyDYtNmIYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke2soZS52YWx1ZXNbMF0pfSDZiNin24xgOmDZhtin2LPZhSDYp9mG2KrYrtin2Kg6INio2KfbjNivINuM2Ygg2YTZhyAke18oZS52YWx1ZXMsInwiKX0g2oXYrtmHINmI2KfbjGA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DaiduM2LEg2YTZiNuMOiAke2Uub3JpZ2luPz8i2KfYsdiy2prYqiJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/Iti52YbYtdix2YjZhtmHIn0g2YjZhNix2YpgOmDaiduM2LEg2YTZiNuMOiAke2Uub3JpZ2luPz8i2KfYsdiy2prYqiJ9INio2KfbjNivICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDZiNmKYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2onbjNixINqp2YjahtmG24w6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g2YjZhNix2YpgOmDaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAiJHtpLnByZWZpeH0iINiz2LHZhyDZvtuM2YQg2LTZimA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAiJHtpLnN1ZmZpeH0iINiz2LHZhyDZvtin24wg2KrZhyDZiNix2LPZitqW2YpgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryAiJHtpLmluY2x1ZGVzfSIg2YjZhNix2YpgOmkuZm9ybWF0PT09InJlZ2V4Ij9g2YbYp9iz2YUg2YXYqtmGOiDYqNin24zYryDYryAke2kucGF0dGVybn0g2LPYsdmHINmF2LfYp9io2YLYqiDZiNmE2LHZimA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSDZhtin2LPZhSDYr9uMYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNmG2KfYs9mFINi52K/Yrzog2KjYp9uM2K8g2K8gJHtlLmRpdmlzb3J9INmF2LbYsdioINmI2YpgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDZhtin2LPZhSAke2Uua2V5cy5sZW5ndGg+MT8i2qnZhNuM2onZiNmG2YciOiLaqdmE24zaiSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNmG2KfYs9mFINqp2YTbjNqJINm+2YcgJHtlLm9yaWdpbn0g2qnbkGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2YbYp9iz2YXZhyDZiNix2YjYr9mKIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmG2KfYs9mFINi52YbYtdixINm+2YcgJHtlLm9yaWdpbn0g2qnbkGA7ZGVmYXVsdDpyZXR1cm4i2YbYp9iz2YXZhyDZiNix2YjYr9mKIn19fTtmdW5jdGlvbiBDZigpe3JldHVybntsb2NhbGVFcnJvcjpSZigpfX1jb25zdCBBZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha8OzdyIsdmVyYjoibWllxIcifSxmaWxlOnt1bml0OiJiYWp0w7N3Iix2ZXJiOiJtaWXEhyJ9LGFycmF5Ont1bml0OiJlbGVtZW50w7N3Iix2ZXJiOiJtaWXEhyJ9LHNldDp7dW5pdDoiZWxlbWVudMOzdyIsdmVyYjoibWllxIcifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoid3lyYcW8ZW5pZSIsZW1haWw6ImFkcmVzIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgZ29kemluYSB3IGZvcm1hY2llIElTTyIsZGF0ZToiZGF0YSB3IGZvcm1hY2llIElTTyIsdGltZToiZ29kemluYSB3IGZvcm1hY2llIElTTyIsZHVyYXRpb246ImN6YXMgdHJ3YW5pYSBJU08iLGlwdjQ6ImFkcmVzIElQdjQiLGlwdjY6ImFkcmVzIElQdjYiLGNpZHJ2NDoiemFrcmVzIElQdjQiLGNpZHJ2NjoiemFrcmVzIElQdjYiLGJhc2U2NDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0IixiYXNlNjR1cmw6ImNpxIVnIHpuYWvDs3cgemFrb2Rvd2FueSB3IGZvcm1hY2llIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNpxIVnIHpuYWvDs3cgdyBmb3JtYWNpZSBKU09OIixlMTY0OiJsaWN6YmEgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ3ZWrFm2NpZSJ9LG89e25hbjoiTmFOIixudW1iZXI6ImxpY3piYSIsYXJyYXk6InRhYmxpY2EifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb3RyenltYW5vICR7c31gOmBOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gJHtpfSwgb3RyenltYW5vICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke2soZS52YWx1ZXNbMF0pfWA6YE5pZXByYXdpZMWCb3dhIG9wY2phOiBvY3pla2l3YW5vIGplZG5laiB6IHdhcnRvxZtjaSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWmEgZHXFvGEgd2FydG/Fm8SHOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgbWllxIcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMOzdyJ9YDpgWmJ5dCBkdcW8KHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIHd5bm9zacSHICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFphIG1hxYJhIHdhcnRvxZvEhzogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIG1pZcSHICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnTDs3cifWA6YFpieXQgbWHFgih5L2EvZSk6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSB3eW5vc2nEhyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSB6YWN6eW5hxIcgc2nEmSBvZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIGtvxYRjennEhyBzacSZIG5hICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSB6YXdpZXJhxIcgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kgb2Rwb3dpYWRhxIcgd3pvcmNvd2kgJHtpLnBhdHRlcm59YDpgTmllcHJhd2lkxYJvdyh5L2EvZSkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5pZXByYXdpZMWCb3dhIGxpY3piYTogbXVzaSBiecSHIHdpZWxva3JvdG5vxZtjacSFICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5pZXJvenBvem5hbmUga2x1Y3plJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBOaWVwcmF3aWTFgm93eSBrbHVjeiB3ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2UiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmllcHJhd2lkxYJvd2Egd2FydG/Fm8SHIHcgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZSJ9fX07ZnVuY3Rpb24gTGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6QWYoKX19Y29uc3QgTWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZXMiLHZlcmI6InRlciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0ZXIifSxhcnJheTp7dW5pdDoiaXRlbnMiLHZlcmI6InRlciJ9LHNldDp7dW5pdDoiaXRlbnMiLHZlcmI6InRlciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJwYWRyw6NvIixlbWFpbDoiZW5kZXJlw6dvIGRlIGUtbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0YSBlIGhvcmEgSVNPIixkYXRlOiJkYXRhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhw6fDo28gSVNPIixpcHY0OiJlbmRlcmXDp28gSVB2NCIsaXB2NjoiZW5kZXJlw6dvIElQdjYiLGNpZHJ2NDoiZmFpeGEgZGUgSVB2NCIsY2lkcnY2OiJmYWl4YSBkZSBJUHY2IixiYXNlNjQ6InRleHRvIGNvZGlmaWNhZG8gZW0gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVtIGJhc2U2NCIsanNvbl9zdHJpbmc6InRleHRvIEpTT04iLGUxNjQ6Im7Dum1lcm8gRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJlbnRyYWRhIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVybyIsbnVsbDoibnVsbyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByZWNlYmlkbyAke3N9YDpgVGlwbyBpbnbDoWxpZG86IGVzcGVyYWRvICR7aX0sIHJlY2ViaWRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEVudHJhZGEgaW52w6FsaWRhOiBlc3BlcmFkbyAke2soZS52YWx1ZXNbMF0pfWA6YE9ww6fDo28gaW52w6FsaWRhOiBlc3BlcmFkYSB1bWEgZGFzICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2luPz8idmFsb3IifSB0aXZlc3NlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvcyJ9YDpgTXVpdG8gZ3JhbmRlOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbj8/InZhbG9yIn0gZm9zc2UgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IHRpdmVzc2UgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE11aXRvIHBlcXVlbm86IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2lufSBmb3NzZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvbWXDp2FyIGNvbSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgdGVybWluYXIgY29tICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGluY2x1aXIgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSBjb3JyZXNwb25kZXIgYW8gcGFkcsOjbyAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0gaW52w6FsaWRvYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6FsaWRvOiBkZXZlIHNlciBtw7psdGlwbG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hhdmUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IGRlc2NvbmhlY2lkYSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hhdmUgaW52w6FsaWRhIGVtICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOhbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvciBpbnbDoWxpZG8gZW0gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkNhbXBvIGludsOhbGlkbyJ9fX07ZnVuY3Rpb24gcWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6TWYoKX19Y29uc3QgRmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdGVyZSIsdmVyYjoic8SDIGFpYsSDIn0sZmlsZTp7dW5pdDoib2N0ZcibaSIsdmVyYjoic8SDIGFpYsSDIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlIix2ZXJiOiJzxIMgYWlixIMifSxzZXQ6e3VuaXQ6ImVsZW1lbnRlIix2ZXJiOiJzxIMgYWlixIMifSxtYXA6e3VuaXQ6ImludHLEg3JpIix2ZXJiOiJzxIMgYWlixIMifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW50cmFyZSIsZW1haWw6ImFkcmVzxIMgZGUgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdMSDIMiZaSBvcsSDIElTTyIsZGF0ZToiZGF0xIMgSVNPIix0aW1lOiJvcsSDIElTTyIsZHVyYXRpb246ImR1cmF0xIMgSVNPIixpcHY0OiJhZHJlc8SDIElQdjQiLGlwdjY6ImFkcmVzxIMgSVB2NiIsbWFjOiJhZHJlc8SDIE1BQyIsY2lkcnY0OiJpbnRlcnZhbCBJUHY0IixjaWRydjY6ImludGVydmFsIElQdjYiLGJhc2U2NDoiyJlpciBjb2RhdCBiYXNlNjQiLGJhc2U2NHVybDoiyJlpciBjb2RhdCBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLImWlyIEpTT04iLGUxNjQ6Im51bcSDciBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImludHJhcmUifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiLImWlyIixudW1iZXI6Im51bcSDciIsYm9vbGVhbjoiYm9vbGVhbiIsZnVuY3Rpb246ImZ1bmPIm2llIixhcnJheToibWF0cmljZSIsb2JqZWN0OiJvYmllY3QiLHVuZGVmaW5lZDoibmVkZWZpbml0IixzeW1ib2w6InNpbWJvbCIsYmlnaW50OiJudW3Eg3IgbWFyZSIsdm9pZDoidm9pZCIsbmV2ZXI6Im5ldmVyIixtYXA6ImhhcnTEgyIsc2V0OiJzZXQifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuYEludHJhcmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgJHtpfSwgcHJpbWl0ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludHJhcmUgaW52YWxpZMSDOiBhyJl0ZXB0YXQgJHtrKGUudmFsdWVzWzBdKX1gOmBPcMibaXVuZSBpbnZhbGlkxIM6IGHImXRlcHRhdCB1bmEgZGludHJlICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVhIG1hcmU6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2luPz8idmFsb2FyZWEifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGUifWA6YFByZWEgbWFyZTogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW4/PyJ2YWxvYXJlYSJ9IHPEgyBmaWUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlYSBtaWM6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFByZWEgbWljOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbn0gc8SDIGZpZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyDDrm5jZWFwxIMgY3UgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBzZSB0ZXJtaW5lIGN1ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBpbmNsdWTEgyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gyJhpciBpbnZhbGlkOiB0cmVidWllIHPEgyBzZSBwb3RyaXZlYXNjxIMgY3UgbW9kZWx1bCAke2kucGF0dGVybn1gOmBGb3JtYXQgaW52YWxpZDogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE51bcSDciBpbnZhbGlkOiB0cmVidWllIHPEgyBmaWUgbXVsdGlwbHUgZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQ2hlaSBuZXJlY3Vub3NjdXRlOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENoZWllIGludmFsaWTEgyDDrm4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkludHJhcmUgaW52YWxpZMSDIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9hcmUgaW52YWxpZMSDIMOubiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW50cmFyZSBpbnZhbGlkxIMifX19O2Z1bmN0aW9uIEpmKCl7cmV0dXJue2xvY2FsZUVycm9yOkZmKCl9fWZ1bmN0aW9uIHlzKHQsbixyLG8pe2NvbnN0IGU9TWF0aC5hYnModCksaT1lJTEwLGE9ZSUxMDA7cmV0dXJuIGE+PTExJiZhPD0xOT9vOmk9PT0xP246aT49MiYmaTw9ND9yOm99Y29uc3QgSGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi0YHQuNC80LLQvtC7IixmZXc6ItGB0LjQvNCy0L7Qu9CwIixtYW55OiLRgdC40LzQstC+0LvQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9LGZpbGU6e3VuaXQ6e29uZToi0LHQsNC50YIiLGZldzoi0LHQsNC50YLQsCIsbWFueToi0LHQsNC50YIifSx2ZXJiOiLQuNC80LXRgtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLQsCIsbWFueToi0Y3Qu9C10LzQtdC90YLQvtCyIn0sdmVyYjoi0LjQvNC10YLRjCJ9LHNldDp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0LLQvtC0IixlbWFpbDoiZW1haWwg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLRjdC80L7QtNC30LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLQsCDQuCDQstGA0LXQvNGPIixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNGPIixkdXJhdGlvbjoiSVNPINC00LvQuNGC0LXQu9GM0L3QvtGB0YLRjCIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiLRgdGC0YDQvtC60LAg0LIg0YTQvtGA0LzQsNGC0LUgYmFzZTY0IixiYXNlNjR1cmw6ItGB0YLRgNC+0LrQsCDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJKU09OINGB0YLRgNC+0LrQsCIsZTE2NDoi0L3QvtC80LXRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0LLQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9C+0LvRg9GH0LXQvdC+ICR7c31gOmDQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgJHtpfSwg0L/QvtC70YPRh9C10L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10LLQtdGA0L3Ri9C5INCy0LLQvtC0OiDQvtC20LjQtNCw0LvQvtGB0YwgJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10LLQtdGA0L3Ri9C5INCy0LDRgNC40LDQvdGCOiDQvtC20LjQtNCw0LvQvtGB0Ywg0L7QtNC90L4g0LjQtyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9eXMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQodC70LjRiNC60L7QvCDQsdC+0LvRjNGI0L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90LjQtSJ9INCx0YPQtNC10YIg0LjQvNC10YLRjCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz15cyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCINC40LzQtdGC0YwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDQodC70LjRiNC60L7QvCDQvNCw0LvQtdC90YzQutC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbn0g0LHRg9C00LXRgiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDQvdCw0YfQuNC90LDRgtGM0YHRjyDRgSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC30LDQutCw0L3Rh9C40LLQsNGC0YzRgdGPINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QtNC10YDQttCw0YLRjCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdCy0LXRgNC90LDRjyDRgdGC0YDQvtC60LA6INC00L7Qu9C20L3QsCDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YjQsNCx0LvQvtC90YMgJHtpLnBhdHRlcm59YDpg0J3QtdCy0LXRgNC90YvQuSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdCy0LXRgNC90L7QtSDRh9C40YHQu9C+OiDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0LrRgNCw0YLQvdGL0LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0LDRgdC/0L7Qt9C90LDQvdC9JHtlLmtleXMubGVuZ3RoPjE/ItGL0LUiOiLRi9C5In0g0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0LgiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10LLQtdGA0L3Ri9C5INC60LvRjtGHINCyICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQndC10LLQtdGA0L3Ri9C1INCy0YXQvtC00L3Ri9C1INC00LDQvdC90YvQtSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INC30L3QsNGH0LXQvdC40LUg0LIgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0LXQstC10YDQvdGL0LUg0LLRhdC+0LTQvdGL0LUg0LTQsNC90L3Ri9C1In19fTtmdW5jdGlvbiBWZigpe3JldHVybntsb2NhbGVFcnJvcjpIZigpfX1jb25zdCBLZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha292Iix2ZXJiOiJpbWV0aSJ9LGZpbGU6e3VuaXQ6ImJhanRvdiIsdmVyYjoiaW1ldGkifSxhcnJheTp7dW5pdDoiZWxlbWVudG92Iix2ZXJiOiJpbWV0aSJ9LHNldDp7dW5pdDoiZWxlbWVudG92Iix2ZXJiOiJpbWV0aSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ2bm9zIixlbWFpbDoiZS1wb8WhdG5pIG5hc2xvdiIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdHVtIGluIMSNYXMiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIMSNYXMiLGR1cmF0aW9uOiJJU08gdHJhamFuamUiLGlwdjQ6IklQdjQgbmFzbG92IixpcHY2OiJJUHY2IG5hc2xvdiIsY2lkcnY0OiJvYnNlZyBJUHY0IixjaWRydjY6Im9ic2VnIElQdjYiLGJhc2U2NDoiYmFzZTY0IGtvZGlyYW4gbml6IixiYXNlNjR1cmw6ImJhc2U2NHVybCBrb2RpcmFuIG5peiIsanNvbl9zdHJpbmc6IkpTT04gbml6IixlMTY0OiJFLjE2NCDFoXRldmlsa2EiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJ2bm9zIn0sbz17bmFuOiJOYU4iLG51bWJlcjoixaF0ZXZpbG8iLGFycmF5OiJ0YWJlbGEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBwcmVqZXRvICR7c31gOmBOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyAke2l9LCBwcmVqZXRvICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmV2ZWxqYXZuYSBtb8W+bm9zdDogcHJpxI1ha292YW5vIGVubyBpem1lZCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJldmVsaWtvOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW4/PyJ2cmVkbm9zdCJ9IGltZWxvICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvdiJ9YDpgUHJldmVsaWtvOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW4/PyJ2cmVkbm9zdCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZW1hamhubzogcHJpxI1ha292YW5vLCBkYSBibyAke2Uub3JpZ2lufSBpbWVsbyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlbWFqaG5vOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSB6YcSNZXRpIHogIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgc2Uga29uxI1hdGkgeiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHZzZWJvdmF0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdXN0cmV6YXRpIHZ6b3JjdSAke2kucGF0dGVybn1gOmBOZXZlbGphdmVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZXZlbGphdm5vIMWhdGV2aWxvOiBtb3JhIGJpdGkgdmXEjWtyYXRuaWsgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYW4ke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1pIjoiIGtsanXEjSJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5ldmVsamF2ZW4ga2xqdcSNIHYgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5ldmVsamF2ZW4gdm5vcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZXZlbGphdm5hIHZyZWRub3N0IHYgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5ldmVsamF2ZW4gdm5vcyJ9fX07ZnVuY3Rpb24gQmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6S2YoKX19Y29uc3QgV2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlY2tlbiIsdmVyYjoiYXR0IGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImF0dCBoYSJ9LGFycmF5Ont1bml0OiJvYmpla3QiLHZlcmI6ImF0dCBpbm5laMOlbGxhIn0sc2V0Ont1bml0OiJvYmpla3QiLHZlcmI6ImF0dCBpbm5laMOlbGxhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InJlZ3VsasOkcnQgdXR0cnljayIsZW1haWw6ImUtcG9zdGFkcmVzcyIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWRhdHVtIG9jaCB0aWQiLGRhdGU6IklTTy1kYXR1bSIsdGltZToiSVNPLXRpZCIsZHVyYXRpb246IklTTy12YXJha3RpZ2hldCIsaXB2NDoiSVB2NC1pbnRlcnZhbGwiLGlwdjY6IklQdjYtaW50ZXJ2YWxsIixjaWRydjQ6IklQdjQtc3Bla3RydW0iLGNpZHJ2NjoiSVB2Ni1zcGVrdHJ1bSIsYmFzZTY0OiJiYXNlNjQta29kYWQgc3Ryw6RuZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29kYWQgc3Ryw6RuZyIsanNvbl9zdHJpbmc6IkpTT04tc3Ryw6RuZyIsZTE2NDoiRS4xNjQtbnVtbWVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoibWFsbC1saXRlcmFsIn0sbz17bmFuOiJOYU4iLG51bWJlcjoiYW50YWwiLGFycmF5OiJsaXN0YSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBmaWNrICR7c31gOmBPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgJHtpfSwgZmljayAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BPZ2lsdGlnIGlubWF0bmluZzogZsO2cnbDpG50YXQgJHtrKGUudmFsdWVzWzBdKX1gOmBPZ2lsdGlndCB2YWw6IGbDtnJ2w6RudGFkZSBlbiBhdiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRsO2ciBzdG9yKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudCJ9YDpgRsO2ciBzdG9yKHQpOiBmw7ZydsOkbnRhdCAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGw7ZyIGxpdGUodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRsO2ciBsaXRlKHQpOiBmw7ZydsOkbnRhZGUgJHtlLm9yaWdpbj8/InbDpHJkZXQifSBhdHQgaGEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE9naWx0aWcgc3Ryw6RuZzogbcOlc3RlIGLDtnJqYSBtZWQgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgc2x1dGEgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgaW5uZWjDpWxsYSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgbWF0Y2hhIG3Dtm5zdHJldCAiJHtpLnBhdHRlcm59ImA6YE9naWx0aWcodCkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE9naWx0aWd0IHRhbDogbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/Ik9rw6RuZGEgbnlja2xhciI6Ik9rw6RuZCBueWNrZWwifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBPZ2lsdGlnIG55Y2tlbCBpICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk9naWx0aWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gT2dpbHRpZ3QgdsOkcmRlIGkgJHtlLm9yaWdpbj8/InbDpHJkZXQifWA7ZGVmYXVsdDpyZXR1cm4iT2dpbHRpZyBpbnB1dCJ9fX07ZnVuY3Rpb24gR2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6V2YoKX19Y29uc3QgWGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuCujuCutOCvgeCupOCvjeCupOCvgeCuleCvjeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LGZpbGU6e3VuaXQ6IuCuquCviOCun+CvjeCun+CvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LGFycmF5Ont1bml0OiLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40iLHZlcmI6IuCuleCviuCuo+CvjeCun+Cuv+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr40ifSxzZXQ6e3VuaXQ6IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLgrongrrPgr43grrPgr4Dgrp/gr4EiLGVtYWlsOiLgrq7grr/grqngr43grqngrp7gr43grprgrrLgr40g4K6u4K+B4K6V4K614K6w4K6/Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g4K6k4K+H4K6k4K6/IOCuqOCvh+CusOCuruCvjSIsZGF0ZToiSVNPIOCupOCvh+CupOCuvyIsdGltZToiSVNPIOCuqOCvh+CusOCuruCvjSIsZHVyYXRpb246IklTTyDgrpXgrr7grrIg4K6F4K6z4K614K+BIixpcHY0OiJJUHY0IOCuruCvgeCuleCuteCusOCuvyIsaXB2NjoiSVB2NiDgrq7gr4HgrpXgrrXgrrDgrr8iLGNpZHJ2NDoiSVB2NCDgrrXgrrDgrq7gr43grqrgr4EiLGNpZHJ2NjoiSVB2NiDgrrXgrrDgrq7gr43grqrgr4EiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQg4K6a4K6w4K6u4K+NIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIOCumuCusOCuruCvjSIsanNvbl9zdHJpbmc6IkpTT04g4K6a4K6w4K6u4K+NIixlMTY0OiJFLjE2NCDgro7grqPgr40iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixudW1iZXI6IuCujuCuo+CvjSIsYXJyYXk6IuCuheCuo+CuvyIsbnVsbDoi4K614K+G4K6x4K+B4K6u4K+IIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3N9YDpg4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7aX0sIOCuquCvhuCuseCuquCvjeCuquCun+CvjeCun+CupOCvgSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtrKGUudmFsdWVzWzBdKX1gOmDgrqTgrrXgrrHgrr7grqkg4K614K6/4K6w4K+B4K6q4K+N4K6q4K6u4K+NOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtfKGUudmFsdWVzLCJ8Iil9IOCuh+CusuCvjSDgrpLgrqngr43grrHgr4FgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4K6u4K6/4K6VIOCuquCvhuCusOCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW4/PyLgrq7grqTgrr/grqrgr43grqrgr4EifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLgrongrrHgr4Hgrqrgr43grqrgr4HgrpXgrrPgr40ifSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCuruCuv+CulSDgrqrgr4bgrrDgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2luPz8i4K6u4K6k4K6/4K6q4K+N4K6q4K+BIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4K6u4K6/4K6V4K6a4K+NIOCumuCuv+CuseCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmDgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kucHJlZml4fSIg4K6H4K6y4K+NIOCupOCviuCun+CumeCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICIke2kuc3VmZml4fSIg4K6H4K6y4K+NIOCuruCvgeCun+Cuv+CuteCun+CviOCuryDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5pbmNsdWRlc30iIOCukCDgrongrrPgr43grrPgrp/grpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDppLmZvcm1hdD09PSJyZWdleCI/YOCupOCuteCuseCuvuCuqSDgrprgrrDgrq7gr406ICR7aS5wYXR0ZXJufSDgrq7gr4HgrrHgr4jgrqrgrr7grp/gr43grp/gr4Hgrp/grqngr40g4K6q4K+K4K6w4K+B4K6o4K+N4K6kIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCupOCuteCuseCuvuCuqSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4K6k4K614K6x4K6+4K6pIOCujuCuo+CvjTogJHtlLmRpdmlzb3J9IOCuh+CuqeCvjSDgrqrgrrLgrq7grr7grpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOCuheCun+CviOCur+CuvuCus+CuruCvjSDgrqTgr4bgrrDgrr/grq/grr7grqQg4K614K6/4K6a4K+IJHtlLmtleXMubGVuZ3RoPjE/IuCuleCus+CvjSI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOCuh+CusuCvjSDgrqTgrrXgrrHgrr7grqkg4K614K6/4K6a4K+IYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOCuh+CusuCvjSDgrqTgrrXgrrHgrr7grqkg4K6u4K6k4K6/4K6q4K+N4K6q4K+BYDtkZWZhdWx0OnJldHVybiLgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BIn19fTtmdW5jdGlvbiBZZigpe3JldHVybntsb2NhbGVFcnJvcjpYZigpfX1jb25zdCBRZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijIix2ZXJiOiLguITguKfguKPguKHguLUifSxmaWxlOnt1bml0OiLguYTguJrguJXguYwiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGFycmF5Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LHNldDp7dW5pdDoi4Lij4Liy4Lii4LiB4Liy4LijIix2ZXJiOiLguITguKfguKPguKHguLUifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIixlbWFpbDoi4LiX4Li14LmI4Lit4Lii4Li54LmI4Lit4Li14LmA4Lih4LilIix1cmw6IlVSTCIsZW1vamk6IuC4reC4tOC5guC4oeC4iOC4tCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4Lin4Lix4LiZ4LiX4Li14LmI4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsZGF0ZToi4Lin4Lix4LiZ4LiX4Li14LmI4LmB4Lia4LiaIElTTyIsdGltZToi4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsZHVyYXRpb246IuC4iuC5iOC4p+C4h+C5gOC4p+C4peC4suC5geC4muC4miBJU08iLGlwdjQ6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY0IixpcHY2OiLguJfguLXguYjguK3guKLguLnguYggSVB2NiIsY2lkcnY0OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjQiLGNpZHJ2Njoi4LiK4LmI4Lin4LiHIElQIOC5geC4muC4miBJUHY2IixiYXNlNjQ6IuC4guC5ieC4reC4hOC4p+C4suC4oeC5geC4muC4miBCYXNlNjQiLGJhc2U2NHVybDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCDguKrguLPguKvguKPguLHguJogVVJMIixqc29uX3N0cmluZzoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEpTT04iLGUxNjQ6IuC5gOC4muC4reC4o+C5jOC5guC4l+C4o+C4qOC4seC4nuC4l+C5jOC4o+C4sOC4q+C4p+C5iOC4suC4h+C4m+C4o+C4sOC5gOC4l+C4qCAoRS4xNjQpIixqd3Q6IuC5guC4l+C5gOC4hOC4mSBKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC4m+C5ieC4reC4mSJ9LG89e25hbjoiTmFOIixudW1iZXI6IuC4leC4seC4p+C5gOC4peC4giIsYXJyYXk6IuC4reC4suC4o+C5jOC5gOC4o+C4ouC5jCAoQXJyYXkpIixudWxsOiLguYTguKHguYjguKHguLXguITguYjguLIgKG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtzfWA6YOC4m+C4o+C4sOC5gOC4oOC4l+C4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZICR7aX0g4LmB4LiV4LmI4LmE4LiU4LmJ4Lij4Lix4LiaICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOC4hOC5iOC4suC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiE4Lin4Lij4LmA4Lib4LmH4LiZICR7ayhlLnZhbHVlc1swXSl9YDpg4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJnguKvguJnguLbguYjguIfguYPguJkgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyLguYTguKHguYjguYDguIHguLTguJkiOiLguJnguYnguK3guKLguIHguKfguYjguLIiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLguKPguLLguKLguIHguLLguKMifWA6YOC5gOC4geC4tOC4meC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbj8/IuC4hOC5iOC4siJ9IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIjoi4Lih4Liy4LiB4LiB4Lin4LmI4LiyIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg4LiZ4LmJ4Lit4Lii4LiB4Lin4LmI4Liy4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2lufSDguITguKfguKPguKHguLUke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4LiC4Li24LmJ4LiZ4LiV4LmJ4LiZ4LiU4LmJ4Lin4LiiICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LiV4LmJ4Lit4LiH4Lil4LiH4LiX4LmJ4Liy4Lii4LiU4LmJ4Lin4LiiICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguKHguLUgIiR7aS5pbmNsdWRlc30iIOC4reC4ouC4ueC5iOC5g+C4meC4guC5ieC4reC4hOC4p+C4suC4oWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4l+C4teC5iOC4geC4s+C4q+C4meC4lCAke2kucGF0dGVybn1gOmDguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDguJXguLHguKfguYDguKXguILguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4leC5ieC4reC4h+C5gOC4m+C5h+C4meC4iOC4s+C4meC4p+C4meC4l+C4teC5iOC4q+C4suC4o+C4lOC5ieC4p+C4oiAke2UuZGl2aXNvcn0g4LmE4LiU4LmJ4Lil4LiH4LiV4Lix4LinYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4Lie4Lia4LiE4Li14Lii4LmM4LiX4Li14LmI4LmE4Lih4LmI4Lij4Li54LmJ4LiI4Lix4LiBOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYOC4hOC4teC4ouC5jOC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4h+C5g+C4mSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguYTguKHguYjguJXguKPguIfguIHguLHguJrguKPguLnguJvguYHguJrguJrguKLguLnguYDguJnguLXguKLguJnguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiH4LmD4LiZICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcifX19O2Z1bmN0aW9uIGVnKCl7cmV0dXJue2xvY2FsZUVycm9yOlFmKCl9fWNvbnN0IHRnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJrYXJha3RlciIsdmVyYjoib2xtYWzEsSJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6Im9sbWFsxLEifSxhcnJheTp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifSxzZXQ6e3VuaXQ6IsO2xJ9lIix2ZXJiOiJvbG1hbMSxIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpcmRpIixlbWFpbDoiZS1wb3N0YSBhZHJlc2kiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyB0YXJpaCB2ZSBzYWF0IixkYXRlOiJJU08gdGFyaWgiLHRpbWU6IklTTyBzYWF0IixkdXJhdGlvbjoiSVNPIHPDvHJlIixpcHY0OiJJUHY0IGFkcmVzaSIsaXB2NjoiSVB2NiBhZHJlc2kiLGNpZHJ2NDoiSVB2NCBhcmFsxLHEn8SxIixjaWRydjY6IklQdjYgYXJhbMSxxJ/EsSIsYmFzZTY0OiJiYXNlNjQgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGJhc2U2NHVybDoiYmFzZTY0dXJsIGlsZSDFn2lmcmVsZW5tacWfIG1ldGluIixqc29uX3N0cmluZzoiSlNPTiBkaXplc2kiLGUxNjQ6IkUuMTY0IHNhecSxc8SxIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixZ5hYmxvbiBkaXplc2kifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGFsxLFuYW4gJHtzfWA6YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuICR7aX0sIGFsxLFuYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtrKGUudmFsdWVzWzBdKX1gOmBHZcOnZXJzaXogc2XDp2VuZWs6IGHFn2HEn8SxZGFraWxlcmRlbiBiaXJpIG9sbWFsxLE6ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLDtsSfZSJ9YDpgw4dvayBiw7x5w7xrOiBiZWtsZW5lbiAke2Uub3JpZ2luPz8iZGXEn2VyIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YMOHb2sga8O8w6fDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BHZcOnZXJzaXogbWV0aW46ICIke2kucHJlZml4fSIgaWxlIGJhxZ9sYW1hbMSxYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BHZcOnZXJzaXogbWV0aW46ICIke2kuc3VmZml4fSIgaWxlIGJpdG1lbGlgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gR2XDp2Vyc2l6IG1ldGluOiAiJHtpLmluY2x1ZGVzfSIgacOnZXJtZWxpYDppLmZvcm1hdD09PSJyZWdleCI/YEdlw6dlcnNpeiBtZXRpbjogJHtpLnBhdHRlcm59IGRlc2VuaW5lIHV5bWFsxLFgOmBHZcOnZXJzaXogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEdlw6dlcnNpeiBzYXnEsTogJHtlLmRpdmlzb3J9IGlsZSB0YW0gYsO2bMO8bmViaWxtZWxpYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gVGFuxLFubWF5YW4gYW5haHRhciR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbmRlIGdlw6dlcnNpeiBhbmFodGFyYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJHZcOnZXJzaXogZGXEn2VyIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGRlxJ9lcmA7ZGVmYXVsdDpyZXR1cm4iR2XDp2Vyc2l6IGRlxJ9lciJ9fX07ZnVuY3Rpb24gbmcoKXtyZXR1cm57bG9jYWxlRXJyb3I6dGcoKX19Y29uc3Qgcmc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ItGB0LjQvNCy0L7Qu9GW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9LGZpbGU6e3VuaXQ6ItCx0LDQudGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sYXJyYXk6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sc2V0Ont1bml0OiLQtdC70LXQvNC10L3RgtGW0LIiLHZlcmI6ItC80LDRgtC40LzQtSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstGF0ZbQtNC90ZYg0LTQsNC90ZYiLGVtYWlsOiLQsNC00YDQtdGB0LAg0LXQu9C10LrRgtGA0L7QvdC90L7RlyDQv9C+0YjRgtC4Iix1cmw6IlVSTCIsZW1vamk6ItC10LzQvtC00LfRliIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi0LTQsNGC0LAg0YLQsCDRh9Cw0YEgSVNPIixkYXRlOiLQtNCw0YLQsCBJU08iLHRpbWU6ItGH0LDRgSBJU08iLGR1cmF0aW9uOiLRgtGA0LjQstCw0LvRltGB0YLRjCBJU08iLGlwdjQ6ItCw0LTRgNC10YHQsCBJUHY0IixpcHY2OiLQsNC00YDQtdGB0LAgSVB2NiIsY2lkcnY0OiLQtNGW0LDQv9Cw0LfQvtC9IElQdjQiLGNpZHJ2Njoi0LTRltCw0L/QsNC30L7QvSBJUHY2IixiYXNlNjQ6ItGA0Y/QtNC+0Log0YMg0LrQvtC00YPQstCw0L3QvdGWIGJhc2U2NCIsYmFzZTY0dXJsOiLRgNGP0LTQvtC6INGDINC60L7QtNGD0LLQsNC90L3RliBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLRgNGP0LTQvtC6IEpTT04iLGUxNjQ6ItC90L7QvNC10YAgRS4xNjQiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLQstGF0ZbQtNC90ZYg0LTQsNC90ZYifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0LjQsiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQvtGC0YDQuNC80LDQvdC+ICR7c31gOmDQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gJHtpfSwg0L7RgtGA0LjQvNCw0L3QviAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3Rljog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8gJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10L/RgNCw0LLQuNC70YzQvdCwINC+0L/RhtGW0Y86INC+0YfRltC60YPRlNGC0YzRgdGPINC+0LTQvdC1INC3ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0ZbQsiJ9YDpg0JfQsNC90LDQtNGC0L4g0LLQtdC70LjQutC1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfQtdC90L3RjyJ9INCx0YPQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCX0LDQvdCw0LTRgtC+INC80LDQu9C1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YNCX0LDQvdCw0LTRgtC+INC80LDQu9C1OiDQvtGH0ZbQutGD0ZTRgtGM0YHRjywg0YnQviAke2Uub3JpZ2lufSDQsdGD0LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC/0L7Rh9C40L3QsNGC0LjRgdGPINC3ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQt9Cw0LrRltC90YfRg9Cy0LDRgtC40YHRjyDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4ICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndC10L/RgNCw0LLQuNC70YzQvdC40LkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0YfQuNGB0LvQvjog0L/QvtCy0LjQvdC90L4g0LHRg9GC0Lgg0LrRgNCw0YLQvdC40LwgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g0J3QtdGA0L7Qt9C/0ZbQt9C90LDQvdC40Lkg0LrQu9GO0Ycke2Uua2V5cy5sZW5ndGg+MT8i0ZYiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LUg0LfQvdCw0YfQtdC90L3RjyDRgyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYifX19O2Z1bmN0aW9uIGhsKCl7cmV0dXJue2xvY2FsZUVycm9yOnJnKCl9fWZ1bmN0aW9uIGlnKCl7cmV0dXJuIGhsKCl9Y29uc3Qgb2c9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itit2LHZiNmBIix2ZXJiOiLbgdmI2YbYpyJ9LGZpbGU6e3VuaXQ6Itio2KfYptm52LMiLHZlcmI6ItuB2YjZhtinIn0sYXJyYXk6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn0sc2V0Ont1bml0OiLYotim2bnZhdiyIix2ZXJiOiLbgdmI2YbYpyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLYp9mGINm+2bkiLGVtYWlsOiLYp9uMINmF24zZhCDYp9uM2ojYsduM2LMiLHVybDoi24zZiCDYotixINin24zZhCIsZW1vamk6Itin24zZhdmI2KzbjCIsdXVpZDoi24zZiCDbjNmIINii2KbbjCDaiNuMIix1dWlkdjQ6ItuM2Ygg24zZiCDYotim24wg2ojbjCDZiNuMIDQiLHV1aWR2Njoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNiIsbmFub2lkOiLZhtuM2YbZiCDYotim24wg2ojbjCIsZ3VpZDoi2KzbjCDbjNmIINii2KbbjCDaiNuMIixjdWlkOiLYs9uMINuM2Ygg2KLYptuMINqI24wiLGN1aWQyOiLYs9uMINuM2Ygg2KLYptuMINqI24wgMiIsdWxpZDoi24zZiCDYp9uM2YQg2KLYptuMINqI24wiLHhpZDoi2KfbjNqp2LMg2KLYptuMINqI24wiLGtzdWlkOiLaqduSINin24zYsyDbjNmIINii2KbbjCDaiNuMIixkYXRldGltZToi2KLYptuMINin24zYsyDYp9mIINqI24zZuSDZudin2KbZhSIsZGF0ZToi2KLYptuMINin24zYsyDYp9mIINiq2KfYsduM2K4iLHRpbWU6Itii2KbbjCDYp9uM2LMg2KfZiCDZiNmC2KoiLGR1cmF0aW9uOiLYotim24wg2KfbjNizINin2Ygg2YXYr9iqIixpcHY0OiLYotim24wg2b7bjCDZiNuMIDQg2KfbjNqI2LHbjNizIixpcHY2OiLYotim24wg2b7bjCDZiNuMIDYg2KfbjNqI2LHbjNizIixjaWRydjQ6Itii2KbbjCDZvtuMINmI24wgNCDYsduM2YbYrCIsY2lkcnY2OiLYotim24wg2b7bjCDZiNuMIDYg2LHbjNmG2KwiLGJhc2U2NDoi2KjbjNizIDY0INin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsYmFzZTY0dXJsOiLYqNuM2LMgNjQg24zZiCDYotixINin24zZhCDYp9mGINqp2YjaiNqIINiz2bnYsdmG2q8iLGpzb25fc3RyaW5nOiLYrNuSINin24zYsyDYp9mIINin24zZhiDYs9m52LHZhtqvIixlMTY0OiLYp9uMIDE2NCDZhtmF2KjYsSIsand0OiLYrNuSINqI2KjZhNuM2Ygg2bnbjCIsdGVtcGxhdGVfbGl0ZXJhbDoi2KfZhiDZvtm5In0sbz17bmFuOiJOYU4iLG51bWJlcjoi2YbZhdio2LEiLGFycmF5OiLYotix25IiLG51bGw6ItmG2YQifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2LrZhNi3INin2YYg2b7ZuTogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmF2KrZiNmC2Lkg2Kravtin2IwgJHtzfSDZhdmI2LXZiNmEINuB2YjYp2A6YNi62YTYtyDYp9mGINm+2bk6ICR7aX0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3N9INmF2YjYtdmI2YQg24HZiNinYH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DYutmE2Lcg2KfZhiDZvtm5OiAke2soZS52YWx1ZXNbMF0pfSDZhdiq2YjZgti5INiq2r7Yp2A6YNi62YTYtyDYotm+2LTZhjogJHtfKGUudmFsdWVzLCJ8Iil9INmF24zauiDYs9uSINin24zaqSDZhdiq2YjZgti5INiq2r7Yp2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp25IgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhtin2LXYsSJ9INuB2YjZhtuSINmF2KrZiNmC2Lkg2KravtuSYDpg2KjbgdiqINio2pHYpzogJHtlLm9yaWdpbj8/ItmI24zZhNuM2YgifSDaqdinICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqduSICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g24HZiNmG25Ig2YXYqtmI2YLYuSDYqtq+25JgOmDYqNuB2Kog2obavtmI2bnYpzogJHtlLm9yaWdpbn0g2qnYpyAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g24HZiNmG2Kcg2YXYqtmI2YLYuSDYqtq+2KdgfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kucHJlZml4fSIg2LPbkiDYtNix2YjYuSDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5zdWZmaXh9IiDZvtixINiu2KrZhSDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLmluY2x1ZGVzfSIg2LTYp9mF2YQg24HZiNmG2Kcg2obYp9uB24zbkmA6aS5mb3JtYXQ9PT0icmVnZXgiP2DYutmE2Lcg2LPZudix2Ybarzog2b7bjNm52LHZhiAke2kucGF0dGVybn0g2LPbkiDZhduM2oYg24HZiNmG2Kcg2obYp9uB24zbkmA6YNi62YTYtyAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LrZhNi3INmG2YXYqNixOiAke2UuZGl2aXNvcn0g2qnYpyDZhdi22KfYudmBINuB2YjZhtinINqG2KfbgduM25JgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDYutuM2LEg2KrYs9mE24zZhSDYtNiv24Eg2qnbjCR7ZS5rZXlzLmxlbmd0aD4xPyLYsiI6IiJ9OiAke18oZS5rZXlzLCLYjCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDZhduM2rog2LrZhNi3INqp24xgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIti62YTYtyDYp9mGINm+2bkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g2YXbjNq6INi62YTYtyDZiNuM2YTbjNmIYDtkZWZhdWx0OnJldHVybiLYutmE2Lcg2KfZhiDZvtm5In19fTtmdW5jdGlvbiBhZygpe3JldHVybntsb2NhbGVFcnJvcjpvZygpfX1jb25zdCBzZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiYmVsZ2kiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxzZXQ6e3VuaXQ6ImVsZW1lbnQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxtYXA6e3VuaXQ6InlvenV2Iix2ZXJiOiJib+KAmGxpc2hpIGtlcmFrIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImtpcmlzaCIsZW1haWw6ImVsZWt0cm9uIHBvY2h0YSBtYW56aWxpIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gc2FuYSB2YSB2YXF0aSIsZGF0ZToiSVNPIHNhbmEiLHRpbWU6IklTTyB2YXF0IixkdXJhdGlvbjoiSVNPIGRhdm9taXlsaWsiLGlwdjQ6IklQdjQgbWFuemlsIixpcHY2OiJJUHY2IG1hbnppbCIsbWFjOiJNQUMgbWFuemlsIixjaWRydjQ6IklQdjQgZGlhcGF6b24iLGNpZHJ2NjoiSVB2NiBkaWFwYXpvbiIsYmFzZTY0OiJiYXNlNjQga29kbGFuZ2FuIHNhdHIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGxhbmdhbiBzYXRyIixqc29uX3N0cmluZzoiSlNPTiBzYXRyIixlMTY0OiJFLjE2NCByYXFhbSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImtpcmlzaCJ9LG89e25hbjoiTmFOIixudW1iZXI6InJhcWFtIixhcnJheToibWFzc2l2In07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHFhYnVsIHFpbGluZ2FuICR7c31gOmBOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtpfSwgcWFidWwgcWlsaW5nYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuICR7ayhlLnZhbHVlc1swXSl9YDpgTm90b+KAmGfigJhyaSB2YXJpYW50OiBxdXlpZGFnaWxhcmRhbiBiaXJpIGt1dGlsZ2FuICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BKdWRhIGthdHRhOiBrdXRpbGdhbiAke2Uub3JpZ2luPz8icWl5bWF0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBKdWRhIGthdHRhOiBrdXRpbGdhbiAke2Uub3JpZ2luPz8icWl5bWF0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gJHthLnZlcmJ9YDpgSnVkYSBraWNoaWs6IGt1dGlsZ2FuICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICIke2kucHJlZml4fSIgYmlsYW4gYm9zaGxhbmlzaGkga2VyYWtgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5zdWZmaXh9IiBiaWxhbiB0dWdhc2hpIGtlcmFrYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5pbmNsdWRlc30iIG5pIG/igJh6IGljaGlnYSBvbGlzaGkga2VyYWtgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTm90b+KAmGfigJhyaSBzYXRyOiAke2kucGF0dGVybn0gc2hhYmxvbmlnYSBtb3Mga2VsaXNoaSBrZXJha2A6YE5vdG/igJhn4oCYcmkgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5vdG/igJhn4oCYcmkgcmFxYW06ICR7ZS5kaXZpc29yfSBuaW5nIGthcnJhbGlzaSBib+KAmGxpc2hpIGtlcmFrYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTm9tYeKAmWx1bSBrYWxpdCR7ZS5rZXlzLmxlbmd0aD4xPyJsYXIiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBkYWdpIGthbGl0IG5vdG/igJhn4oCYcmlgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5vdG/igJhn4oCYcmkga2lyaXNoIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhIG5vdG/igJhn4oCYcmkgcWl5bWF0YDtkZWZhdWx0OnJldHVybiJOb3Rv4oCYZ+KAmHJpIGtpcmlzaCJ9fX07ZnVuY3Rpb24gY2coKXtyZXR1cm57bG9jYWxlRXJyb3I6c2coKX19Y29uc3QgdWc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImvDvSB04buxIix2ZXJiOiJjw7MifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJjw7MifSxhcnJheTp7dW5pdDoicGjhuqduIHThu60iLHZlcmI6ImPDsyJ9LHNldDp7dW5pdDoicGjhuqduIHThu60iLHZlcmI6ImPDsyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLEkeG6p3UgdsOgbyIsZW1haWw6IsSR4buLYSBjaOG7iSBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToibmfDoHkgZ2nhu50gSVNPIixkYXRlOiJuZ8OgeSBJU08iLHRpbWU6Imdp4budIElTTyIsZHVyYXRpb246Imtob+G6o25nIHRo4budaSBnaWFuIElTTyIsaXB2NDoixJHhu4thIGNo4buJIElQdjQiLGlwdjY6IsSR4buLYSBjaOG7iSBJUHY2IixjaWRydjQ6ImThuqNpIElQdjQiLGNpZHJ2NjoiZOG6o2kgSVB2NiIsYmFzZTY0OiJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NCIsYmFzZTY0dXJsOiJjaHXhu5dpIG3DoyBow7NhIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNodeG7l2kgSlNPTiIsZTE2NDoic+G7kSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IsSR4bqndSB2w6BvIn0sbz17bmFuOiJOYU4iLG51bWJlcjoic+G7kSIsYXJyYXk6Im3huqNuZyJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBuaOG6rW4gxJHGsOG7o2MgJHtzfWA6YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSAke2l9LCBuaOG6rW4gxJHGsOG7o2MgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpICR7ayhlLnZhbHVlc1swXSl9YDpgVMO5eSBjaOG7jW4ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpIG3hu5l0IHRyb25nIGPDoWMgZ2nDoSB0cuG7iyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icGjhuqduIHThu60ifWA6YFF1w6EgbOG7m246IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW4/PyJnacOhIHRy4buLIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUXXDoSBuaOG7jzogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbn0gJHthLnZlcmJ9ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBRdcOhIG5o4buPOiBtb25nIMSR4bujaSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGLhuq90IMSR4bqndSBi4bqxbmcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGvhur90IHRow7pjIGLhurFuZyAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBiYW8gZ+G7k20gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENodeG7l2kga2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBraOG7m3AgduG7m2kgbeG6q3UgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IGtow7RuZyBo4bujcCBs4buHYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFPhu5Ega2jDtG5nIGjhu6NwIGzhu4c6IHBo4bqjaSBsw6AgYuG7mWkgc+G7kSBj4bunYSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBLaMOzYSBraMO0bmcgxJHGsOG7o2Mgbmjhuq1uIGThuqFuZzogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLaMOzYSBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4ixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4ciO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gR2nDoSB0cuG7iyBraMO0bmcgaOG7o3AgbOG7hyB0cm9uZyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4ixJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4cifX19O2Z1bmN0aW9uIGxnKCl7cmV0dXJue2xvY2FsZUVycm9yOnVnKCl9fWNvbnN0IGRnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLlrZfnrKYiLHZlcmI6IuWMheWQqyJ9LGZpbGU6e3VuaXQ6IuWtl+iKgiIsdmVyYjoi5YyF5ZCrIn0sYXJyYXk6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn0sc2V0Ont1bml0OiLpobkiLHZlcmI6IuWMheWQqyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLovpPlhaUiLGVtYWlsOiLnlLXlrZDpgq7ku7YiLHVybDoiVVJMIixlbW9qaToi6KGo5oOF56ym5Y+3Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU0/ml6XmnJ/ml7bpl7QiLGRhdGU6IklTT+aXpeacnyIsdGltZToiSVNP5pe26Ze0IixkdXJhdGlvbjoiSVNP5pe26ZW/IixpcHY0OiJJUHY05Zyw5Z2AIixpcHY2OiJJUHY25Zyw5Z2AIixjaWRydjQ6IklQdjTnvZHmrrUiLGNpZHJ2NjoiSVB2Nue9keautSIsYmFzZTY0OiJiYXNlNjTnvJbnoIHlrZfnrKbkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJs57yW56CB5a2X56ym5LiyIixqc29uX3N0cmluZzoiSlNPTuWtl+espuS4siIsZTE2NDoiRS4xNjTlj7fnoIEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovpPlhaUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLmlbDlrZciLGFycmF5OiLmlbDnu4QiLG51bGw6IuepuuWAvChudWxsKSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2Dml6DmlYjovpPlhaXvvJrmnJ/mnJsgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5a6e6ZmF5o6l5pS2ICR7c31gOmDml6DmlYjovpPlhaXvvJrmnJ/mnJsgJHtpfe+8jOWunumZheaOpeaUtiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2Dml6DmlYjovpPlhaXvvJrmnJ/mnJsgJHtrKGUudmFsdWVzWzBdKX1gOmDml6DmlYjpgInpobnvvJrmnJ/mnJvku6XkuIvkuYvkuIAgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i5Liq5YWD57SgIn1gOmDmlbDlgLzov4flpKfvvJrmnJ/mnJsgJHtlLm9yaWdpbj8/IuWAvCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVsOWAvOi/h+Wwj++8muacn+acmyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4Xpobvku6UgIiR7aS5wcmVmaXh9IiDlvIDlpLRgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+S7pSAiJHtpLnN1ZmZpeH0iIOe7k+WwvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2Dml6DmlYjlrZfnrKbkuLLvvJrlv4XpobvljIXlkKsgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+a7oei2s+ato+WImeihqOi+vuW8jyAke2kucGF0dGVybn1gOmDml6DmlYgke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g5peg5pWI5pWw5a2X77ya5b+F6aG75pivICR7ZS5kaXZpc29yfSDnmoTlgI3mlbBgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDlh7rnjrDmnKrnn6XnmoTplK4oa2V5KTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDkuK3nmoTplK4oa2V5KeaXoOaViGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i5peg5pWI6L6T5YWlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reWMheWQq+aXoOaViOWAvCh2YWx1ZSlgO2RlZmF1bHQ6cmV0dXJuIuaXoOaViOi+k+WFpSJ9fX07ZnVuY3Rpb24gbWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZGcoKX19Y29uc3QgcGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuWtl+WFgyIsdmVyYjoi5pOB5pyJIn0sZmlsZTp7dW5pdDoi5L2N5YWD57WEIix2ZXJiOiLmk4HmnIkifSxhcnJheTp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifSxzZXQ6e3VuaXQ6IumgheebriIsdmVyYjoi5pOB5pyJIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Iui8uOWFpSIsZW1haWw6IumDteS7tuWcsOWdgCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIOaXpeacn+aZgumWkyIsZGF0ZToiSVNPIOaXpeacnyIsdGltZToiSVNPIOaZgumWkyIsZHVyYXRpb246IklTTyDmnJ/plpMiLGlwdjQ6IklQdjQg5L2N5Z2AIixpcHY2OiJJUHY2IOS9jeWdgCIsY2lkcnY0OiJJUHY0IOevhOWcjSIsY2lkcnY2OiJJUHY2IOevhOWcjSIsYmFzZTY0OiJiYXNlNjQg57eo56K85a2X5LiyIixiYXNlNjR1cmw6ImJhc2U2NHVybCDnt6jnorzlrZfkuLIiLGpzb25fc3RyaW5nOiJKU09OIOWtl+S4siIsZTE2NDoiRS4xNjQg5pW45YC8Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi6Ly45YWlIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfe+8jOS9huaUtuWIsCAke3N9YDpg54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6ICR7aX3vvIzkvYbmlLbliLAgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g54Sh5pWI55qE6Ly45YWl5YC877ya6aCQ5pyf54K6ICR7ayhlLnZhbHVlc1swXSl9YDpg54Sh5pWI55qE6YG46aCF77ya6aCQ5pyf54K65Lul5LiL5YW25Lit5LmL5LiAICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DmlbjlgLzpgY7lpKfvvJrpoJDmnJ8gJHtlLm9yaWdpbj8/IuWAvCJ9IOaHieeCuiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLlgIvlhYPntKAifWA6YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVuOWAvOmBjuWwj++8mumgkOacnyAke2Uub3JpZ2lufSDmh4nngrogJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOaVuOWAvOmBjuWwj++8mumgkOacnyAke2Uub3JpZ2lufSDmh4nngrogJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOS7pSAiJHtpLnByZWZpeH0iIOmWi+mgrWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5LulICIke2kuc3VmZml4fSIg57WQ5bC+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOeEoeaViOeahOWtl+S4su+8muW/hemgiOWMheWQqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI56ym5ZCI5qC85byPICR7aS5wYXR0ZXJufWA6YOeEoeaViOeahCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g54Sh5pWI55qE5pW45a2X77ya5b+F6aCI54K6ICR7ZS5kaXZpc29yfSDnmoTlgI3mlbhgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDnhKHms5XorZjliKXnmoTpjbXlgLwke2Uua2V5cy5sZW5ndGg+MT8i5YCRIjoiIn3vvJoke18oZS5rZXlzLCLjgIEiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTpjbXlgLxgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDkuK3mnInnhKHmlYjnmoTlgLxgO2RlZmF1bHQ6cmV0dXJuIueEoeaViOeahOi8uOWFpeWAvCJ9fX07ZnVuY3Rpb24gZmcoKXtyZXR1cm57bG9jYWxlRXJyb3I6cGcoKX19Y29uc3QgZ2c9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IsOgbWkiLHZlcmI6Im7DrSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJuw60ifSxhcnJheTp7dW5pdDoibmthbiIsdmVyYjoibsOtIn0sc2V0Ont1bml0OiJua2FuIix2ZXJiOiJuw60ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSIsZW1haWw6IsOgZMOtcuG6ucyBc8OsIMOsbeG6ucyBbMOsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLDoGvDs2vDsiBJU08iLGRhdGU6IuG7jWrhu43MgSBJU08iLHRpbWU6IsOga8Oza8OyIElTTyIsZHVyYXRpb246IsOga8Oza8OyIHTDsyBww6kgSVNPIixpcHY0OiLDoGTDrXLhurnMgXPDrCBJUHY0IixpcHY2OiLDoGTDrXLhurnMgXPDrCBJUHY2IixjaWRydjQ6IsOgZ2LDqGdiw6ggSVB2NCIsY2lkcnY2OiLDoGdiw6hnYsOoIElQdjYiLGJhc2U2NDoi4buNzIBy4buNzIAgdMOtIGEga+G7jcyBIG7DrSBiYXNlNjQiLGJhc2U2NHVybDoi4buNzIBy4buNzIAgYmFzZTY0dXJsIixqc29uX3N0cmluZzoi4buNzIBy4buNzIAgSlNPTiIsZTE2NDoibuG7jcyBbWLDoCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuG6ucyAcuG7jSDDrGLDoXfhu41sw6kifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJu4buNzIFtYsOgIixhcnJheToiYWtvcOG7jSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDDoG3hu43MgCBhIHLDrSAke3N9YDpgw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7aX0sIMOgbeG7jcyAIGEgcsOtICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSAke2soZS52YWx1ZXNbMF0pfWA6YMOA4bmjw6B5w6BuIGHhuaPDrOG5o2U6IHlhbiDhu43MgGthbiBsw6FyYSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVMOzIHDhu43MgCBqw7k6IGEgbsOtIGzDoXRpIGrhurnMgSBww6kgJHtlLm9yaWdpbj8/Iml5ZSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW19ICR7YS51bml0fWA6YFTDsyBw4buNzIAgasO5OiBhIG7DrSBsw6F0aSBq4bq5zIEgJHtpfSR7ZS5tYXhpbXVtfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtfSAke2EudW5pdH1gOmBLw6lyw6kganU6IGEgbsOtIGzDoXRpIGrhurnMgSAke2l9JHtlLm1pbmltdW19YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYuG6ucyAcuG6ucyAIHDhurnMgGzDuiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIHBhcsOtIHDhurnMgGzDuiAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgbsOtICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2Dhu4zMgHLhu43MgCBh4bmjw6zhuaNlOiBnYuG7jcyBZOG7jcyAIGLDoSDDoHDhurnhurly4bq5IG11ICR7aS5wYXR0ZXJufWA6YEHhuaPDrOG5o2U6ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBO4buNzIFtYsOgIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgauG6ucyBIMOoecOgIHDDrXDDrW4gdGkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gQuG7jXTDrG7DrCDDoMOsbeG7jcyAOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYELhu410w6xuw6wgYeG5o8Os4bmjZSBuw61uw7ogJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIsOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYEl5ZSBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iw4xiw6F34buNbMOpIGHhuaPDrOG5o2UifX19O2Z1bmN0aW9uIHZnKCl7cmV0dXJue2xvY2FsZUVycm9yOmdnKCl9fWNvbnN0IERpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxhcjp6cCxhejpUcCxiZTpVcCxiZzpPcCxjYTpOcCxjczpacCxkYTpDcCxkZTpMcCxlbDpxcCxlbjpnbCxlbzpIcCxlczpLcCxmYTpXcCxmaTpYcCxmcjpRcCxmckNBOnRmLGhlOnJmLGhyOmFmLGh1OmNmLGh5OmxmLGlkOm1mLGlzOmZmLGl0OnZmLGphOiRmLGthOmJmLGtoOmtmLGttOnZsLGtvOndmLGx0OnpmLG1rOlRmLG1zOlVmLG5sOk9mLG5vOk5mLG90YTpaZixwbDpMZixwczpDZixwdDpxZixybzpKZixydTpWZixzbDpCZixzdjpHZix0YTpZZix0aDplZyx0cjpuZyx1YTppZyx1azpobCx1cjphZyx1ejpjZyx2aTpsZyx5bzp2Zyx6aENOOm1nLHpoVFc6Zmd9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7dmFyIGtzO2NvbnN0IE5pPVN5bWJvbCgiWm9kT3V0cHV0IiksRWk9U3ltYm9sKCJab2RJbnB1dCIpO2NsYXNzICRse2NvbnN0cnVjdG9yKCl7dGhpcy5fbWFwPW5ldyBXZWFrTWFwLHRoaXMuX2lkbWFwPW5ldyBNYXB9YWRkKG4sLi4ucil7Y29uc3Qgbz1yWzBdO3JldHVybiB0aGlzLl9tYXAuc2V0KG4sbyksbyYmdHlwZW9mIG89PSJvYmplY3QiJiYiaWQiaW4gbyYmdGhpcy5faWRtYXAuc2V0KG8uaWQsbiksdGhpc31jbGVhcigpe3JldHVybiB0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcCx0aGlzfXJlbW92ZShuKXtjb25zdCByPXRoaXMuX21hcC5nZXQobik7cmV0dXJuIHImJnR5cGVvZiByPT0ib2JqZWN0IiYmImlkImluIHImJnRoaXMuX2lkbWFwLmRlbGV0ZShyLmlkKSx0aGlzLl9tYXAuZGVsZXRlKG4pLHRoaXN9Z2V0KG4pe2NvbnN0IHI9bi5fem9kLnBhcmVudDtpZihyKXtjb25zdCBvPXsuLi50aGlzLmdldChyKT8/e319O2RlbGV0ZSBvLmlkO2NvbnN0IGU9ey4uLm8sLi4udGhpcy5fbWFwLmdldChuKX07cmV0dXJuIE9iamVjdC5rZXlzKGUpLmxlbmd0aD9lOnZvaWQgMH1yZXR1cm4gdGhpcy5fbWFwLmdldChuKX1oYXMobil7cmV0dXJuIHRoaXMuX21hcC5oYXMobil9fWZ1bmN0aW9uIEtuKCl7cmV0dXJuIG5ldyAkbH0oa3M9Z2xvYmFsVGhpcykuX196b2RfZ2xvYmFsUmVnaXN0cnk/Pyhrcy5fX3pvZF9nbG9iYWxSZWdpc3RyeT1LbigpKTtjb25zdCByZT1nbG9iYWxUaGlzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5O2Z1bmN0aW9uIF9sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLC4uLmgobil9KX1mdW5jdGlvbiBibCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIFppKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZW1haWwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gRG4odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJndWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFJpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBDaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIEFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY2IiwuLi5oKG4pfSl9ZnVuY3Rpb24gTGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjciLC4uLmgobil9KX1mdW5jdGlvbiBCbih0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBNaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImVtb2ppIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIHFpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoibmFub2lkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEZpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBKaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImN1aWQyIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEhpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidWxpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBWaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InhpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBLaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImtzdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEJpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaXB2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBXaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImlwdjYiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24geWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJtYWMiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gR2kodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gWGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjaWRydjYiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gWWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gUWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJiYXNlNjR1cmwiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gZW8odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlMTY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIHRvKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiand0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWNvbnN0IG5vPXtBbnk6bnVsbCxNaW51dGU6LTEsU2Vjb25kOjAsTWlsbGlzZWNvbmQ6MyxNaWNyb3NlY29uZDo2fTtmdW5jdGlvbiBrbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGV0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsb2Zmc2V0OiExLGxvY2FsOiExLHByZWNpc2lvbjpudWxsLC4uLmgobil9KX1mdW5jdGlvbiBTbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImRhdGUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gd2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ0aW1lIixjaGVjazoic3RyaW5nX2Zvcm1hdCIscHJlY2lzaW9uOm51bGwsLi4uaChuKX0pfWZ1bmN0aW9uIElsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZHVyYXRpb24iLGNoZWNrOiJzdHJpbmdfZm9ybWF0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gemwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2tzOltdLC4uLmgobil9KX1mdW5jdGlvbiB4bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjb2VyY2U6ITAsY2hlY2tzOltdLC4uLmgobil9KX1mdW5jdGlvbiBUbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJzYWZlaW50IiwuLi5oKG4pfSl9ZnVuY3Rpb24gamwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIFVsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImZsb2F0NjQiLC4uLmgobil9KX1mdW5jdGlvbiBQbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIE9sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQzMiIsLi4uaChuKX0pfWZ1bmN0aW9uIERsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJib29sZWFuIiwuLi5oKG4pfSl9ZnVuY3Rpb24gTmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJvb2xlYW4iLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gRWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsLi4uaChuKX0pfWZ1bmN0aW9uIFpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gUmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY2hlY2s6ImJpZ2ludF9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiaW50NjQiLC4uLmgobil9KX1mdW5jdGlvbiBDbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJ1aW50NjQiLC4uLmgobil9KX1mdW5jdGlvbiBBbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3ltYm9sIiwuLi5oKG4pfSl9ZnVuY3Rpb24gTGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InVuZGVmaW5lZCIsLi4uaChuKX0pfWZ1bmN0aW9uIE1sKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudWxsIiwuLi5oKG4pfSl9ZnVuY3Rpb24gcWwodCl7cmV0dXJuIG5ldyB0KHt0eXBlOiJhbnkifSl9ZnVuY3Rpb24gRmwodCl7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmtub3duIn0pfWZ1bmN0aW9uIEpsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJuZXZlciIsLi4uaChuKX0pfWZ1bmN0aW9uIEhsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ2b2lkIiwuLi5oKG4pfSl9ZnVuY3Rpb24gVmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRhdGUiLC4uLmgobil9KX1mdW5jdGlvbiBLbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZGF0ZSIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBCbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibmFuIiwuLi5oKG4pfSl9ZnVuY3Rpb24gaGUodCxuKXtyZXR1cm4gbmV3IFNpKHtjaGVjazoibGVzc190aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gaWUodCxuKXtyZXR1cm4gbmV3IFNpKHtjaGVjazoibGVzc190aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gJGUodCxuKXtyZXR1cm4gbmV3IHdpKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiExfSl9ZnVuY3Rpb24gdGUodCxuKXtyZXR1cm4gbmV3IHdpKHtjaGVjazoiZ3JlYXRlcl90aGFuIiwuLi5oKG4pLHZhbHVlOnQsaW5jbHVzaXZlOiEwfSl9ZnVuY3Rpb24gV24odCl7cmV0dXJuICRlKDAsdCl9ZnVuY3Rpb24gR24odCl7cmV0dXJuIGhlKDAsdCl9ZnVuY3Rpb24gWG4odCl7cmV0dXJuIGllKDAsdCl9ZnVuY3Rpb24gWW4odCl7cmV0dXJuIHRlKDAsdCl9ZnVuY3Rpb24gamUodCxuKXtyZXR1cm4gbmV3IFpjKHtjaGVjazoibXVsdGlwbGVfb2YiLC4uLmgobiksdmFsdWU6dH0pfWZ1bmN0aW9uIEVlKHQsbil7cmV0dXJuIG5ldyBBYyh7Y2hlY2s6Im1heF9zaXplIiwuLi5oKG4pLG1heGltdW06dH0pfWZ1bmN0aW9uIF9lKHQsbil7cmV0dXJuIG5ldyBMYyh7Y2hlY2s6Im1pbl9zaXplIiwuLi5oKG4pLG1pbmltdW06dH0pfWZ1bmN0aW9uIFhlKHQsbil7cmV0dXJuIG5ldyBNYyh7Y2hlY2s6InNpemVfZXF1YWxzIiwuLi5oKG4pLHNpemU6dH0pfWZ1bmN0aW9uIFllKHQsbil7cmV0dXJuIG5ldyBxYyh7Y2hlY2s6Im1heF9sZW5ndGgiLC4uLmgobiksbWF4aW11bTp0fSl9ZnVuY3Rpb24gYmUodCxuKXtyZXR1cm4gbmV3IEZjKHtjaGVjazoibWluX2xlbmd0aCIsLi4uaChuKSxtaW5pbXVtOnR9KX1mdW5jdGlvbiBRZSh0LG4pe3JldHVybiBuZXcgSmMoe2NoZWNrOiJsZW5ndGhfZXF1YWxzIiwuLi5oKG4pLGxlbmd0aDp0fSl9ZnVuY3Rpb24ganQodCxuKXtyZXR1cm4gbmV3IEhjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJyZWdleCIsLi4uaChuKSxwYXR0ZXJuOnR9KX1mdW5jdGlvbiBVdCh0KXtyZXR1cm4gbmV3IFZjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJsb3dlcmNhc2UiLC4uLmgodCl9KX1mdW5jdGlvbiBQdCh0KXtyZXR1cm4gbmV3IEtjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJ1cHBlcmNhc2UiLC4uLmgodCl9KX1mdW5jdGlvbiBPdCh0LG4pe3JldHVybiBuZXcgQmMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImluY2x1ZGVzIiwuLi5oKG4pLGluY2x1ZGVzOnR9KX1mdW5jdGlvbiBEdCh0LG4pe3JldHVybiBuZXcgV2Moe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InN0YXJ0c193aXRoIiwuLi5oKG4pLHByZWZpeDp0fSl9ZnVuY3Rpb24gTnQodCxuKXtyZXR1cm4gbmV3IEdjKHtjaGVjazoic3RyaW5nX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLC4uLmgobiksc3VmZml4OnR9KX1mdW5jdGlvbiBRbih0LG4scil7cmV0dXJuIG5ldyBYYyh7Y2hlY2s6InByb3BlcnR5Iixwcm9wZXJ0eTp0LHNjaGVtYTpuLC4uLmgocil9KX1mdW5jdGlvbiBFdCh0LG4pe3JldHVybiBuZXcgWWMoe2NoZWNrOiJtaW1lX3R5cGUiLG1pbWU6dCwuLi5oKG4pfSl9ZnVuY3Rpb24gZ2UodCl7cmV0dXJuIG5ldyBRYyh7Y2hlY2s6Im92ZXJ3cml0ZSIsdHg6dH0pfWZ1bmN0aW9uIFp0KHQpe3JldHVybiBnZShuPT5uLm5vcm1hbGl6ZSh0KSl9ZnVuY3Rpb24gUnQoKXtyZXR1cm4gZ2UodD0+dC50cmltKCkpfWZ1bmN0aW9uIEN0KCl7cmV0dXJuIGdlKHQ9PnQudG9Mb3dlckNhc2UoKSl9ZnVuY3Rpb24gQXQoKXtyZXR1cm4gZ2UodD0+dC50b1VwcGVyQ2FzZSgpKX1mdW5jdGlvbiBMdCgpe3JldHVybiBnZSh0PT5acyh0KSl9ZnVuY3Rpb24gV2wodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiYXJyYXkiLGVsZW1lbnQ6biwuLi5oKHIpfSl9ZnVuY3Rpb24gaGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6biwuLi5oKHIpfSl9ZnVuY3Rpb24gJGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6bixpbmNsdXNpdmU6ITEsLi4uaChyKX0pfWZ1bmN0aW9uIF9nKHQsbixyLG8pe3JldHVybiBuZXcgdCh7dHlwZToidW5pb24iLG9wdGlvbnM6cixkaXNjcmltaW5hdG9yOm4sLi4uaChvKX0pfWZ1bmN0aW9uIGJnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDpuLHJpZ2h0OnJ9KX1mdW5jdGlvbiB5Zyh0LG4scixvKXtjb25zdCBlPXIgaW5zdGFuY2VvZiBJLGk9ZT9vOnIsYT1lP3I6bnVsbDtyZXR1cm4gbmV3IHQoe3R5cGU6InR1cGxlIixpdGVtczpuLHJlc3Q6YSwuLi5oKGkpfSl9ZnVuY3Rpb24ga2codCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6bix2YWx1ZVR5cGU6ciwuLi5oKG8pfSl9ZnVuY3Rpb24gU2codCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJtYXAiLGtleVR5cGU6bix2YWx1ZVR5cGU6ciwuLi5oKG8pfSl9ZnVuY3Rpb24gd2codCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToic2V0Iix2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gSWcodCxuLHIpe2NvbnN0IG89QXJyYXkuaXNBcnJheShuKT9PYmplY3QuZnJvbUVudHJpZXMobi5tYXAoZT0+W2UsZV0pKTpuO3JldHVybiBuZXcgdCh7dHlwZToiZW51bSIsZW50cmllczpvLC4uLmgocil9KX1mdW5jdGlvbiB6Zyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJlbnVtIixlbnRyaWVzOm4sLi4uaChyKX0pfWZ1bmN0aW9uIHhnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KG4pP246W25dLC4uLmgocil9KX1mdW5jdGlvbiBHbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZmlsZSIsLi4uaChuKX0pfWZ1bmN0aW9uIFRnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTpufSl9ZnVuY3Rpb24gamcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIFVnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudWxsYWJsZSIsaW5uZXJUeXBlOm59KX1mdW5jdGlvbiBQZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6bixnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoKTpMbihyKX19KX1mdW5jdGlvbiBPZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIERnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdWNjZXNzIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIE5nKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImNhdGNoIixpbm5lclR5cGU6bixjYXRjaFZhbHVlOnR5cGVvZiByPT0iZnVuY3Rpb24iP3I6KCk9PnJ9KX1mdW5jdGlvbiBFZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJwaXBlIixpbjpuLG91dDpyfSl9ZnVuY3Rpb24gWmcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIFJnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InRlbXBsYXRlX2xpdGVyYWwiLHBhcnRzOm4sLi4uaChyKX0pfWZ1bmN0aW9uIENnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJsYXp5IixnZXR0ZXI6bn0pfWZ1bmN0aW9uIEFnKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIFhsKHQsbixyKXtjb25zdCBvPWgocik7cmV0dXJuIG8uYWJvcnQ/PyhvLmFib3J0PSEwKSxuZXcgdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpuLC4uLm99KX1mdW5jdGlvbiBZbCh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm4sLi4uaChyKX0pfWZ1bmN0aW9uIFFsKHQsbil7Y29uc3Qgcj1lZChvPT4oby5hZGRJc3N1ZT1lPT57aWYodHlwZW9mIGU9PSJzdHJpbmciKW8uaXNzdWVzLnB1c2goTWUoZSxvLnZhbHVlLHIuX3pvZC5kZWYpKTtlbHNle2NvbnN0IGk9ZTtpLmZhdGFsJiYoaS5jb250aW51ZT0hMSksaS5jb2RlPz8oaS5jb2RlPSJjdXN0b20iKSxpLmlucHV0Pz8oaS5pbnB1dD1vLnZhbHVlKSxpLmluc3Q/PyhpLmluc3Q9ciksaS5jb250aW51ZT8/KGkuY29udGludWU9IXIuX3pvZC5kZWYuYWJvcnQpLG8uaXNzdWVzLnB1c2goTWUoaSkpfX0sdChvLnZhbHVlLG8pKSxuKTtyZXR1cm4gcn1mdW5jdGlvbiBlZCh0LG4pe2NvbnN0IHI9bmV3IHEoe2NoZWNrOiJjdXN0b20iLC4uLmgobil9KTtyZXR1cm4gci5fem9kLmNoZWNrPXQscn1mdW5jdGlvbiB0ZCh0KXtjb25zdCBuPW5ldyBxKHtjaGVjazoiZGVzY3JpYmUifSk7cmV0dXJuIG4uX3pvZC5vbmF0dGFjaD1bcj0+e2NvbnN0IG89cmUuZ2V0KHIpPz97fTtyZS5hZGQocix7Li4ubyxkZXNjcmlwdGlvbjp0fSl9XSxuLl96b2QuY2hlY2s9KCk9Pnt9LG59ZnVuY3Rpb24gbmQodCl7Y29uc3Qgbj1uZXcgcSh7Y2hlY2s6Im1ldGEifSk7cmV0dXJuIG4uX3pvZC5vbmF0dGFjaD1bcj0+e2NvbnN0IG89cmUuZ2V0KHIpPz97fTtyZS5hZGQocix7Li4ubywuLi50fSl9XSxuLl96b2QuY2hlY2s9KCk9Pnt9LG59ZnVuY3Rpb24gcmQodCxuKXtjb25zdCByPWgobik7bGV0IG89ci50cnV0aHk/P1sidHJ1ZSIsIjEiLCJ5ZXMiLCJvbiIsInkiLCJlbmFibGVkIl0sZT1yLmZhbHN5Pz9bImZhbHNlIiwiMCIsIm5vIiwib2ZmIiwibiIsImRpc2FibGVkIl07ci5jYXNlIT09InNlbnNpdGl2ZSImJihvPW8ubWFwKCQ9PnR5cGVvZiAkPT0ic3RyaW5nIj8kLnRvTG93ZXJDYXNlKCk6JCksZT1lLm1hcCgkPT50eXBlb2YgJD09InN0cmluZyI/JC50b0xvd2VyQ2FzZSgpOiQpKTtjb25zdCBpPW5ldyBTZXQobyksYT1uZXcgU2V0KGUpLHM9dC5Db2RlYz8/T2ksYz10LkJvb2xlYW4/P3hpLHU9dC5TdHJpbmc/P1R0LGw9bmV3IHUoe3R5cGU6InN0cmluZyIsZXJyb3I6ci5lcnJvcn0pLGc9bmV3IGMoe3R5cGU6ImJvb2xlYW4iLGVycm9yOnIuZXJyb3J9KSx2PW5ldyBzKHt0eXBlOiJwaXBlIixpbjpsLG91dDpnLHRyYW5zZm9ybTooKCQseSk9PntsZXQgRj0kO3JldHVybiByLmNhc2UhPT0ic2Vuc2l0aXZlIiYmKEY9Ri50b0xvd2VyQ2FzZSgpKSxpLmhhcyhGKT8hMDphLmhhcyhGKT8hMTooeS5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF92YWx1ZSIsZXhwZWN0ZWQ6InN0cmluZ2Jvb2wiLHZhbHVlczpbLi4uaSwuLi5hXSxpbnB1dDp5LnZhbHVlLGluc3Q6dixjb250aW51ZTohMX0pLHt9KX0pLHJldmVyc2VUcmFuc2Zvcm06KCgkLHkpPT4kPT09ITA/b1swXXx8InRydWUiOmVbMF18fCJmYWxzZSIpLGVycm9yOnIuZXJyb3J9KTtyZXR1cm4gdn1mdW5jdGlvbiBNdCh0LG4scixvPXt9KXtjb25zdCBlPWgobyksaT17Li4uaChvKSxjaGVjazoic3RyaW5nX2Zvcm1hdCIsdHlwZToic3RyaW5nIixmb3JtYXQ6bixmbjp0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yOnM9PnIudGVzdChzKSwuLi5lfTtyZXR1cm4gciBpbnN0YW5jZW9mIFJlZ0V4cCYmKGkucGF0dGVybj1yKSxuZXcgdChpKX1mdW5jdGlvbiBGZSh0KXtsZXQgbj10Py50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyZXR1cm4gbj09PSJkcmFmdC00IiYmKG49ImRyYWZ0LTA0Iiksbj09PSJkcmFmdC03IiYmKG49ImRyYWZ0LTA3Iikse3Byb2Nlc3NvcnM6dC5wcm9jZXNzb3JzPz97fSxtZXRhZGF0YVJlZ2lzdHJ5OnQ/Lm1ldGFkYXRhPz9yZSx0YXJnZXQ6bix1bnJlcHJlc2VudGFibGU6dD8udW5yZXByZXNlbnRhYmxlPz8idGhyb3ciLG92ZXJyaWRlOnQ/Lm92ZXJyaWRlPz8oKCk9Pnt9KSxpbzp0Py5pbz8/Im91dHB1dCIsY291bnRlcjowLHNlZW46bmV3IE1hcCxjeWNsZXM6dD8uY3ljbGVzPz8icmVmIixyZXVzZWQ6dD8ucmV1c2VkPz8iaW5saW5lIixleHRlcm5hbDp0Py5leHRlcm5hbD8/dm9pZCAwfX1mdW5jdGlvbiBFKHQsbixyPXtwYXRoOltdLHNjaGVtYVBhdGg6W119KXt2YXIgbztjb25zdCBlPXQuX3pvZC5kZWYsaT1uLnNlZW4uZ2V0KHQpO2lmKGkpcmV0dXJuIGkuY291bnQrKyxyLnNjaGVtYVBhdGguaW5jbHVkZXModCkmJihpLmN5Y2xlPXIucGF0aCksaS5zY2hlbWE7Y29uc3QgYT17c2NoZW1hOnt9LGNvdW50OjEsY3ljbGU6dm9pZCAwLHBhdGg6ci5wYXRofTtuLnNlZW4uc2V0KHQsYSk7Y29uc3Qgcz10Ll96b2QudG9KU09OU2NoZW1hPy4oKTtpZihzKWEuc2NoZW1hPXM7ZWxzZXtjb25zdCBsPXsuLi5yLHNjaGVtYVBhdGg6Wy4uLnIuc2NoZW1hUGF0aCx0XSxwYXRoOnIucGF0aH07aWYodC5fem9kLnByb2Nlc3NKU09OU2NoZW1hKXQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYShuLGEuc2NoZW1hLGwpO2Vsc2V7Y29uc3Qgdj1hLnNjaGVtYSwkPW4ucHJvY2Vzc29yc1tlLnR5cGVdO2lmKCEkKXRocm93IG5ldyBFcnJvcihgW3RvSlNPTlNjaGVtYV06IE5vbi1yZXByZXNlbnRhYmxlIHR5cGUgZW5jb3VudGVyZWQ6ICR7ZS50eXBlfWApOyQodCxuLHYsbCl9Y29uc3QgZz10Ll96b2QucGFyZW50O2cmJihhLnJlZnx8KGEucmVmPWcpLEUoZyxuLGwpLG4uc2Vlbi5nZXQoZykuaXNQYXJlbnQ9ITApfWNvbnN0IGM9bi5tZXRhZGF0YVJlZ2lzdHJ5LmdldCh0KTtyZXR1cm4gYyYmT2JqZWN0LmFzc2lnbihhLnNjaGVtYSxjKSxuLmlvPT09ImlucHV0IiYmZWUodCkmJihkZWxldGUgYS5zY2hlbWEuZXhhbXBsZXMsZGVsZXRlIGEuc2NoZW1hLmRlZmF1bHQpLG4uaW89PT0iaW5wdXQiJiYiX3ByZWZhdWx0ImluIGEuc2NoZW1hJiYoKG89YS5zY2hlbWEpLmRlZmF1bHQ/PyhvLmRlZmF1bHQ9YS5zY2hlbWEuX3ByZWZhdWx0KSksZGVsZXRlIGEuc2NoZW1hLl9wcmVmYXVsdCxuLnNlZW4uZ2V0KHQpLnNjaGVtYX1mdW5jdGlvbiBKZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1uZXcgTWFwO2Zvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQ7aWYocyl7Y29uc3QgYz1vLmdldChzKTtpZihjJiZjIT09YVswXSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBzY2hlbWEgaWQgIiR7c30iIGRldGVjdGVkIGR1cmluZyBKU09OIFNjaGVtYSBjb252ZXJzaW9uLiBUd28gZGlmZmVyZW50IHNjaGVtYXMgY2Fubm90IHNoYXJlIHRoZSBzYW1lIGlkIHdoZW4gY29udmVydGVkIHRvZ2V0aGVyLmApO28uc2V0KHMsYVswXSl9fWNvbnN0IGU9YT0+e2NvbnN0IHM9dC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2lmKHQuZXh0ZXJuYWwpe2NvbnN0IGc9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoYVswXSk/LmlkLHY9dC5leHRlcm5hbC51cmk/Pyh5PT55KTtpZihnKXJldHVybntyZWY6dihnKX07Y29uc3QgJD1hWzFdLmRlZklkPz9hWzFdLnNjaGVtYS5pZD8/YHNjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm4gYVsxXS5kZWZJZD0kLHtkZWZJZDokLHJlZjpgJHt2KCJfX3NoYXJlZCIpfSMvJHtzfS8keyR9YH19aWYoYVsxXT09PXIpcmV0dXJue3JlZjoiIyJ9O2NvbnN0IHU9YCMvJHtzfS9gLGw9YVsxXS5zY2hlbWEuaWQ/P2BfX3NjaGVtYSR7dC5jb3VudGVyKyt9YDtyZXR1cm57ZGVmSWQ6bCxyZWY6dStsfX0saT1hPT57aWYoYVsxXS5zY2hlbWEuJHJlZilyZXR1cm47Y29uc3Qgcz1hWzFdLHtyZWY6YyxkZWZJZDp1fT1lKGEpO3MuZGVmPXsuLi5zLnNjaGVtYX0sdSYmKHMuZGVmSWQ9dSk7Y29uc3QgbD1zLnNjaGVtYTtmb3IoY29uc3QgZyBpbiBsKWRlbGV0ZSBsW2ddO2wuJHJlZj1jfTtpZih0LmN5Y2xlcz09PSJ0aHJvdyIpZm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz1hWzFdO2lmKHMuY3ljbGUpdGhyb3cgbmV3IEVycm9yKGBDeWNsZSBkZXRlY3RlZDogIy8ke3MuY3ljbGU/LmpvaW4oIi8iKX0vPHJvb3Q+CgpTZXQgdGhlIFxgY3ljbGVzXGAgcGFyYW1ldGVyIHRvIFxgInJlZiJcYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLmApfWZvcihjb25zdCBhIG9mIHQuc2Vlbi5lbnRyaWVzKCkpe2NvbnN0IHM9YVsxXTtpZihuPT09YVswXSl7aShhKTtjb250aW51ZX1pZih0LmV4dGVybmFsKXtjb25zdCB1PXQuZXh0ZXJuYWwucmVnaXN0cnkuZ2V0KGFbMF0pPy5pZDtpZihuIT09YVswXSYmdSl7aShhKTtjb250aW51ZX19aWYodC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChhWzBdKT8uaWQpe2koYSk7Y29udGludWV9aWYocy5jeWNsZSl7aShhKTtjb250aW51ZX1pZihzLmNvdW50PjEmJnQucmV1c2VkPT09InJlZiIpe2koYSk7Y29udGludWV9fX1mdW5jdGlvbiBIZSh0LG4pe2NvbnN0IHI9dC5zZWVuLmdldChuKTtpZighcil0aHJvdyBuZXcgRXJyb3IoIlVucHJvY2Vzc2VkIHNjaGVtYS4gVGhpcyBpcyBhIGJ1ZyBpbiBab2QuIik7Y29uc3Qgbz1zPT57Y29uc3QgYz10LnNlZW4uZ2V0KHMpO2lmKGMucmVmPT09bnVsbClyZXR1cm47Y29uc3QgdT1jLmRlZj8/Yy5zY2hlbWEsbD17Li4udX0sZz1jLnJlZjtpZihjLnJlZj1udWxsLGcpe28oZyk7Y29uc3QgJD10LnNlZW4uZ2V0KGcpLHk9JC5zY2hlbWE7aWYoeS4kcmVmJiYodC50YXJnZXQ9PT0iZHJhZnQtMDcifHx0LnRhcmdldD09PSJkcmFmdC0wNCJ8fHQudGFyZ2V0PT09Im9wZW5hcGktMy4wIik/KHUuYWxsT2Y9dS5hbGxPZj8/W10sdS5hbGxPZi5wdXNoKHkpKTpPYmplY3QuYXNzaWduKHUseSksT2JqZWN0LmFzc2lnbih1LGwpLHMuX3pvZC5wYXJlbnQ9PT1nKWZvcihjb25zdCBSIGluIHUpUj09PSIkcmVmInx8Uj09PSJhbGxPZiJ8fFIgaW4gbHx8ZGVsZXRlIHVbUl07aWYoeS4kcmVmJiYkLmRlZilmb3IoY29uc3QgUiBpbiB1KVI9PT0iJHJlZiJ8fFI9PT0iYWxsT2YifHxSIGluICQuZGVmJiZKU09OLnN0cmluZ2lmeSh1W1JdKT09PUpTT04uc3RyaW5naWZ5KCQuZGVmW1JdKSYmZGVsZXRlIHVbUl19Y29uc3Qgdj1zLl96b2QucGFyZW50O2lmKHYmJnYhPT1nKXtvKHYpO2NvbnN0ICQ9dC5zZWVuLmdldCh2KTtpZigkPy5zY2hlbWEuJHJlZiYmKHUuJHJlZj0kLnNjaGVtYS4kcmVmLCQuZGVmKSlmb3IoY29uc3QgeSBpbiB1KXk9PT0iJHJlZiJ8fHk9PT0iYWxsT2YifHx5IGluICQuZGVmJiZKU09OLnN0cmluZ2lmeSh1W3ldKT09PUpTT04uc3RyaW5naWZ5KCQuZGVmW3ldKSYmZGVsZXRlIHVbeV19dC5vdmVycmlkZSh7em9kU2NoZW1hOnMsanNvblNjaGVtYTp1LHBhdGg6Yy5wYXRoPz9bXX0pfTtmb3IoY29uc3QgcyBvZlsuLi50LnNlZW4uZW50cmllcygpXS5yZXZlcnNlKCkpbyhzWzBdKTtjb25zdCBlPXt9O2lmKHQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiP2UuJHNjaGVtYT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiOnQudGFyZ2V0PT09ImRyYWZ0LTA3Ij9lLiRzY2hlbWE9Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI6dC50YXJnZXQ9PT0iZHJhZnQtMDQiP2UuJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIjp0LnRhcmdldCx0LmV4dGVybmFsPy51cmkpe2NvbnN0IHM9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQobik/LmlkO2lmKCFzKXRocm93IG5ldyBFcnJvcigiU2NoZW1hIGlzIG1pc3NpbmcgYW4gYGlkYCBwcm9wZXJ0eSIpO2UuJGlkPXQuZXh0ZXJuYWwudXJpKHMpfU9iamVjdC5hc3NpZ24oZSxyLmRlZj8/ci5zY2hlbWEpO2NvbnN0IGk9dC5tZXRhZGF0YVJlZ2lzdHJ5LmdldChuKT8uaWQ7aSE9PXZvaWQgMCYmZS5pZD09PWkmJmRlbGV0ZSBlLmlkO2NvbnN0IGE9dC5leHRlcm5hbD8uZGVmcz8/e307Zm9yKGNvbnN0IHMgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3QgYz1zWzFdO2MuZGVmJiZjLmRlZklkJiYoYy5kZWYuaWQ9PT1jLmRlZklkJiZkZWxldGUgYy5kZWYuaWQsYVtjLmRlZklkXT1jLmRlZil9dC5leHRlcm5hbHx8T2JqZWN0LmtleXMoYSkubGVuZ3RoPjAmJih0LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj9lLiRkZWZzPWE6ZS5kZWZpbml0aW9ucz1hKTt0cnl7Y29uc3Qgcz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHMsIn5zdGFuZGFyZCIse3ZhbHVlOnsuLi5uWyJ+c3RhbmRhcmQiXSxqc29uU2NoZW1hOntpbnB1dDp2dChuLCJpbnB1dCIsdC5wcm9jZXNzb3JzKSxvdXRwdXQ6dnQobiwib3V0cHV0Iix0LnByb2Nlc3NvcnMpfX0sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMX0pLHN9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJFcnJvciBjb252ZXJ0aW5nIHNjaGVtYSB0byBKU09OLiIpfX1mdW5jdGlvbiBlZSh0LG4pe2NvbnN0IHI9bj8/e3NlZW46bmV3IFNldH07aWYoci5zZWVuLmhhcyh0KSlyZXR1cm4hMTtyLnNlZW4uYWRkKHQpO2NvbnN0IG89dC5fem9kLmRlZjtpZihvLnR5cGU9PT0idHJhbnNmb3JtIilyZXR1cm4hMDtpZihvLnR5cGU9PT0iYXJyYXkiKXJldHVybiBlZShvLmVsZW1lbnQscik7aWYoby50eXBlPT09InNldCIpcmV0dXJuIGVlKG8udmFsdWVUeXBlLHIpO2lmKG8udHlwZT09PSJsYXp5IilyZXR1cm4gZWUoby5nZXR0ZXIoKSxyKTtpZihvLnR5cGU9PT0icHJvbWlzZSJ8fG8udHlwZT09PSJvcHRpb25hbCJ8fG8udHlwZT09PSJub25vcHRpb25hbCJ8fG8udHlwZT09PSJudWxsYWJsZSJ8fG8udHlwZT09PSJyZWFkb25seSJ8fG8udHlwZT09PSJkZWZhdWx0Inx8by50eXBlPT09InByZWZhdWx0IilyZXR1cm4gZWUoby5pbm5lclR5cGUscik7aWYoby50eXBlPT09ImludGVyc2VjdGlvbiIpcmV0dXJuIGVlKG8ubGVmdCxyKXx8ZWUoby5yaWdodCxyKTtpZihvLnR5cGU9PT0icmVjb3JkInx8by50eXBlPT09Im1hcCIpcmV0dXJuIGVlKG8ua2V5VHlwZSxyKXx8ZWUoby52YWx1ZVR5cGUscik7aWYoby50eXBlPT09InBpcGUiKXJldHVybiB0Ll96b2QudHJhaXRzLmhhcygiJFpvZENvZGVjIik/ITA6ZWUoby5pbixyKXx8ZWUoby5vdXQscik7aWYoby50eXBlPT09Im9iamVjdCIpe2Zvcihjb25zdCBlIGluIG8uc2hhcGUpaWYoZWUoby5zaGFwZVtlXSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idW5pb24iKXtmb3IoY29uc3QgZSBvZiBvLm9wdGlvbnMpaWYoZWUoZSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihvLnR5cGU9PT0idHVwbGUiKXtmb3IoY29uc3QgZSBvZiBvLml0ZW1zKWlmKGVlKGUscikpcmV0dXJuITA7cmV0dXJuISEoby5yZXN0JiZlZShvLnJlc3QscikpfXJldHVybiExfWNvbnN0IGlkPSh0LG49e30pPT5yPT57Y29uc3Qgbz1GZSh7Li4ucixwcm9jZXNzb3JzOm59KTtyZXR1cm4gRSh0LG8pLEplKG8sdCksSGUobyx0KX0sdnQ9KHQsbixyPXt9KT0+bz0+e2NvbnN0e2xpYnJhcnlPcHRpb25zOmUsdGFyZ2V0Oml9PW8/P3t9LGE9RmUoey4uLmU/P3t9LHRhcmdldDppLGlvOm4scHJvY2Vzc29yczpyfSk7cmV0dXJuIEUodCxhKSxKZShhLHQpLEhlKGEsdCl9LExnPXtndWlkOiJ1dWlkIix1cmw6InVyaSIsZGF0ZXRpbWU6ImRhdGUtdGltZSIsanNvbl9zdHJpbmc6Impzb24tc3RyaW5nIixyZWdleDoiIn0sb2Q9KHQsbixyLG8pPT57Y29uc3QgZT1yO2UudHlwZT0ic3RyaW5nIjtjb25zdHttaW5pbXVtOmksbWF4aW11bTphLGZvcm1hdDpzLHBhdHRlcm5zOmMsY29udGVudEVuY29kaW5nOnV9PXQuX3pvZC5iYWc7aWYodHlwZW9mIGk9PSJudW1iZXIiJiYoZS5taW5MZW5ndGg9aSksdHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhMZW5ndGg9YSkscyYmKGUuZm9ybWF0PUxnW3NdPz9zLGUuZm9ybWF0PT09IiImJmRlbGV0ZSBlLmZvcm1hdCxzPT09InRpbWUiJiZkZWxldGUgZS5mb3JtYXQpLHUmJihlLmNvbnRlbnRFbmNvZGluZz11KSxjJiZjLnNpemU+MCl7Y29uc3QgbD1bLi4uY107bC5sZW5ndGg9PT0xP2UucGF0dGVybj1sWzBdLnNvdXJjZTpsLmxlbmd0aD4xJiYoZS5hbGxPZj1bLi4ubC5tYXAoZz0+KHsuLi5uLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3t0eXBlOiJzdHJpbmcifTp7fSxwYXR0ZXJuOmcuc291cmNlfSkpXSl9fSxhZD0odCxuLHIsbyk9Pntjb25zdCBlPXIse21pbmltdW06aSxtYXhpbXVtOmEsZm9ybWF0OnMsbXVsdGlwbGVPZjpjLGV4Y2x1c2l2ZU1heGltdW06dSxleGNsdXNpdmVNaW5pbXVtOmx9PXQuX3pvZC5iYWc7dHlwZW9mIHM9PSJzdHJpbmciJiZzLmluY2x1ZGVzKCJpbnQiKT9lLnR5cGU9ImludGVnZXIiOmUudHlwZT0ibnVtYmVyIjtjb25zdCBnPXR5cGVvZiBsPT0ibnVtYmVyIiYmbD49KGk/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSksdj10eXBlb2YgdT09Im51bWJlciImJnU8PShhPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpLCQ9bi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI7Zz8kPyhlLm1pbmltdW09bCxlLmV4Y2x1c2l2ZU1pbmltdW09ITApOmUuZXhjbHVzaXZlTWluaW11bT1sOnR5cGVvZiBpPT0ibnVtYmVyIiYmKGUubWluaW11bT1pKSx2PyQ/KGUubWF4aW11bT11LGUuZXhjbHVzaXZlTWF4aW11bT0hMCk6ZS5leGNsdXNpdmVNYXhpbXVtPXU6dHlwZW9mIGE9PSJudW1iZXIiJiYoZS5tYXhpbXVtPWEpLHR5cGVvZiBjPT0ibnVtYmVyIiYmKGUubXVsdGlwbGVPZj1jKX0sc2Q9KHQsbixyLG8pPT57ci50eXBlPSJib29sZWFuIn0sY2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx1ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJTeW1ib2xzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxsZD0odCxuLHIsbyk9PntuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KHIudHlwZT0ic3RyaW5nIixyLm51bGxhYmxlPSEwLHIuZW51bT1bbnVsbF0pOnIudHlwZT0ibnVsbCJ9LGRkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlVuZGVmaW5lZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sbWQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVm9pZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0scGQ9KHQsbixyLG8pPT57ci5ub3Q9e319LGZkPSh0LG4scixvKT0+e30sZ2Q9KHQsbixyLG8pPT57fSx2ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJEYXRlIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxoZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1vaShlLmVudHJpZXMpO2kuZXZlcnkoYT0+dHlwZW9mIGE9PSJudW1iZXIiKSYmKHIudHlwZT0ibnVtYmVyIiksaS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpJiYoci50eXBlPSJzdHJpbmciKSxyLmVudW09aX0sJGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9W107Zm9yKGNvbnN0IGEgb2YgZS52YWx1ZXMpaWYoYT09PXZvaWQgMCl7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiTGl0ZXJhbCBgdW5kZWZpbmVkYCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX1lbHNlIGlmKHR5cGVvZiBhPT0iYmlnaW50Iil7aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiQmlnSW50IGxpdGVyYWxzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpO2kucHVzaChOdW1iZXIoYSkpfWVsc2UgaS5wdXNoKGEpO2lmKGkubGVuZ3RoIT09MClpZihpLmxlbmd0aD09PTEpe2NvbnN0IGE9aVswXTtyLnR5cGU9YT09PW51bGw/Im51bGwiOnR5cGVvZiBhLG4udGFyZ2V0PT09ImRyYWZ0LTA0Inx8bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP3IuZW51bT1bYV06ci5jb25zdD1hfWVsc2UgaS5ldmVyeShhPT50eXBlb2YgYT09Im51bWJlciIpJiYoci50eXBlPSJudW1iZXIiKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikmJihyLnR5cGU9InN0cmluZyIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJib29sZWFuIikmJihyLnR5cGU9ImJvb2xlYW4iKSxpLmV2ZXJ5KGE9PmE9PT1udWxsKSYmKHIudHlwZT0ibnVsbCIpLHIuZW51bT1pfSxfZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGJkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5wYXR0ZXJuO2lmKCFpKXRocm93IG5ldyBFcnJvcigiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbCIpO2UudHlwZT0ic3RyaW5nIixlLnBhdHRlcm49aS5zb3VyY2V9LHlkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXt0eXBlOiJzdHJpbmciLGZvcm1hdDoiYmluYXJ5Iixjb250ZW50RW5jb2Rpbmc6ImJpbmFyeSJ9LHttaW5pbXVtOmEsbWF4aW11bTpzLG1pbWU6Y309dC5fem9kLmJhZzthIT09dm9pZCAwJiYoaS5taW5MZW5ndGg9YSkscyE9PXZvaWQgMCYmKGkubWF4TGVuZ3RoPXMpLGM/Yy5sZW5ndGg9PT0xPyhpLmNvbnRlbnRNZWRpYVR5cGU9Y1swXSxPYmplY3QuYXNzaWduKGUsaSkpOihPYmplY3QuYXNzaWduKGUsaSksZS5hbnlPZj1jLm1hcCh1PT4oe2NvbnRlbnRNZWRpYVR5cGU6dX0pKSk6T2JqZWN0LmFzc2lnbihlLGkpfSxrZD0odCxuLHIsbyk9PntyLnR5cGU9ImJvb2xlYW4ifSxTZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHdkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkZ1bmN0aW9uIHR5cGVzIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxJZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJUcmFuc2Zvcm1zIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSx6ZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJNYXAgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHhkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlNldCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sVGQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZix7bWluaW11bTphLG1heGltdW06c309dC5fem9kLmJhZzt0eXBlb2YgYT09Im51bWJlciImJihlLm1pbkl0ZW1zPWEpLHR5cGVvZiBzPT0ibnVtYmVyIiYmKGUubWF4SXRlbXM9cyksZS50eXBlPSJhcnJheSIsZS5pdGVtcz1FKGkuZWxlbWVudCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiaXRlbXMiXX0pfSxqZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0ib2JqZWN0IixlLnByb3BlcnRpZXM9e307Y29uc3QgYT1pLnNoYXBlO2Zvcihjb25zdCB1IGluIGEpZS5wcm9wZXJ0aWVzW3VdPUUoYVt1XSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicHJvcGVydGllcyIsdV19KTtjb25zdCBzPW5ldyBTZXQoT2JqZWN0LmtleXMoYSkpLGM9bmV3IFNldChbLi4uc10uZmlsdGVyKHU9Pntjb25zdCBsPWkuc2hhcGVbdV0uX3pvZDtyZXR1cm4gbi5pbz09PSJpbnB1dCI/bC5vcHRpbj09PXZvaWQgMDpsLm9wdG91dD09PXZvaWQgMH0pKTtjLnNpemU+MCYmKGUucmVxdWlyZWQ9QXJyYXkuZnJvbShjKSksaS5jYXRjaGFsbD8uX3pvZC5kZWYudHlwZT09PSJuZXZlciI/ZS5hZGRpdGlvbmFsUHJvcGVydGllcz0hMTppLmNhdGNoYWxsP2kuY2F0Y2hhbGwmJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUUoaS5jYXRjaGFsbCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pKTpuLmlvPT09Im91dHB1dCImJihlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExKX0scm89KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9ZS5pbmNsdXNpdmU9PT0hMSxhPWUub3B0aW9ucy5tYXAoKHMsYyk9PkUocyxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxpPyJvbmVPZiI6ImFueU9mIixjXX0pKTtpP3Iub25lT2Y9YTpyLmFueU9mPWF9LFVkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPUUoZS5sZWZ0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhbGxPZiIsMF19KSxhPUUoZS5yaWdodCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWxsT2YiLDFdfSkscz11PT4iYWxsT2YiaW4gdSYmT2JqZWN0LmtleXModSkubGVuZ3RoPT09MSxjPVsuLi5zKGkpP2kuYWxsT2Y6W2ldLC4uLnMoYSk/YS5hbGxPZjpbYV1dO3IuYWxsT2Y9Y30sUGQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9ImFycmF5Ijtjb25zdCBhPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiPyJwcmVmaXhJdGVtcyI6Iml0ZW1zIixzPW4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/Iml0ZW1zIjoiYWRkaXRpb25hbEl0ZW1zIixjPWkuaXRlbXMubWFwKCh2LCQpPT5FKHYsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsYSwkXX0pKSx1PWkucmVzdD9FKGkucmVzdCxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxzLC4uLm4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj9baS5pdGVtcy5sZW5ndGhdOltdXX0pOm51bGw7bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/KGUucHJlZml4SXRlbXM9Yyx1JiYoZS5pdGVtcz11KSk6bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhlLml0ZW1zPXthbnlPZjpjfSx1JiZlLml0ZW1zLmFueU9mLnB1c2godSksZS5taW5JdGVtcz1jLmxlbmd0aCx1fHwoZS5tYXhJdGVtcz1jLmxlbmd0aCkpOihlLml0ZW1zPWMsdSYmKGUuYWRkaXRpb25hbEl0ZW1zPXUpKTtjb25zdHttaW5pbXVtOmwsbWF4aW11bTpnfT10Ll96b2QuYmFnO3R5cGVvZiBsPT0ibnVtYmVyIiYmKGUubWluSXRlbXM9bCksdHlwZW9mIGc9PSJudW1iZXIiJiYoZS5tYXhJdGVtcz1nKX0sT2Q9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLmRlZjtlLnR5cGU9Im9iamVjdCI7Y29uc3QgYT1pLmtleVR5cGUsYz1hLl96b2QuYmFnPy5wYXR0ZXJucztpZihpLm1vZGU9PT0ibG9vc2UiJiZjJiZjLnNpemU+MCl7Y29uc3QgbD1FKGkudmFsdWVUeXBlLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwYXR0ZXJuUHJvcGVydGllcyIsIioiXX0pO2UucGF0dGVyblByb3BlcnRpZXM9e307Zm9yKGNvbnN0IGcgb2YgYyllLnBhdHRlcm5Qcm9wZXJ0aWVzW2cuc291cmNlXT1sfWVsc2Uobi50YXJnZXQ9PT0iZHJhZnQtMDcifHxuLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIikmJihlLnByb3BlcnR5TmFtZXM9RShpLmtleVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInByb3BlcnR5TmFtZXMiXX0pKSxlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPUUoaS52YWx1ZVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIl19KTtjb25zdCB1PWEuX3pvZC52YWx1ZXM7aWYodSl7Y29uc3QgbD1bLi4udV0uZmlsdGVyKGc9PnR5cGVvZiBnPT0ic3RyaW5nInx8dHlwZW9mIGc9PSJudW1iZXIiKTtsLmxlbmd0aD4wJiYoZS5yZXF1aXJlZD1sKX19LERkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPUUoZS5pbm5lclR5cGUsbixvKSxhPW4uc2Vlbi5nZXQodCk7bi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiPyhhLnJlZj1lLmlubmVyVHlwZSxyLm51bGxhYmxlPSEwKTpyLmFueU9mPVtpLHt0eXBlOiJudWxsIn1dfSxOZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0sRWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsci5kZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kZWZhdWx0VmFsdWUpKX0sWmQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsbi5pbz09PSJpbnB1dCImJihyLl9wcmVmYXVsdD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGUuZGVmYXVsdFZhbHVlKSkpfSxSZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZTtsZXQgYTt0cnl7YT1lLmNhdGNoVmFsdWUodm9pZCAwKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkR5bmFtaWMgY2F0Y2ggdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIEpTT04gU2NoZW1hIil9ci5kZWZhdWx0PWF9LENkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPWUuaW4uX3pvZC50cmFpdHMuaGFzKCIkWm9kVHJhbnNmb3JtIiksYT1uLmlvPT09ImlucHV0Ij9pP2Uub3V0OmUuaW46ZS5vdXQ7RShhLG4sbyk7Y29uc3Qgcz1uLnNlZW4uZ2V0KHQpO3MucmVmPWF9LEFkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlLHIucmVhZE9ubHk9ITB9LExkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxpbz0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZX0sTWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuaW5uZXJUeXBlO0UoZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lfSx0aT17c3RyaW5nOm9kLG51bWJlcjphZCxib29sZWFuOnNkLGJpZ2ludDpjZCxzeW1ib2w6dWQsbnVsbDpsZCx1bmRlZmluZWQ6ZGQsdm9pZDptZCxuZXZlcjpwZCxhbnk6ZmQsdW5rbm93bjpnZCxkYXRlOnZkLGVudW06aGQsbGl0ZXJhbDokZCxuYW46X2QsdGVtcGxhdGVfbGl0ZXJhbDpiZCxmaWxlOnlkLHN1Y2Nlc3M6a2QsY3VzdG9tOlNkLGZ1bmN0aW9uOndkLHRyYW5zZm9ybTpJZCxtYXA6emQsc2V0OnhkLGFycmF5OlRkLG9iamVjdDpqZCx1bmlvbjpybyxpbnRlcnNlY3Rpb246VWQsdHVwbGU6UGQscmVjb3JkOk9kLG51bGxhYmxlOkRkLG5vbm9wdGlvbmFsOk5kLGRlZmF1bHQ6RWQscHJlZmF1bHQ6WmQsY2F0Y2g6UmQscGlwZTpDZCxyZWFkb25seTpBZCxwcm9taXNlOkxkLG9wdGlvbmFsOmlvLGxhenk6TWR9O2Z1bmN0aW9uIG9vKHQsbil7aWYoIl9pZG1hcCJpbiB0KXtjb25zdCBvPXQsZT1GZSh7Li4ubixwcm9jZXNzb3JzOnRpfSksaT17fTtmb3IoY29uc3QgYyBvZiBvLl9pZG1hcC5lbnRyaWVzKCkpe2NvbnN0W3UsbF09YztFKGwsZSl9Y29uc3QgYT17fSxzPXtyZWdpc3RyeTpvLHVyaTpuPy51cmksZGVmczppfTtlLmV4dGVybmFsPXM7Zm9yKGNvbnN0IGMgb2Ygby5faWRtYXAuZW50cmllcygpKXtjb25zdFt1LGxdPWM7SmUoZSxsKSxhW3VdPUhlKGUsbCl9aWYoT2JqZWN0LmtleXMoaSkubGVuZ3RoPjApe2NvbnN0IGM9ZS50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/IiRkZWZzIjoiZGVmaW5pdGlvbnMiO2EuX19zaGFyZWQ9e1tjXTppfX1yZXR1cm57c2NoZW1hczphfX1jb25zdCByPUZlKHsuLi5uLHByb2Nlc3NvcnM6dGl9KTtyZXR1cm4gRSh0LHIpLEplKHIsdCksSGUocix0KX1jbGFzcyBNZ3tnZXQgbWV0YWRhdGFSZWdpc3RyeSgpe3JldHVybiB0aGlzLmN0eC5tZXRhZGF0YVJlZ2lzdHJ5fWdldCB0YXJnZXQoKXtyZXR1cm4gdGhpcy5jdHgudGFyZ2V0fWdldCB1bnJlcHJlc2VudGFibGUoKXtyZXR1cm4gdGhpcy5jdHgudW5yZXByZXNlbnRhYmxlfWdldCBvdmVycmlkZSgpe3JldHVybiB0aGlzLmN0eC5vdmVycmlkZX1nZXQgaW8oKXtyZXR1cm4gdGhpcy5jdHguaW99Z2V0IGNvdW50ZXIoKXtyZXR1cm4gdGhpcy5jdHguY291bnRlcn1zZXQgY291bnRlcihuKXt0aGlzLmN0eC5jb3VudGVyPW59Z2V0IHNlZW4oKXtyZXR1cm4gdGhpcy5jdHguc2Vlbn1jb25zdHJ1Y3RvcihuKXtsZXQgcj1uPy50YXJnZXQ/PyJkcmFmdC0yMDIwLTEyIjtyPT09ImRyYWZ0LTQiJiYocj0iZHJhZnQtMDQiKSxyPT09ImRyYWZ0LTciJiYocj0iZHJhZnQtMDciKSx0aGlzLmN0eD1GZSh7cHJvY2Vzc29yczp0aSx0YXJnZXQ6ciwuLi5uPy5tZXRhZGF0YSYme21ldGFkYXRhOm4ubWV0YWRhdGF9LC4uLm4/LnVucmVwcmVzZW50YWJsZSYme3VucmVwcmVzZW50YWJsZTpuLnVucmVwcmVzZW50YWJsZX0sLi4ubj8ub3ZlcnJpZGUmJntvdmVycmlkZTpuLm92ZXJyaWRlfSwuLi5uPy5pbyYme2lvOm4uaW99fSl9cHJvY2VzcyhuLHI9e3BhdGg6W10sc2NoZW1hUGF0aDpbXX0pe3JldHVybiBFKG4sdGhpcy5jdHgscil9ZW1pdChuLHIpe3ImJihyLmN5Y2xlcyYmKHRoaXMuY3R4LmN5Y2xlcz1yLmN5Y2xlcyksci5yZXVzZWQmJih0aGlzLmN0eC5yZXVzZWQ9ci5yZXVzZWQpLHIuZXh0ZXJuYWwmJih0aGlzLmN0eC5leHRlcm5hbD1yLmV4dGVybmFsKSksSmUodGhpcy5jdHgsbik7Y29uc3Qgbz1IZSh0aGlzLmN0eCxuKSx7In5zdGFuZGFyZCI6ZSwuLi5pfT1vO3JldHVybiBpfX1jb25zdCBxZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGx9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSkscWQ9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRab2RBbnk6TnUsJFpvZEFycmF5OkF1LCRab2RBc3luY0Vycm9yOnhlLCRab2RCYXNlNjQ6a3UsJFpvZEJhc2U2NFVSTDp3dSwkWm9kQmlnSW50OlRpLCRab2RCaWdJbnRGb3JtYXQ6VXUsJFpvZEJvb2xlYW46eGksJFpvZENJRFJ2NDpidSwkWm9kQ0lEUnY2Onl1LCRab2RDVUlEOmN1LCRab2RDVUlEMjp1dSwkWm9kQ2F0Y2g6YWwsJFpvZENoZWNrOnEsJFpvZENoZWNrQmlnSW50Rm9ybWF0OkNjLCRab2RDaGVja0VuZHNXaXRoOkdjLCRab2RDaGVja0dyZWF0ZXJUaGFuOndpLCRab2RDaGVja0luY2x1ZGVzOkJjLCRab2RDaGVja0xlbmd0aEVxdWFsczpKYywkWm9kQ2hlY2tMZXNzVGhhbjpTaSwkWm9kQ2hlY2tMb3dlckNhc2U6VmMsJFpvZENoZWNrTWF4TGVuZ3RoOnFjLCRab2RDaGVja01heFNpemU6QWMsJFpvZENoZWNrTWltZVR5cGU6WWMsJFpvZENoZWNrTWluTGVuZ3RoOkZjLCRab2RDaGVja01pblNpemU6TGMsJFpvZENoZWNrTXVsdGlwbGVPZjpaYywkWm9kQ2hlY2tOdW1iZXJGb3JtYXQ6UmMsJFpvZENoZWNrT3ZlcndyaXRlOlFjLCRab2RDaGVja1Byb3BlcnR5OlhjLCRab2RDaGVja1JlZ2V4OkhjLCRab2RDaGVja1NpemVFcXVhbHM6TWMsJFpvZENoZWNrU3RhcnRzV2l0aDpXYywkWm9kQ2hlY2tTdHJpbmdGb3JtYXQ6eHQsJFpvZENoZWNrVXBwZXJDYXNlOktjLCRab2RDb2RlYzpPaSwkWm9kQ3VzdG9tOmZsLCRab2RDdXN0b21TdHJpbmdGb3JtYXQ6VHUsJFpvZERhdGU6Q3UsJFpvZERlZmF1bHQ6bmwsJFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpIdSwkWm9kRTE2NDpJdSwkWm9kRW1haWw6aXUsJFpvZEVtb2ppOmF1LCRab2RFbmNvZGVFcnJvcjpDbiwkWm9kRW51bTpHdSwkWm9kRXJyb3I6Y2ksJFpvZEV4YWN0T3B0aW9uYWw6ZWwsJFpvZEZpbGU6WXUsJFpvZEZ1bmN0aW9uOmRsLCRab2RHVUlEOm51LCRab2RJUHY0Omh1LCRab2RJUHY2OiR1LCRab2RJU09EYXRlOmZ1LCRab2RJU09EYXRlVGltZTpwdSwkWm9kSVNPRHVyYXRpb246dnUsJFpvZElTT1RpbWU6Z3UsJFpvZEludGVyc2VjdGlvbjpWdSwkWm9kSldUOnh1LCRab2RLU1VJRDptdSwkWm9kTGF6eTpwbCwkWm9kTGl0ZXJhbDpYdSwkWm9kTUFDOl91LCRab2RNYXA6QnUsJFpvZE5hTjpzbCwkWm9kTmFub0lEOnN1LCRab2ROZXZlcjpadSwkWm9kTm9uT3B0aW9uYWw6aWwsJFpvZE51bGw6RHUsJFpvZE51bGxhYmxlOnRsLCRab2ROdW1iZXI6emksJFpvZE51bWJlckZvcm1hdDpqdSwkWm9kT2JqZWN0OnF1LCRab2RPYmplY3RKSVQ6RnUsJFpvZE9wdGlvbmFsOlVpLCRab2RQaXBlOlBpLCRab2RQcmVmYXVsdDpybCwkWm9kUHJlcHJvY2VzczpjbCwkWm9kUHJvbWlzZTptbCwkWm9kUmVhZG9ubHk6dWwsJFpvZFJlYWxFcnJvcjpzZSwkWm9kUmVjb3JkOkt1LCRab2RSZWdpc3RyeTokbCwkWm9kU2V0Old1LCRab2RTdHJpbmc6VHQsJFpvZFN0cmluZ0Zvcm1hdDpMLCRab2RTdWNjZXNzOm9sLCRab2RTeW1ib2w6UHUsJFpvZFRlbXBsYXRlTGl0ZXJhbDpsbCwkWm9kVHJhbnNmb3JtOlF1LCRab2RUdXBsZTpqaSwkWm9kVHlwZTpJLCRab2RVTElEOmx1LCRab2RVUkw6b3UsJFpvZFVVSUQ6cnUsJFpvZFVuZGVmaW5lZDpPdSwkWm9kVW5pb246Vm4sJFpvZFVua25vd246RXUsJFpvZFZvaWQ6UnUsJFpvZFhJRDpkdSwkWm9kWG9yOkp1LCRicmFuZDppaSwkY29uc3RydWN0b3I6ZCwkaW5wdXQ6RWksJG91dHB1dDpOaSxEb2M6ZXUsSlNPTlNjaGVtYTpxZyxKU09OU2NoZW1hR2VuZXJhdG9yOk1nLE5FVkVSOnJpLFRpbWVQcmVjaXNpb246bm8sX2FueTpxbCxfYXJyYXk6V2wsX2Jhc2U2NDpZaSxfYmFzZTY0dXJsOlFpLF9iaWdpbnQ6RWwsX2Jvb2xlYW46RGwsX2NhdGNoOk5nLF9jaGVjazplZCxfY2lkcnY0OkdpLF9jaWRydjY6WGksX2NvZXJjZWRCaWdpbnQ6WmwsX2NvZXJjZWRCb29sZWFuOk5sLF9jb2VyY2VkRGF0ZTpLbCxfY29lcmNlZE51bWJlcjp4bCxfY29lcmNlZFN0cmluZzpibCxfY3VpZDpGaSxfY3VpZDI6SmksX2N1c3RvbTpYbCxfZGF0ZTpWbCxfZGVjb2RlOnBpLF9kZWNvZGVBc3luYzpnaSxfZGVmYXVsdDpQZyxfZGlzY3JpbWluYXRlZFVuaW9uOl9nLF9lMTY0OmVvLF9lbWFpbDpaaSxfZW1vamk6TWksX2VuY29kZTptaSxfZW5jb2RlQXN5bmM6ZmksX2VuZHNXaXRoOk50LF9lbnVtOklnLF9maWxlOkdsLF9mbG9hdDMyOmpsLF9mbG9hdDY0OlVsLF9ndDokZSxfZ3RlOnRlLF9ndWlkOkRuLF9pbmNsdWRlczpPdCxfaW50OlRsLF9pbnQzMjpQbCxfaW50NjQ6UmwsX2ludGVyc2VjdGlvbjpiZyxfaXB2NDpCaSxfaXB2NjpXaSxfaXNvRGF0ZTpTbCxfaXNvRGF0ZVRpbWU6a2wsX2lzb0R1cmF0aW9uOklsLF9pc29UaW1lOndsLF9qd3Q6dG8sX2tzdWlkOktpLF9sYXp5OkNnLF9sZW5ndGg6UWUsX2xpdGVyYWw6eGcsX2xvd2VyY2FzZTpVdCxfbHQ6aGUsX2x0ZTppZSxfbWFjOnlsLF9tYXA6U2csX21heDppZSxfbWF4TGVuZ3RoOlllLF9tYXhTaXplOkVlLF9taW1lOkV0LF9taW46dGUsX21pbkxlbmd0aDpiZSxfbWluU2l6ZTpfZSxfbXVsdGlwbGVPZjpqZSxfbmFuOkJsLF9uYW5vaWQ6cWksX25hdGl2ZUVudW06emcsX25lZ2F0aXZlOkduLF9uZXZlcjpKbCxfbm9ubmVnYXRpdmU6WW4sX25vbm9wdGlvbmFsOk9nLF9ub25wb3NpdGl2ZTpYbixfbm9ybWFsaXplOlp0LF9udWxsOk1sLF9udWxsYWJsZTpVZyxfbnVtYmVyOnpsLF9vcHRpb25hbDpqZyxfb3ZlcndyaXRlOmdlLF9wYXJzZTp5dCxfcGFyc2VBc3luYzprdCxfcGlwZTpFZyxfcG9zaXRpdmU6V24sX3Byb21pc2U6QWcsX3Byb3BlcnR5OlFuLF9yZWFkb25seTpaZyxfcmVjb3JkOmtnLF9yZWZpbmU6WWwsX3JlZ2V4Omp0LF9zYWZlRGVjb2RlOmhpLF9zYWZlRGVjb2RlQXN5bmM6X2ksX3NhZmVFbmNvZGU6dmksX3NhZmVFbmNvZGVBc3luYzokaSxfc2FmZVBhcnNlOlN0LF9zYWZlUGFyc2VBc3luYzp3dCxfc2V0OndnLF9zaXplOlhlLF9zbHVnaWZ5Okx0LF9zdGFydHNXaXRoOkR0LF9zdHJpbmc6X2wsX3N0cmluZ0Zvcm1hdDpNdCxfc3RyaW5nYm9vbDpyZCxfc3VjY2VzczpEZyxfc3VwZXJSZWZpbmU6UWwsX3N5bWJvbDpBbCxfdGVtcGxhdGVMaXRlcmFsOlJnLF90b0xvd2VyQ2FzZTpDdCxfdG9VcHBlckNhc2U6QXQsX3RyYW5zZm9ybTpUZyxfdHJpbTpSdCxfdHVwbGU6eWcsX3VpbnQzMjpPbCxfdWludDY0OkNsLF91bGlkOkhpLF91bmRlZmluZWQ6TGwsX3VuaW9uOmhnLF91bmtub3duOkZsLF91cHBlcmNhc2U6UHQsX3VybDpCbixfdXVpZDpSaSxfdXVpZHY0OkNpLF91dWlkdjY6QWksX3V1aWR2NzpMaSxfdm9pZDpIbCxfeGlkOlZpLF94b3I6JGcsY2xvbmU6YWUsY29uZmlnOlYsY3JlYXRlU3RhbmRhcmRKU09OU2NoZW1hTWV0aG9kOnZ0LGNyZWF0ZVRvSlNPTlNjaGVtYU1ldGhvZDppZCxkZWNvZGU6Qm0sZGVjb2RlQXN5bmM6R20sZGVzY3JpYmU6dGQsZW5jb2RlOkttLGVuY29kZUFzeW5jOldtLGV4dHJhY3REZWZzOkplLGZpbmFsaXplOkhlLGZsYXR0ZW5FcnJvcjpGbixmb3JtYXRFcnJvcjpKbixnbG9iYWxDb25maWc6Z3QsZ2xvYmFsUmVnaXN0cnk6cmUsaW5pdGlhbGl6ZUNvbnRleHQ6RmUsaXNWYWxpZEJhc2U2NDpJaSxpc1ZhbGlkQmFzZTY0VVJMOlN1LGlzVmFsaWRKV1Q6enUsbG9jYWxlczpEaSxtZXRhOm5kLHBhcnNlOllyLHBhcnNlQXN5bmM6UXIscHJldHRpZnlFcnJvcjpsaSxwcm9jZXNzOkUscmVnZXhlczpIbixyZWdpc3RyeTpLbixzYWZlRGVjb2RlOlltLHNhZmVEZWNvZGVBc3luYzplcCxzYWZlRW5jb2RlOlhtLHNhZmVFbmNvZGVBc3luYzpRbSxzYWZlUGFyc2U6ZGksc2FmZVBhcnNlQXN5bmM6ZWMsdG9Eb3RQYXRoOlFzLHRvSlNPTlNjaGVtYTpvbyx0cmVlaWZ5RXJyb3I6dWksdXRpbDpzaSx2ZXJzaW9uOnR1fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO2Z1bmN0aW9uIGFvKHQpe3JldHVybiEhdC5fem9kfWZ1bmN0aW9uIEZkKHQsbil7cmV0dXJuIGFvKHQpP2RpKHQsbik6dC5zYWZlUGFyc2Uobil9ZnVuY3Rpb24gRmcodCl7aWYoIXQpcmV0dXJuO2xldCBuO2lmKGFvKHQpP249dC5fem9kPy5kZWY/LnNoYXBlOm49dC5zaGFwZSwhIW4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXRyeXtyZXR1cm4gbigpfWNhdGNoe3JldHVybn1yZXR1cm4gbn19ZnVuY3Rpb24gSmcodCl7aWYoYW8odCkpe2NvbnN0IGk9dC5fem9kPy5kZWY7aWYoaSl7aWYoaS52YWx1ZSE9PXZvaWQgMClyZXR1cm4gaS52YWx1ZTtpZihBcnJheS5pc0FycmF5KGkudmFsdWVzKSYmaS52YWx1ZXMubGVuZ3RoPjApcmV0dXJuIGkudmFsdWVzWzBdfX1jb25zdCByPXQuX2RlZjtpZihyKXtpZihyLnZhbHVlIT09dm9pZCAwKXJldHVybiByLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoci52YWx1ZXMpJiZyLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gci52YWx1ZXNbMF19Y29uc3Qgbz10LnZhbHVlO2lmKG8hPT12b2lkIDApcmV0dXJuIG99Y29uc3QgSGc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGVuZHNXaXRoOk50LGd0OiRlLGd0ZTp0ZSxpbmNsdWRlczpPdCxsZW5ndGg6UWUsbG93ZXJjYXNlOlV0LGx0OmhlLGx0ZTppZSxtYXhMZW5ndGg6WWUsbWF4U2l6ZTpFZSxtaW1lOkV0LG1pbkxlbmd0aDpiZSxtaW5TaXplOl9lLG11bHRpcGxlT2Y6amUsbmVnYXRpdmU6R24sbm9ubmVnYXRpdmU6WW4sbm9ucG9zaXRpdmU6WG4sbm9ybWFsaXplOlp0LG92ZXJ3cml0ZTpnZSxwb3NpdGl2ZTpXbixwcm9wZXJ0eTpRbixyZWdleDpqdCxzaXplOlhlLHNsdWdpZnk6THQsc3RhcnRzV2l0aDpEdCx0b0xvd2VyQ2FzZTpDdCx0b1VwcGVyQ2FzZTpBdCx0cmltOlJ0LHVwcGVyY2FzZTpQdH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxlcj1kKCJab2RJU09EYXRlVGltZSIsKHQsbik9PntwdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBzbyh0KXtyZXR1cm4ga2woZXIsdCl9Y29uc3QgdHI9ZCgiWm9kSVNPRGF0ZSIsKHQsbik9PntmdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBKZCh0KXtyZXR1cm4gU2wodHIsdCl9Y29uc3QgbnI9ZCgiWm9kSVNPVGltZSIsKHQsbik9PntndS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBIZCh0KXtyZXR1cm4gd2wobnIsdCl9Y29uc3QgcnI9ZCgiWm9kSVNPRHVyYXRpb24iLCh0LG4pPT57dnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gVmQodCl7cmV0dXJuIElsKHJyLHQpfWNvbnN0IGNvPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxab2RJU09EYXRlOnRyLFpvZElTT0RhdGVUaW1lOmVyLFpvZElTT0R1cmF0aW9uOnJyLFpvZElTT1RpbWU6bnIsZGF0ZTpKZCxkYXRldGltZTpzbyxkdXJhdGlvbjpWZCx0aW1lOkhkfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLEtkPSh0LG4pPT57Y2kuaW5pdCh0LG4pLHQubmFtZT0iWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQse2Zvcm1hdDp7dmFsdWU6cj0+Sm4odCxyKX0sZmxhdHRlbjp7dmFsdWU6cj0+Rm4odCxyKX0sYWRkSXNzdWU6e3ZhbHVlOnI9Pnt0Lmlzc3Vlcy5wdXNoKHIpLHQubWVzc2FnZT1KU09OLnN0cmluZ2lmeSh0Lmlzc3VlcyxVbiwyKX19LGFkZElzc3Vlczp7dmFsdWU6cj0+e3QuaXNzdWVzLnB1c2goLi4uciksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KHQuaXNzdWVzLFVuLDIpfX0saXNFbXB0eTp7Z2V0KCl7cmV0dXJuIHQuaXNzdWVzLmxlbmd0aD09PTB9fX0pfSxCZD1kKCJab2RFcnJvciIsS2QpLG5lPWQoIlpvZEVycm9yIixLZCx7UGFyZW50OkVycm9yfSksdW89eXQobmUpLGxvPWt0KG5lKSxtbz1TdChuZSkscG89d3QobmUpLGZvPW1pKG5lKSxnbz1waShuZSksdm89ZmkobmUpLGhvPWdpKG5lKSwkbz12aShuZSksX289aGkobmUpLGJvPSRpKG5lKSx5bz1faShuZSksU3M9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gcXQodCxuLHIpe2NvbnN0IG89T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO2xldCBlPVNzLmdldChvKTtpZihlfHwoZT1uZXcgU2V0LFNzLnNldChvLGUpKSwhZS5oYXMobikpe2UuYWRkKG4pO2Zvcihjb25zdCBpIGluIHIpe2NvbnN0IGE9cltpXTtPYmplY3QuZGVmaW5lUHJvcGVydHkobyxpLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSxnZXQoKXtjb25zdCBzPWEuYmluZCh0aGlzKTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6c30pLHN9LHNldChzKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxpLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpzfSl9fSl9fX1jb25zdCB4PWQoIlpvZFR5cGUiLCh0LG4pPT4oSS5pbml0KHQsbiksT2JqZWN0LmFzc2lnbih0WyJ+c3RhbmRhcmQiXSx7anNvblNjaGVtYTp7aW5wdXQ6dnQodCwiaW5wdXQiKSxvdXRwdXQ6dnQodCwib3V0cHV0Iil9fSksdC50b0pTT05TY2hlbWE9aWQodCx7fSksdC5kZWY9bix0LnR5cGU9bi50eXBlLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfZGVmIix7dmFsdWU6bn0pLHQucGFyc2U9KHIsbyk9PnVvKHQscixvLHtjYWxsZWU6dC5wYXJzZX0pLHQuc2FmZVBhcnNlPShyLG8pPT5tbyh0LHIsbyksdC5wYXJzZUFzeW5jPWFzeW5jKHIsbyk9PmxvKHQscixvLHtjYWxsZWU6dC5wYXJzZUFzeW5jfSksdC5zYWZlUGFyc2VBc3luYz1hc3luYyhyLG8pPT5wbyh0LHIsbyksdC5zcGE9dC5zYWZlUGFyc2VBc3luYyx0LmVuY29kZT0ocixvKT0+Zm8odCxyLG8pLHQuZGVjb2RlPShyLG8pPT5nbyh0LHIsbyksdC5lbmNvZGVBc3luYz1hc3luYyhyLG8pPT52byh0LHIsbyksdC5kZWNvZGVBc3luYz1hc3luYyhyLG8pPT5obyh0LHIsbyksdC5zYWZlRW5jb2RlPShyLG8pPT4kbyh0LHIsbyksdC5zYWZlRGVjb2RlPShyLG8pPT5fbyh0LHIsbyksdC5zYWZlRW5jb2RlQXN5bmM9YXN5bmMocixvKT0+Ym8odCxyLG8pLHQuc2FmZURlY29kZUFzeW5jPWFzeW5jKHIsbyk9PnlvKHQscixvKSxxdCh0LCJab2RUeXBlIix7Y2hlY2soLi4ucil7Y29uc3Qgbz10aGlzLmRlZjtyZXR1cm4gdGhpcy5jbG9uZShmZShvLHtjaGVja3M6Wy4uLm8uY2hlY2tzPz9bXSwuLi5yLm1hcChlPT50eXBlb2YgZT09ImZ1bmN0aW9uIj97X3pvZDp7Y2hlY2s6ZSxkZWY6e2NoZWNrOiJjdXN0b20ifSxvbmF0dGFjaDpbXX19OmUpXX0pLHtwYXJlbnQ6ITB9KX0sd2l0aCguLi5yKXtyZXR1cm4gdGhpcy5jaGVjayguLi5yKX0sY2xvbmUocixvKXtyZXR1cm4gYWUodGhpcyxyLG8pfSxicmFuZCgpe3JldHVybiB0aGlzfSxyZWdpc3RlcihyLG8pe3JldHVybiByLmFkZCh0aGlzLG8pLHRoaXN9LHJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKEpyKHIsbykpfSxzdXBlclJlZmluZShyLG8pe3JldHVybiB0aGlzLmNoZWNrKEhyKHIsbykpfSxvdmVyd3JpdGUocil7cmV0dXJuIHRoaXMuY2hlY2soZ2UocikpfSxvcHRpb25hbCgpe3JldHVybiBBKHRoaXMpfSxleGFjdE9wdGlvbmFsKCl7cmV0dXJuIHdyKHRoaXMpfSxudWxsYWJsZSgpe3JldHVybiBCZSh0aGlzKX0sbnVsbGlzaCgpe3JldHVybiBBKEJlKHRoaXMpKX0sbm9ub3B0aW9uYWwocil7cmV0dXJuIFVyKHRoaXMscil9LGFycmF5KCl7cmV0dXJuIHcodGhpcyl9LG9yKHIpe3JldHVybiBqKFt0aGlzLHJdKX0sYW5kKHIpe3JldHVybiBzdCh0aGlzLHIpfSx0cmFuc2Zvcm0ocil7cmV0dXJuICR0KHRoaXMsZG4ocikpfSxkZWZhdWx0KHIpe3JldHVybiB4cih0aGlzLHIpfSxwcmVmYXVsdChyKXtyZXR1cm4ganIodGhpcyxyKX0sY2F0Y2gocil7cmV0dXJuIERyKHRoaXMscil9LHBpcGUocil7cmV0dXJuICR0KHRoaXMscil9LHJlYWRvbmx5KCl7cmV0dXJuIFJyKHRoaXMpfSxkZXNjcmliZShyKXtjb25zdCBvPXRoaXMuY2xvbmUoKTtyZXR1cm4gcmUuYWRkKG8se2Rlc2NyaXB0aW9uOnJ9KSxvfSxtZXRhKC4uLnIpe2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcmUuZ2V0KHRoaXMpO2NvbnN0IG89dGhpcy5jbG9uZSgpO3JldHVybiByZS5hZGQobyxyWzBdKSxvfSxpc09wdGlvbmFsKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKHZvaWQgMCkuc3VjY2Vzc30saXNOdWxsYWJsZSgpe3JldHVybiB0aGlzLnNhZmVQYXJzZShudWxsKS5zdWNjZXNzfSxhcHBseShyKXtyZXR1cm4gcih0aGlzKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVzY3JpcHRpb24iLHtnZXQoKXtyZXR1cm4gcmUuZ2V0KHQpPy5kZXNjcmlwdGlvbn0sY29uZmlndXJhYmxlOiEwfSksdCkpLEZ0PWQoIl9ab2RTdHJpbmciLCh0LG4pPT57VHQuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5vZCh0LG8sZSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QuZm9ybWF0PXIuZm9ybWF0Pz9udWxsLHQubWluTGVuZ3RoPXIubWluaW11bT8/bnVsbCx0Lm1heExlbmd0aD1yLm1heGltdW0/P251bGwscXQodCwiX1pvZFN0cmluZyIse3JlZ2V4KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKGp0KC4uLm8pKX0saW5jbHVkZXMoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soT3QoLi4ubykpfSxzdGFydHNXaXRoKC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKER0KC4uLm8pKX0sZW5kc1dpdGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soTnQoLi4ubykpfSxtaW4oLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soYmUoLi4ubykpfSxtYXgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soWWUoLi4ubykpfSxsZW5ndGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soUWUoLi4ubykpfSxub25lbXB0eSguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhiZSgxLC4uLm8pKX0sbG93ZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKFV0KG8pKX0sdXBwZXJjYXNlKG8pe3JldHVybiB0aGlzLmNoZWNrKFB0KG8pKX0sdHJpbSgpe3JldHVybiB0aGlzLmNoZWNrKFJ0KCkpfSxub3JtYWxpemUoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soWnQoLi4ubykpfSx0b0xvd2VyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKEN0KCkpfSx0b1VwcGVyQ2FzZSgpe3JldHVybiB0aGlzLmNoZWNrKEF0KCkpfSxzbHVnaWZ5KCl7cmV0dXJuIHRoaXMuY2hlY2soTHQoKSl9fSl9KSxldD1kKCJab2RTdHJpbmciLCh0LG4pPT57VHQuaW5pdCh0LG4pLEZ0LmluaXQodCxuKSx0LmVtYWlsPXI9PnQuY2hlY2soWmkoSnQscikpLHQudXJsPXI9PnQuY2hlY2soQm4odHQscikpLHQuand0PXI9PnQuY2hlY2sodG8oYW4scikpLHQuZW1vamk9cj0+dC5jaGVjayhNaShIdCxyKSksdC5ndWlkPXI9PnQuY2hlY2soRG4oVmUscikpLHQudXVpZD1yPT50LmNoZWNrKFJpKG1lLHIpKSx0LnV1aWR2ND1yPT50LmNoZWNrKENpKG1lLHIpKSx0LnV1aWR2Nj1yPT50LmNoZWNrKEFpKG1lLHIpKSx0LnV1aWR2Nz1yPT50LmNoZWNrKExpKG1lLHIpKSx0Lm5hbm9pZD1yPT50LmNoZWNrKHFpKFZ0LHIpKSx0Lmd1aWQ9cj0+dC5jaGVjayhEbihWZSxyKSksdC5jdWlkPXI9PnQuY2hlY2soRmkoS3QscikpLHQuY3VpZDI9cj0+dC5jaGVjayhKaShCdCxyKSksdC51bGlkPXI9PnQuY2hlY2soSGkoV3QscikpLHQuYmFzZTY0PXI9PnQuY2hlY2soWWkobm4scikpLHQuYmFzZTY0dXJsPXI9PnQuY2hlY2soUWkocm4scikpLHQueGlkPXI9PnQuY2hlY2soVmkoR3QscikpLHQua3N1aWQ9cj0+dC5jaGVjayhLaShYdCxyKSksdC5pcHY0PXI9PnQuY2hlY2soQmkoWXQscikpLHQuaXB2Nj1yPT50LmNoZWNrKFdpKFF0LHIpKSx0LmNpZHJ2ND1yPT50LmNoZWNrKEdpKGVuLHIpKSx0LmNpZHJ2Nj1yPT50LmNoZWNrKFhpKHRuLHIpKSx0LmUxNjQ9cj0+dC5jaGVjayhlbyhvbixyKSksdC5kYXRldGltZT1yPT50LmNoZWNrKHNvKHIpKSx0LmRhdGU9cj0+dC5jaGVjayhKZChyKSksdC50aW1lPXI9PnQuY2hlY2soSGQocikpLHQuZHVyYXRpb249cj0+dC5jaGVjayhWZChyKSl9KTtmdW5jdGlvbiBwKHQpe3JldHVybiBfbChldCx0KX1jb25zdCBaPWQoIlpvZFN0cmluZ0Zvcm1hdCIsKHQsbik9PntMLmluaXQodCxuKSxGdC5pbml0KHQsbil9KSxKdD1kKCJab2RFbWFpbCIsKHQsbik9PntpdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBrbyh0KXtyZXR1cm4gWmkoSnQsdCl9Y29uc3QgVmU9ZCgiWm9kR1VJRCIsKHQsbik9PntudS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBTbyh0KXtyZXR1cm4gRG4oVmUsdCl9Y29uc3QgbWU9ZCgiWm9kVVVJRCIsKHQsbik9PntydS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiB3byh0KXtyZXR1cm4gUmkobWUsdCl9ZnVuY3Rpb24gSW8odCl7cmV0dXJuIENpKG1lLHQpfWZ1bmN0aW9uIHpvKHQpe3JldHVybiBBaShtZSx0KX1mdW5jdGlvbiB4byh0KXtyZXR1cm4gTGkobWUsdCl9Y29uc3QgdHQ9ZCgiWm9kVVJMIiwodCxuKT0+e291LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFRvKHQpe3JldHVybiBCbih0dCx0KX1mdW5jdGlvbiBqbyh0KXtyZXR1cm4gQm4odHQse3Byb3RvY29sOnlpLGhvc3RuYW1lOl9jLC4uLmgodCl9KX1jb25zdCBIdD1kKCJab2RFbW9qaSIsKHQsbik9PnthdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBVbyh0KXtyZXR1cm4gTWkoSHQsdCl9Y29uc3QgVnQ9ZCgiWm9kTmFub0lEIiwodCxuKT0+e3N1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFBvKHQpe3JldHVybiBxaShWdCx0KX1jb25zdCBLdD1kKCJab2RDVUlEIiwodCxuKT0+e2N1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE9vKHQpe3JldHVybiBGaShLdCx0KX1jb25zdCBCdD1kKCJab2RDVUlEMiIsKHQsbik9Pnt1dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBEbyh0KXtyZXR1cm4gSmkoQnQsdCl9Y29uc3QgV3Q9ZCgiWm9kVUxJRCIsKHQsbik9PntsdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBObyh0KXtyZXR1cm4gSGkoV3QsdCl9Y29uc3QgR3Q9ZCgiWm9kWElEIiwodCxuKT0+e2R1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEVvKHQpe3JldHVybiBWaShHdCx0KX1jb25zdCBYdD1kKCJab2RLU1VJRCIsKHQsbik9PnttdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBabyh0KXtyZXR1cm4gS2koWHQsdCl9Y29uc3QgWXQ9ZCgiWm9kSVB2NCIsKHQsbik9PntodS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBSbyh0KXtyZXR1cm4gQmkoWXQsdCl9Y29uc3QgaXI9ZCgiWm9kTUFDIiwodCxuKT0+e191LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIENvKHQpe3JldHVybiB5bChpcix0KX1jb25zdCBRdD1kKCJab2RJUHY2IiwodCxuKT0+eyR1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEFvKHQpe3JldHVybiBXaShRdCx0KX1jb25zdCBlbj1kKCJab2RDSURSdjQiLCh0LG4pPT57YnUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gTG8odCl7cmV0dXJuIEdpKGVuLHQpfWNvbnN0IHRuPWQoIlpvZENJRFJ2NiIsKHQsbik9Pnt5dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBNbyh0KXtyZXR1cm4gWGkodG4sdCl9Y29uc3Qgbm49ZCgiWm9kQmFzZTY0IiwodCxuKT0+e2t1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIHFvKHQpe3JldHVybiBZaShubix0KX1jb25zdCBybj1kKCJab2RCYXNlNjRVUkwiLCh0LG4pPT57d3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gRm8odCl7cmV0dXJuIFFpKHJuLHQpfWNvbnN0IG9uPWQoIlpvZEUxNjQiLCh0LG4pPT57SXUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gSm8odCl7cmV0dXJuIGVvKG9uLHQpfWNvbnN0IGFuPWQoIlpvZEpXVCIsKHQsbik9Pnt4dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBIbyh0KXtyZXR1cm4gdG8oYW4sdCl9Y29uc3QgWmU9ZCgiWm9kQ3VzdG9tU3RyaW5nRm9ybWF0IiwodCxuKT0+e1R1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFZvKHQsbixyPXt9KXtyZXR1cm4gTXQoWmUsdCxuLHIpfWZ1bmN0aW9uIEtvKHQpe3JldHVybiBNdChaZSwiaG9zdG5hbWUiLCRjLHQpfWZ1bmN0aW9uIEJvKHQpe3JldHVybiBNdChaZSwiaGV4IixOYyx0KX1mdW5jdGlvbiBXbyh0LG4pe2NvbnN0IHI9bj8uZW5jPz8iaGV4IixvPWAke3R9XyR7cn1gLGU9SG5bb107aWYoIWUpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQgaGFzaCBmb3JtYXQ6ICR7b31gKTtyZXR1cm4gTXQoWmUsbyxlLG4pfWNvbnN0IG50PWQoIlpvZE51bWJlciIsKHQsbik9Pnt6aS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PmFkKHQsbyxlKSxxdCh0LCJab2ROdW1iZXIiLHtndChvLGUpe3JldHVybiB0aGlzLmNoZWNrKCRlKG8sZSkpfSxndGUobyxlKXtyZXR1cm4gdGhpcy5jaGVjayh0ZShvLGUpKX0sbWluKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2sodGUobyxlKSl9LGx0KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soaGUobyxlKSl9LGx0ZShvLGUpe3JldHVybiB0aGlzLmNoZWNrKGllKG8sZSkpfSxtYXgobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhpZShvLGUpKX0saW50KG8pe3JldHVybiB0aGlzLmNoZWNrKGh0KG8pKX0sc2FmZShvKXtyZXR1cm4gdGhpcy5jaGVjayhodChvKSl9LHBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKCRlKDAsbykpfSxub25uZWdhdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayh0ZSgwLG8pKX0sbmVnYXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soaGUoMCxvKSl9LG5vbnBvc2l0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKGllKDAsbykpfSxtdWx0aXBsZU9mKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soamUobyxlKSl9LHN0ZXAobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhqZShvLGUpKX0sZmluaXRlKCl7cmV0dXJuIHRoaXN9fSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9TWF0aC5tYXgoci5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNaW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpPz9udWxsLHQubWF4VmFsdWU9TWF0aC5taW4oci5tYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksci5leGNsdXNpdmVNYXhpbXVtPz9OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpPz9udWxsLHQuaXNJbnQ9KHIuZm9ybWF0Pz8iIikuaW5jbHVkZXMoImludCIpfHxOdW1iZXIuaXNTYWZlSW50ZWdlcihyLm11bHRpcGxlT2Y/Py41KSx0LmlzRmluaXRlPSEwLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24geih0KXtyZXR1cm4gemwobnQsdCl9Y29uc3Qga2U9ZCgiWm9kTnVtYmVyRm9ybWF0IiwodCxuKT0+e2p1LmluaXQodCxuKSxudC5pbml0KHQsbil9KTtmdW5jdGlvbiBodCh0KXtyZXR1cm4gVGwoa2UsdCl9ZnVuY3Rpb24gR28odCl7cmV0dXJuIGpsKGtlLHQpfWZ1bmN0aW9uIFhvKHQpe3JldHVybiBVbChrZSx0KX1mdW5jdGlvbiBZbyh0KXtyZXR1cm4gUGwoa2UsdCl9ZnVuY3Rpb24gUW8odCl7cmV0dXJuIE9sKGtlLHQpfWNvbnN0IHJ0PWQoIlpvZEJvb2xlYW4iLCh0LG4pPT57eGkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5zZCh0LHIsbyl9KTtmdW5jdGlvbiBEKHQpe3JldHVybiBEbChydCx0KX1jb25zdCBpdD1kKCJab2RCaWdJbnQiLCh0LG4pPT57VGkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5jZCh0LG8pLHQuZ3RlPShvLGUpPT50LmNoZWNrKHRlKG8sZSkpLHQubWluPShvLGUpPT50LmNoZWNrKHRlKG8sZSkpLHQuZ3Q9KG8sZSk9PnQuY2hlY2soJGUobyxlKSksdC5ndGU9KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5taW49KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5sdD0obyxlKT0+dC5jaGVjayhoZShvLGUpKSx0Lmx0ZT0obyxlKT0+dC5jaGVjayhpZShvLGUpKSx0Lm1heD0obyxlKT0+dC5jaGVjayhpZShvLGUpKSx0LnBvc2l0aXZlPW89PnQuY2hlY2soJGUoQmlnSW50KDApLG8pKSx0Lm5lZ2F0aXZlPW89PnQuY2hlY2soaGUoQmlnSW50KDApLG8pKSx0Lm5vbnBvc2l0aXZlPW89PnQuY2hlY2soaWUoQmlnSW50KDApLG8pKSx0Lm5vbm5lZ2F0aXZlPW89PnQuY2hlY2sodGUoQmlnSW50KDApLG8pKSx0Lm11bHRpcGxlT2Y9KG8sZSk9PnQuY2hlY2soamUobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluVmFsdWU9ci5taW5pbXVtPz9udWxsLHQubWF4VmFsdWU9ci5tYXhpbXVtPz9udWxsLHQuZm9ybWF0PXIuZm9ybWF0Pz9udWxsfSk7ZnVuY3Rpb24gZWEodCl7cmV0dXJuIEVsKGl0LHQpfWNvbnN0IHNuPWQoIlpvZEJpZ0ludEZvcm1hdCIsKHQsbik9PntVdS5pbml0KHQsbiksaXQuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gdGEodCl7cmV0dXJuIFJsKHNuLHQpfWZ1bmN0aW9uIG5hKHQpe3JldHVybiBDbChzbix0KX1jb25zdCBvcj1kKCJab2RTeW1ib2wiLCh0LG4pPT57UHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT51ZCh0LHIpfSk7ZnVuY3Rpb24gcmEodCl7cmV0dXJuIEFsKG9yLHQpfWNvbnN0IGFyPWQoIlpvZFVuZGVmaW5lZCIsKHQsbik9PntPdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmRkKHQscil9KTtmdW5jdGlvbiBLZSh0KXtyZXR1cm4gTGwoYXIsdCl9Y29uc3Qgc3I9ZCgiWm9kTnVsbCIsKHQsbik9PntEdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmxkKHQscixvKX0pO2Z1bmN0aW9uIGNuKHQpe3JldHVybiBNbChzcix0KX1jb25zdCBjcj1kKCJab2RBbnkiLCh0LG4pPT57TnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5mZCgpfSk7ZnVuY3Rpb24gaWEoKXtyZXR1cm4gcWwoY3IpfWNvbnN0IHVyPWQoIlpvZFVua25vd24iLCh0LG4pPT57RXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5nZCgpfSk7ZnVuY3Rpb24gTygpe3JldHVybiBGbCh1cil9Y29uc3QgbHI9ZCgiWm9kTmV2ZXIiLCh0LG4pPT57WnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5wZCh0LHIsbyl9KTtmdW5jdGlvbiBVZSh0KXtyZXR1cm4gSmwobHIsdCl9Y29uc3QgZHI9ZCgiWm9kVm9pZCIsKHQsbik9PntSdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pm1kKHQscil9KTtmdW5jdGlvbiBvYSh0KXtyZXR1cm4gSGwoZHIsdCl9Y29uc3QgdW49ZCgiWm9kRGF0ZSIsKHQsbik9PntDdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PnZkKHQsbyksdC5taW49KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5tYXg9KG8sZSk9PnQuY2hlY2soaWUobyxlKSk7Y29uc3Qgcj10Ll96b2QuYmFnO3QubWluRGF0ZT1yLm1pbmltdW0/bmV3IERhdGUoci5taW5pbXVtKTpudWxsLHQubWF4RGF0ZT1yLm1heGltdW0/bmV3IERhdGUoci5tYXhpbXVtKTpudWxsfSk7ZnVuY3Rpb24gYWEodCl7cmV0dXJuIFZsKHVuLHQpfWNvbnN0IG1yPWQoIlpvZEFycmF5IiwodCxuKT0+e0F1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+VGQodCxyLG8sZSksdC5lbGVtZW50PW4uZWxlbWVudCxxdCh0LCJab2RBcnJheSIse21pbihyLG8pe3JldHVybiB0aGlzLmNoZWNrKGJlKHIsbykpfSxub25lbXB0eShyKXtyZXR1cm4gdGhpcy5jaGVjayhiZSgxLHIpKX0sbWF4KHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soWWUocixvKSl9LGxlbmd0aChyLG8pe3JldHVybiB0aGlzLmNoZWNrKFFlKHIsbykpfSx1bndyYXAoKXtyZXR1cm4gdGhpcy5lbGVtZW50fX0pfSk7ZnVuY3Rpb24gdyh0LG4pe3JldHVybiBXbChtcix0LG4pfWZ1bmN0aW9uIHNhKHQpe2NvbnN0IG49dC5fem9kLmRlZi5zaGFwZTtyZXR1cm4gRyhPYmplY3Qua2V5cyhuKSl9Y29uc3Qgb3Q9ZCgiWm9kT2JqZWN0IiwodCxuKT0+e0Z1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+amQodCxyLG8sZSksVCh0LCJzaGFwZSIsKCk9Pm4uc2hhcGUpLHF0KHQsIlpvZE9iamVjdCIse2tleW9mKCl7cmV0dXJuIEcoT2JqZWN0LmtleXModGhpcy5fem9kLmRlZi5zaGFwZSkpfSxjYXRjaGFsbChyKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpyfSl9LHBhc3N0aHJvdWdoKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TygpfSl9LGxvb3NlKCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6TygpfSl9LHN0cmljdCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOlVlKCl9KX0sc3RyaXAoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDp2b2lkIDB9KX0sZXh0ZW5kKHIpe3JldHVybiBKcyh0aGlzLHIpfSxzYWZlRXh0ZW5kKHIpe3JldHVybiBIcyh0aGlzLHIpfSxtZXJnZShyKXtyZXR1cm4gVnModGhpcyxyKX0scGljayhyKXtyZXR1cm4gcXModGhpcyxyKX0sb21pdChyKXtyZXR1cm4gRnModGhpcyxyKX0scGFydGlhbCguLi5yKXtyZXR1cm4gS3MobW4sdGhpcyxyWzBdKX0scmVxdWlyZWQoLi4ucil7cmV0dXJuIEJzKHBuLHRoaXMsclswXSl9fSl9KTtmdW5jdGlvbiBmKHQsbil7Y29uc3Qgcj17dHlwZToib2JqZWN0IixzaGFwZTp0Pz97fSwuLi5oKG4pfTtyZXR1cm4gbmV3IG90KHIpfWZ1bmN0aW9uIGNhKHQsbil7cmV0dXJuIG5ldyBvdCh7dHlwZToib2JqZWN0IixzaGFwZTp0LGNhdGNoYWxsOlVlKCksLi4uaChuKX0pfWZ1bmN0aW9uIFcodCxuKXtyZXR1cm4gbmV3IG90KHt0eXBlOiJvYmplY3QiLHNoYXBlOnQsY2F0Y2hhbGw6TygpLC4uLmgobil9KX1jb25zdCBhdD1kKCJab2RVbmlvbiIsKHQsbik9PntWbi5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnJvKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiBqKHQsbil7cmV0dXJuIG5ldyBhdCh7dHlwZToidW5pb24iLG9wdGlvbnM6dCwuLi5oKG4pfSl9Y29uc3QgcHI9ZCgiWm9kWG9yIiwodCxuKT0+e2F0LmluaXQodCxuKSxKdS5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnJvKHQscixvLGUpLHQub3B0aW9ucz1uLm9wdGlvbnN9KTtmdW5jdGlvbiB1YSh0LG4pe3JldHVybiBuZXcgcHIoe3R5cGU6InVuaW9uIixvcHRpb25zOnQsaW5jbHVzaXZlOiExLC4uLmgobil9KX1jb25zdCBmcj1kKCJab2REaXNjcmltaW5hdGVkVW5pb24iLCh0LG4pPT57YXQuaW5pdCh0LG4pLEh1LmluaXQodCxuKX0pO2Z1bmN0aW9uIGxuKHQsbixyKXtyZXR1cm4gbmV3IGZyKHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLGRpc2NyaW1pbmF0b3I6dCwuLi5oKHIpfSl9Y29uc3QgZ3I9ZCgiWm9kSW50ZXJzZWN0aW9uIiwodCxuKT0+e1Z1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+VWQodCxyLG8sZSl9KTtmdW5jdGlvbiBzdCh0LG4pe3JldHVybiBuZXcgZ3Ioe3R5cGU6ImludGVyc2VjdGlvbiIsbGVmdDp0LHJpZ2h0Om59KX1jb25zdCB2cj1kKCJab2RUdXBsZSIsKHQsbik9PntqaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlBkKHQscixvLGUpLHQucmVzdD1yPT50LmNsb25lKHsuLi50Ll96b2QuZGVmLHJlc3Q6cn0pfSk7ZnVuY3Rpb24gaHIodCxuLHIpe2NvbnN0IG89biBpbnN0YW5jZW9mIEksZT1vP3I6bixpPW8/bjpudWxsO3JldHVybiBuZXcgdnIoe3R5cGU6InR1cGxlIixpdGVtczp0LHJlc3Q6aSwuLi5oKGUpfSl9Y29uc3QgUGU9ZCgiWm9kUmVjb3JkIiwodCxuKT0+e0t1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+T2QodCxyLG8sZSksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZX0pO2Z1bmN0aW9uIFUodCxuLHIpe3JldHVybiFufHwhbi5fem9kP25ldyBQZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOnAoKSx2YWx1ZVR5cGU6dCwuLi5oKG4pfSk6bmV3IFBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gbGEodCxuLHIpe2NvbnN0IG89YWUodCk7cmV0dXJuIG8uX3pvZC52YWx1ZXM9dm9pZCAwLG5ldyBQZSh7dHlwZToicmVjb3JkIixrZXlUeXBlOm8sdmFsdWVUeXBlOm4sLi4uaChyKX0pfWZ1bmN0aW9uIGRhKHQsbixyKXtyZXR1cm4gbmV3IFBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6dCx2YWx1ZVR5cGU6bixtb2RlOiJsb29zZSIsLi4uaChyKX0pfWNvbnN0ICRyPWQoIlpvZE1hcCIsKHQsbik9PntCdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnpkKHQsciksdC5rZXlUeXBlPW4ua2V5VHlwZSx0LnZhbHVlVHlwZT1uLnZhbHVlVHlwZSx0Lm1pbj0oLi4ucik9PnQuY2hlY2soX2UoLi4ucikpLHQubm9uZW1wdHk9cj0+dC5jaGVjayhfZSgxLHIpKSx0Lm1heD0oLi4ucik9PnQuY2hlY2soRWUoLi4ucikpLHQuc2l6ZT0oLi4ucik9PnQuY2hlY2soWGUoLi4ucikpfSk7ZnVuY3Rpb24gbWEodCxuLHIpe3JldHVybiBuZXcgJHIoe3R5cGU6Im1hcCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLC4uLmgocil9KX1jb25zdCBfcj1kKCJab2RTZXQiLCh0LG4pPT57V3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT54ZCh0LHIpLHQubWluPSguLi5yKT0+dC5jaGVjayhfZSguLi5yKSksdC5ub25lbXB0eT1yPT50LmNoZWNrKF9lKDEscikpLHQubWF4PSguLi5yKT0+dC5jaGVjayhFZSguLi5yKSksdC5zaXplPSguLi5yKT0+dC5jaGVjayhYZSguLi5yKSl9KTtmdW5jdGlvbiBwYSh0LG4pe3JldHVybiBuZXcgX3Ioe3R5cGU6InNldCIsdmFsdWVUeXBlOnQsLi4uaChuKX0pfWNvbnN0IE9lPWQoIlpvZEVudW0iLCh0LG4pPT57R3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0obyxlLGkpPT5oZCh0LG8sZSksdC5lbnVtPW4uZW50cmllcyx0Lm9wdGlvbnM9T2JqZWN0LnZhbHVlcyhuLmVudHJpZXMpO2NvbnN0IHI9bmV3IFNldChPYmplY3Qua2V5cyhuLmVudHJpZXMpKTt0LmV4dHJhY3Q9KG8sZSk9Pntjb25zdCBpPXt9O2Zvcihjb25zdCBhIG9mIG8paWYoci5oYXMoYSkpaVthXT1uLmVudHJpZXNbYV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEtleSAke2F9IG5vdCBmb3VuZCBpbiBlbnVtYCk7cmV0dXJuIG5ldyBPZSh7Li4ubixjaGVja3M6W10sLi4uaChlKSxlbnRyaWVzOml9KX0sdC5leGNsdWRlPShvLGUpPT57Y29uc3QgaT17Li4ubi5lbnRyaWVzfTtmb3IoY29uc3QgYSBvZiBvKWlmKHIuaGFzKGEpKWRlbGV0ZSBpW2FdO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGBLZXkgJHthfSBub3QgZm91bmQgaW4gZW51bWApO3JldHVybiBuZXcgT2Uoey4uLm4sY2hlY2tzOltdLC4uLmgoZSksZW50cmllczppfSl9fSk7ZnVuY3Rpb24gRyh0LG4pe2NvbnN0IHI9QXJyYXkuaXNBcnJheSh0KT9PYmplY3QuZnJvbUVudHJpZXModC5tYXAobz0+W28sb10pKTp0O3JldHVybiBuZXcgT2Uoe3R5cGU6ImVudW0iLGVudHJpZXM6ciwuLi5oKG4pfSl9ZnVuY3Rpb24gZmEodCxuKXtyZXR1cm4gbmV3IE9lKHt0eXBlOiJlbnVtIixlbnRyaWVzOnQsLi4uaChuKX0pfWNvbnN0IGJyPWQoIlpvZExpdGVyYWwiLCh0LG4pPT57WHUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT4kZCh0LHIsbyksdC52YWx1ZXM9bmV3IFNldChuLnZhbHVlcyksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInZhbHVlIix7Z2V0KCl7aWYobi52YWx1ZXMubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLiIpO3JldHVybiBuLnZhbHVlc1swXX19KX0pO2Z1bmN0aW9uIG0odCxuKXtyZXR1cm4gbmV3IGJyKHt0eXBlOiJsaXRlcmFsIix2YWx1ZXM6QXJyYXkuaXNBcnJheSh0KT90Olt0XSwuLi5oKG4pfSl9Y29uc3QgeXI9ZCgiWm9kRmlsZSIsKHQsbik9PntZdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnlkKHQscixvKSx0Lm1pbj0ocixvKT0+dC5jaGVjayhfZShyLG8pKSx0Lm1heD0ocixvKT0+dC5jaGVjayhFZShyLG8pKSx0Lm1pbWU9KHIsbyk9PnQuY2hlY2soRXQoQXJyYXkuaXNBcnJheShyKT9yOltyXSxvKSl9KTtmdW5jdGlvbiBnYSh0KXtyZXR1cm4gR2woeXIsdCl9Y29uc3Qga3I9ZCgiWm9kVHJhbnNmb3JtIiwodCxuKT0+e1F1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+SWQodCxyKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpdGhyb3cgbmV3IENuKHQuY29uc3RydWN0b3IubmFtZSk7ci5hZGRJc3N1ZT1pPT57aWYodHlwZW9mIGk9PSJzdHJpbmciKXIuaXNzdWVzLnB1c2goTWUoaSxyLnZhbHVlLG4pKTtlbHNle2NvbnN0IGE9aTthLmZhdGFsJiYoYS5jb250aW51ZT0hMSksYS5jb2RlPz8oYS5jb2RlPSJjdXN0b20iKSxhLmlucHV0Pz8oYS5pbnB1dD1yLnZhbHVlKSxhLmluc3Q/PyhhLmluc3Q9dCksci5pc3N1ZXMucHVzaChNZShhKSl9fTtjb25zdCBlPW4udHJhbnNmb3JtKHIudmFsdWUscik7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT4oci52YWx1ZT1pLHIuZmFsbGJhY2s9ITAscikpOihyLnZhbHVlPWUsci5mYWxsYmFjaz0hMCxyKX19KTtmdW5jdGlvbiBkbih0KXtyZXR1cm4gbmV3IGtyKHt0eXBlOiJ0cmFuc2Zvcm0iLHRyYW5zZm9ybTp0fSl9Y29uc3QgbW49ZCgiWm9kT3B0aW9uYWwiLCh0LG4pPT57VWkuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5pbyh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBBKHQpe3JldHVybiBuZXcgbW4oe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWNvbnN0IFNyPWQoIlpvZEV4YWN0T3B0aW9uYWwiLCh0LG4pPT57ZWwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5pbyh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiB3cih0KXtyZXR1cm4gbmV3IFNyKHt0eXBlOiJvcHRpb25hbCIsaW5uZXJUeXBlOnR9KX1jb25zdCBJcj1kKCJab2ROdWxsYWJsZSIsKHQsbik9Pnt0bC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkRkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIEJlKHQpe3JldHVybiBuZXcgSXIoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6dH0pfWZ1bmN0aW9uIHZhKHQpe3JldHVybiBBKEJlKHQpKX1jb25zdCB6cj1kKCJab2REZWZhdWx0IiwodCxuKT0+e25sLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+RWQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlLHQucmVtb3ZlRGVmYXVsdD10LnVud3JhcH0pO2Z1bmN0aW9uIHhyKHQsbil7cmV0dXJuIG5ldyB6cih7dHlwZToiZGVmYXVsdCIsaW5uZXJUeXBlOnQsZ2V0IGRlZmF1bHRWYWx1ZSgpe3JldHVybiB0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uKCk6TG4obil9fSl9Y29uc3QgVHI9ZCgiWm9kUHJlZmF1bHQiLCh0LG4pPT57cmwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5aZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBqcih0LG4pe3JldHVybiBuZXcgVHIoe3R5cGU6InByZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpMbihuKX19KX1jb25zdCBwbj1kKCJab2ROb25PcHRpb25hbCIsKHQsbik9PntpbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk5kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFVyKHQsbil7cmV0dXJuIG5ldyBwbih7dHlwZToibm9ub3B0aW9uYWwiLGlubmVyVHlwZTp0LC4uLmgobil9KX1jb25zdCBQcj1kKCJab2RTdWNjZXNzIiwodCxuKT0+e29sLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+a2QodCxyLG8pLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGhhKHQpe3JldHVybiBuZXcgUHIoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTp0fSl9Y29uc3QgT3I9ZCgiWm9kQ2F0Y2giLCh0LG4pPT57YWwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5SZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGUsdC5yZW1vdmVDYXRjaD10LnVud3JhcH0pO2Z1bmN0aW9uIERyKHQsbil7cmV0dXJuIG5ldyBPcih7dHlwZToiY2F0Y2giLGlubmVyVHlwZTp0LGNhdGNoVmFsdWU6dHlwZW9mIG49PSJmdW5jdGlvbiI/bjooKT0+bn0pfWNvbnN0IE5yPWQoIlpvZE5hTiIsKHQsbik9PntzbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pl9kKHQscil9KTtmdW5jdGlvbiAkYSh0KXtyZXR1cm4gQmwoTnIsdCl9Y29uc3QgY3Q9ZCgiWm9kUGlwZSIsKHQsbik9PntQaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkNkKHQscixvLGUpLHQuaW49bi5pbix0Lm91dD1uLm91dH0pO2Z1bmN0aW9uICR0KHQsbil7cmV0dXJuIG5ldyBjdCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bn0pfWNvbnN0IHV0PWQoIlpvZENvZGVjIiwodCxuKT0+e2N0LmluaXQodCxuKSxPaS5pbml0KHQsbil9KTtmdW5jdGlvbiBfYSh0LG4scil7cmV0dXJuIG5ldyB1dCh7dHlwZToicGlwZSIsaW46dCxvdXQ6bix0cmFuc2Zvcm06ci5kZWNvZGUscmV2ZXJzZVRyYW5zZm9ybTpyLmVuY29kZX0pfWZ1bmN0aW9uIGJhKHQpe2NvbnN0IG49dC5fem9kLmRlZjtyZXR1cm4gbmV3IHV0KHt0eXBlOiJwaXBlIixpbjpuLm91dCxvdXQ6bi5pbix0cmFuc2Zvcm06bi5yZXZlcnNlVHJhbnNmb3JtLHJldmVyc2VUcmFuc2Zvcm06bi50cmFuc2Zvcm19KX1jb25zdCBFcj1kKCJab2RQcmVwcm9jZXNzIiwodCxuKT0+e2N0LmluaXQodCxuKSxjbC5pbml0KHQsbil9KSxacj1kKCJab2RSZWFkb25seSIsKHQsbik9Pnt1bC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PkFkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIFJyKHQpe3JldHVybiBuZXcgWnIoe3R5cGU6InJlYWRvbmx5Iixpbm5lclR5cGU6dH0pfWNvbnN0IENyPWQoIlpvZFRlbXBsYXRlTGl0ZXJhbCIsKHQsbik9PntsbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmJkKHQscixvKX0pO2Z1bmN0aW9uIHlhKHQsbil7cmV0dXJuIG5ldyBDcih7dHlwZToidGVtcGxhdGVfbGl0ZXJhbCIscGFydHM6dCwuLi5oKG4pfSl9Y29uc3QgQXI9ZCgiWm9kTGF6eSIsKHQsbik9PntwbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9Pk1kKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmdldHRlcigpfSk7ZnVuY3Rpb24gTHIodCl7cmV0dXJuIG5ldyBBcih7dHlwZToibGF6eSIsZ2V0dGVyOnR9KX1jb25zdCBNcj1kKCJab2RQcm9taXNlIiwodCxuKT0+e21sLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+TGQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24ga2EodCl7cmV0dXJuIG5ldyBNcih7dHlwZToicHJvbWlzZSIsaW5uZXJUeXBlOnR9KX1jb25zdCBxcj1kKCJab2RGdW5jdGlvbiIsKHQsbik9PntkbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PndkKHQscil9KTtmdW5jdGlvbiBXZSh0KXtyZXR1cm4gbmV3IHFyKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6QXJyYXkuaXNBcnJheSh0Py5pbnB1dCk/aHIodD8uaW5wdXQpOnQ/LmlucHV0Pz93KE8oKSksb3V0cHV0OnQ/Lm91dHB1dD8/TygpfSl9Y29uc3QgbHQ9ZCgiWm9kQ3VzdG9tIiwodCxuKT0+e2ZsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+U2QodCxyKX0pO2Z1bmN0aW9uIFNhKHQpe2NvbnN0IG49bmV3IHEoe2NoZWNrOiJjdXN0b20ifSk7cmV0dXJuIG4uX3pvZC5jaGVjaz10LG59ZnVuY3Rpb24gRnIodCxuKXtyZXR1cm4gWGwobHQsdD8/KCgpPT4hMCksbil9ZnVuY3Rpb24gSnIodCxuPXt9KXtyZXR1cm4gWWwobHQsdCxuKX1mdW5jdGlvbiBIcih0LG4pe3JldHVybiBRbCh0LG4pfWNvbnN0IHdhPXRkLElhPW5kO2Z1bmN0aW9uIHphKHQsbj17fSl7Y29uc3Qgcj1uZXcgbHQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46bz0+byBpbnN0YW5jZW9mIHQsYWJvcnQ6ITAsLi4uaChuKX0pO3JldHVybiByLl96b2QuYmFnLkNsYXNzPXQsci5fem9kLmNoZWNrPW89PntvLnZhbHVlIGluc3RhbmNlb2YgdHx8by5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF90eXBlIixleHBlY3RlZDp0Lm5hbWUsaW5wdXQ6by52YWx1ZSxpbnN0OnIscGF0aDpbLi4uci5fem9kLmRlZi5wYXRoPz9bXV19KX0scn1jb25zdCB4YT0oLi4udCk9PnJkKHtDb2RlYzp1dCxCb29sZWFuOnJ0LFN0cmluZzpldH0sLi4udCk7ZnVuY3Rpb24gVGEodCl7Y29uc3Qgbj1McigoKT0+aihbcCh0KSx6KCksRCgpLGNuKCksdyhuKSxVKHAoKSxuKV0pKTtyZXR1cm4gbn1mdW5jdGlvbiBmbih0LG4pe3JldHVybiBuZXcgRXIoe3R5cGU6InBpcGUiLGluOmRuKHQpLG91dDpufSl9Y29uc3QgVmc9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZEFueTpjcixab2RBcnJheTptcixab2RCYXNlNjQ6bm4sWm9kQmFzZTY0VVJMOnJuLFpvZEJpZ0ludDppdCxab2RCaWdJbnRGb3JtYXQ6c24sWm9kQm9vbGVhbjpydCxab2RDSURSdjQ6ZW4sWm9kQ0lEUnY2OnRuLFpvZENVSUQ6S3QsWm9kQ1VJRDI6QnQsWm9kQ2F0Y2g6T3IsWm9kQ29kZWM6dXQsWm9kQ3VzdG9tOmx0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpaZSxab2REYXRlOnVuLFpvZERlZmF1bHQ6enIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmZyLFpvZEUxNjQ6b24sWm9kRW1haWw6SnQsWm9kRW1vamk6SHQsWm9kRW51bTpPZSxab2RFeGFjdE9wdGlvbmFsOlNyLFpvZEZpbGU6eXIsWm9kRnVuY3Rpb246cXIsWm9kR1VJRDpWZSxab2RJUHY0Oll0LFpvZElQdjY6UXQsWm9kSW50ZXJzZWN0aW9uOmdyLFpvZEpXVDphbixab2RLU1VJRDpYdCxab2RMYXp5OkFyLFpvZExpdGVyYWw6YnIsWm9kTUFDOmlyLFpvZE1hcDokcixab2ROYU46TnIsWm9kTmFub0lEOlZ0LFpvZE5ldmVyOmxyLFpvZE5vbk9wdGlvbmFsOnBuLFpvZE51bGw6c3IsWm9kTnVsbGFibGU6SXIsWm9kTnVtYmVyOm50LFpvZE51bWJlckZvcm1hdDprZSxab2RPYmplY3Q6b3QsWm9kT3B0aW9uYWw6bW4sWm9kUGlwZTpjdCxab2RQcmVmYXVsdDpUcixab2RQcmVwcm9jZXNzOkVyLFpvZFByb21pc2U6TXIsWm9kUmVhZG9ubHk6WnIsWm9kUmVjb3JkOlBlLFpvZFNldDpfcixab2RTdHJpbmc6ZXQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2VzczpQcixab2RTeW1ib2w6b3IsWm9kVGVtcGxhdGVMaXRlcmFsOkNyLFpvZFRyYW5zZm9ybTprcixab2RUdXBsZTp2cixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6dHQsWm9kVVVJRDptZSxab2RVbmRlZmluZWQ6YXIsWm9kVW5pb246YXQsWm9kVW5rbm93bjp1cixab2RWb2lkOmRyLFpvZFhJRDpHdCxab2RYb3I6cHIsX1pvZFN0cmluZzpGdCxfZGVmYXVsdDp4cixfZnVuY3Rpb246V2UsYW55OmlhLGFycmF5OncsYmFzZTY0OnFvLGJhc2U2NHVybDpGbyxiaWdpbnQ6ZWEsYm9vbGVhbjpELGNhdGNoOkRyLGNoZWNrOlNhLGNpZHJ2NDpMbyxjaWRydjY6TW8sY29kZWM6X2EsY3VpZDpPbyxjdWlkMjpEbyxjdXN0b206RnIsZGF0ZTphYSxkZXNjcmliZTp3YSxkaXNjcmltaW5hdGVkVW5pb246bG4sZTE2NDpKbyxlbWFpbDprbyxlbW9qaTpVbyxlbnVtOkcsZXhhY3RPcHRpb25hbDp3cixmaWxlOmdhLGZsb2F0MzI6R28sZmxvYXQ2NDpYbyxmdW5jdGlvbjpXZSxndWlkOlNvLGhhc2g6V28saGV4OkJvLGhvc3RuYW1lOktvLGh0dHBVcmw6am8saW5zdGFuY2VvZjp6YSxpbnQ6aHQsaW50MzI6WW8saW50NjQ6dGEsaW50ZXJzZWN0aW9uOnN0LGludmVydENvZGVjOmJhLGlwdjQ6Um8saXB2NjpBbyxqc29uOlRhLGp3dDpIbyxrZXlvZjpzYSxrc3VpZDpabyxsYXp5OkxyLGxpdGVyYWw6bSxsb29zZU9iamVjdDpXLGxvb3NlUmVjb3JkOmRhLG1hYzpDbyxtYXA6bWEsbWV0YTpJYSxuYW46JGEsbmFub2lkOlBvLG5hdGl2ZUVudW06ZmEsbmV2ZXI6VWUsbm9ub3B0aW9uYWw6VXIsbnVsbDpjbixudWxsYWJsZTpCZSxudWxsaXNoOnZhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEscGFydGlhbFJlY29yZDpsYSxwaXBlOiR0LHByZWZhdWx0OmpyLHByZXByb2Nlc3M6Zm4scHJvbWlzZTprYSxyZWFkb25seTpScixyZWNvcmQ6VSxyZWZpbmU6SnIsc2V0OnBhLHN0cmljdE9iamVjdDpjYSxzdHJpbmc6cCxzdHJpbmdGb3JtYXQ6Vm8sc3RyaW5nYm9vbDp4YSxzdWNjZXNzOmhhLHN1cGVyUmVmaW5lOkhyLHN5bWJvbDpyYSx0ZW1wbGF0ZUxpdGVyYWw6eWEsdHJhbnNmb3JtOmRuLHR1cGxlOmhyLHVpbnQzMjpRbyx1aW50NjQ6bmEsdWxpZDpObyx1bmRlZmluZWQ6S2UsdW5pb246aix1bmtub3duOk8sdXJsOlRvLHV1aWQ6d28sdXVpZHY0OklvLHV1aWR2Njp6byx1dWlkdjc6eG8sdm9pZDpvYSx4aWQ6RW8seG9yOnVhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLFdkPXtpbnZhbGlkX3R5cGU6ImludmFsaWRfdHlwZSIsdG9vX2JpZzoidG9vX2JpZyIsdG9vX3NtYWxsOiJ0b29fc21hbGwiLGludmFsaWRfZm9ybWF0OiJpbnZhbGlkX2Zvcm1hdCIsbm90X211bHRpcGxlX29mOiJub3RfbXVsdGlwbGVfb2YiLHVucmVjb2duaXplZF9rZXlzOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW52YWxpZF91bmlvbjoiaW52YWxpZF91bmlvbiIsaW52YWxpZF9rZXk6ImludmFsaWRfa2V5IixpbnZhbGlkX2VsZW1lbnQ6ImludmFsaWRfZWxlbWVudCIsaW52YWxpZF92YWx1ZToiaW52YWxpZF92YWx1ZSIsY3VzdG9tOiJjdXN0b20ifTtmdW5jdGlvbiBHZCh0KXtWKHtjdXN0b21FcnJvcjp0fSl9ZnVuY3Rpb24gWGQoKXtyZXR1cm4gVigpLmN1c3RvbUVycm9yfXZhciBObjtObnx8KE5uPXt9KTtjb25zdCBiPXsuLi5WZywuLi5IZyxpc286Y299LEtnPW5ldyBTZXQoWyIkc2NoZW1hIiwiJHJlZiIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciIsInR5cGUiLCJlbnVtIiwiY29uc3QiLCJhbnlPZiIsIm9uZU9mIiwiYWxsT2YiLCJub3QiLCJwcm9wZXJ0aWVzIiwicmVxdWlyZWQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsInBhdHRlcm5Qcm9wZXJ0aWVzIiwicHJvcGVydHlOYW1lcyIsIm1pblByb3BlcnRpZXMiLCJtYXhQcm9wZXJ0aWVzIiwiaXRlbXMiLCJwcmVmaXhJdGVtcyIsImFkZGl0aW9uYWxJdGVtcyIsIm1pbkl0ZW1zIiwibWF4SXRlbXMiLCJ1bmlxdWVJdGVtcyIsImNvbnRhaW5zIiwibWluQ29udGFpbnMiLCJtYXhDb250YWlucyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInBhdHRlcm4iLCJmb3JtYXQiLCJtaW5pbXVtIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJleGNsdXNpdmVNYXhpbXVtIiwibXVsdGlwbGVPZiIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdCIsImNvbnRlbnRFbmNvZGluZyIsImNvbnRlbnRNZWRpYVR5cGUiLCJjb250ZW50U2NoZW1hIiwidW5ldmFsdWF0ZWRJdGVtcyIsInVuZXZhbHVhdGVkUHJvcGVydGllcyIsImlmIiwidGhlbiIsImVsc2UiLCJkZXBlbmRlbnRTY2hlbWFzIiwiZGVwZW5kZW50UmVxdWlyZWQiLCJudWxsYWJsZSIsInJlYWRPbmx5Il0pO2Z1bmN0aW9uIEJnKHQsbil7Y29uc3Qgcj10LiRzY2hlbWE7cmV0dXJuIHI9PT0iaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWEiPyJkcmFmdC0yMDIwLTEyIjpyPT09Imh0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hIyI/ImRyYWZ0LTciOnI9PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNC9zY2hlbWEjIj8iZHJhZnQtNCI6bj8/ImRyYWZ0LTIwMjAtMTIifWZ1bmN0aW9uIFdnKHQsbil7aWYoIXQuc3RhcnRzV2l0aCgiIyIpKXRocm93IG5ldyBFcnJvcigiRXh0ZXJuYWwgJHJlZiBpcyBub3Qgc3VwcG9ydGVkLCBvbmx5IGxvY2FsIHJlZnMgKCMvLi4uKSBhcmUgYWxsb3dlZCIpO2NvbnN0IHI9dC5zbGljZSgxKS5zcGxpdCgiLyIpLmZpbHRlcihCb29sZWFuKTtpZihyLmxlbmd0aD09PTApcmV0dXJuIG4ucm9vdFNjaGVtYTtjb25zdCBvPW4udmVyc2lvbj09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7aWYoclswXT09PW8pe2NvbnN0IGU9clsxXTtpZighZXx8IW4uZGVmc1tlXSl0aHJvdyBuZXcgRXJyb3IoYFJlZmVyZW5jZSBub3QgZm91bmQ6ICR7dH1gKTtyZXR1cm4gbi5kZWZzW2VdfXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHt0fWApfWZ1bmN0aW9uIFlkKHQsbil7aWYodC5ub3QhPT12b2lkIDApe2lmKHR5cGVvZiB0Lm5vdD09Im9iamVjdCImJk9iamVjdC5rZXlzKHQubm90KS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7dGhyb3cgbmV3IEVycm9yKCJub3QgaXMgbm90IHN1cHBvcnRlZCBpbiBab2QgKGV4Y2VwdCB7IG5vdDoge30gfSBmb3IgbmV2ZXIpIil9aWYodC51bmV2YWx1YXRlZEl0ZW1zIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigidW5ldmFsdWF0ZWRJdGVtcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYodC51bmV2YWx1YXRlZFByb3BlcnRpZXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZFByb3BlcnRpZXMgaXMgbm90IHN1cHBvcnRlZCIpO2lmKHQuaWYhPT12b2lkIDB8fHQudGhlbiE9PXZvaWQgMHx8dC5lbHNlIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiQ29uZGl0aW9uYWwgc2NoZW1hcyAoaWYvdGhlbi9lbHNlKSBhcmUgbm90IHN1cHBvcnRlZCIpO2lmKHQuZGVwZW5kZW50U2NoZW1hcyE9PXZvaWQgMHx8dC5kZXBlbmRlbnRSZXF1aXJlZCE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoImRlcGVuZGVudFNjaGVtYXMgYW5kIGRlcGVuZGVudFJlcXVpcmVkIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYodC4kcmVmKXtjb25zdCBlPXQuJHJlZjtpZihuLnJlZnMuaGFzKGUpKXJldHVybiBuLnJlZnMuZ2V0KGUpO2lmKG4ucHJvY2Vzc2luZy5oYXMoZSkpcmV0dXJuIGIubGF6eSgoKT0+e2lmKCFuLnJlZnMuaGFzKGUpKXRocm93IG5ldyBFcnJvcihgQ2lyY3VsYXIgcmVmZXJlbmNlIG5vdCByZXNvbHZlZDogJHtlfWApO3JldHVybiBuLnJlZnMuZ2V0KGUpfSk7bi5wcm9jZXNzaW5nLmFkZChlKTtjb25zdCBpPVdnKGUsbiksYT1RKGksbik7cmV0dXJuIG4ucmVmcy5zZXQoZSxhKSxuLnByb2Nlc3NpbmcuZGVsZXRlKGUpLGF9aWYodC5lbnVtIT09dm9pZCAwKXtjb25zdCBlPXQuZW51bTtpZihuLnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiZ0Lm51bGxhYmxlPT09ITAmJmUubGVuZ3RoPT09MSYmZVswXT09PW51bGwpcmV0dXJuIGIubnVsbCgpO2lmKGUubGVuZ3RoPT09MClyZXR1cm4gYi5uZXZlcigpO2lmKGUubGVuZ3RoPT09MSlyZXR1cm4gYi5saXRlcmFsKGVbMF0pO2lmKGUuZXZlcnkoYT0+dHlwZW9mIGE9PSJzdHJpbmciKSlyZXR1cm4gYi5lbnVtKGUpO2NvbnN0IGk9ZS5tYXAoYT0+Yi5saXRlcmFsKGEpKTtyZXR1cm4gaS5sZW5ndGg8Mj9pWzBdOmIudW5pb24oW2lbMF0saVsxXSwuLi5pLnNsaWNlKDIpXSl9aWYodC5jb25zdCE9PXZvaWQgMClyZXR1cm4gYi5saXRlcmFsKHQuY29uc3QpO2NvbnN0IHI9dC50eXBlO2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGU9ci5tYXAoaT0+e2NvbnN0IGE9ey4uLnQsdHlwZTppfTtyZXR1cm4gWWQoYSxuKX0pO3JldHVybiBlLmxlbmd0aD09PTA/Yi5uZXZlcigpOmUubGVuZ3RoPT09MT9lWzBdOmIudW5pb24oZSl9aWYoIXIpcmV0dXJuIGIuYW55KCk7bGV0IG87c3dpdGNoKHIpe2Nhc2Uic3RyaW5nIjp7bGV0IGU9Yi5zdHJpbmcoKTtpZih0LmZvcm1hdCl7Y29uc3QgaT10LmZvcm1hdDtpPT09ImVtYWlsIj9lPWUuY2hlY2soYi5lbWFpbCgpKTppPT09InVyaSJ8fGk9PT0idXJpLXJlZmVyZW5jZSI/ZT1lLmNoZWNrKGIudXJsKCkpOmk9PT0idXVpZCJ8fGk9PT0iZ3VpZCI/ZT1lLmNoZWNrKGIudXVpZCgpKTppPT09ImRhdGUtdGltZSI/ZT1lLmNoZWNrKGIuaXNvLmRhdGV0aW1lKCkpOmk9PT0iZGF0ZSI/ZT1lLmNoZWNrKGIuaXNvLmRhdGUoKSk6aT09PSJ0aW1lIj9lPWUuY2hlY2soYi5pc28udGltZSgpKTppPT09ImR1cmF0aW9uIj9lPWUuY2hlY2soYi5pc28uZHVyYXRpb24oKSk6aT09PSJpcHY0Ij9lPWUuY2hlY2soYi5pcHY0KCkpOmk9PT0iaXB2NiI/ZT1lLmNoZWNrKGIuaXB2NigpKTppPT09Im1hYyI/ZT1lLmNoZWNrKGIubWFjKCkpOmk9PT0iY2lkciI/ZT1lLmNoZWNrKGIuY2lkcnY0KCkpOmk9PT0iY2lkci12NiI/ZT1lLmNoZWNrKGIuY2lkcnY2KCkpOmk9PT0iYmFzZTY0Ij9lPWUuY2hlY2soYi5iYXNlNjQoKSk6aT09PSJiYXNlNjR1cmwiP2U9ZS5jaGVjayhiLmJhc2U2NHVybCgpKTppPT09ImUxNjQiP2U9ZS5jaGVjayhiLmUxNjQoKSk6aT09PSJqd3QiP2U9ZS5jaGVjayhiLmp3dCgpKTppPT09ImVtb2ppIj9lPWUuY2hlY2soYi5lbW9qaSgpKTppPT09Im5hbm9pZCI/ZT1lLmNoZWNrKGIubmFub2lkKCkpOmk9PT0iY3VpZCI/ZT1lLmNoZWNrKGIuY3VpZCgpKTppPT09ImN1aWQyIj9lPWUuY2hlY2soYi5jdWlkMigpKTppPT09InVsaWQiP2U9ZS5jaGVjayhiLnVsaWQoKSk6aT09PSJ4aWQiP2U9ZS5jaGVjayhiLnhpZCgpKTppPT09ImtzdWlkIiYmKGU9ZS5jaGVjayhiLmtzdWlkKCkpKX10eXBlb2YgdC5taW5MZW5ndGg9PSJudW1iZXIiJiYoZT1lLm1pbih0Lm1pbkxlbmd0aCkpLHR5cGVvZiB0Lm1heExlbmd0aD09Im51bWJlciImJihlPWUubWF4KHQubWF4TGVuZ3RoKSksdC5wYXR0ZXJuJiYoZT1lLnJlZ2V4KG5ldyBSZWdFeHAodC5wYXR0ZXJuKSkpLG89ZTticmVha31jYXNlIm51bWJlciI6Y2FzZSJpbnRlZ2VyIjp7bGV0IGU9cj09PSJpbnRlZ2VyIj9iLm51bWJlcigpLmludCgpOmIubnVtYmVyKCk7dHlwZW9mIHQubWluaW11bT09Im51bWJlciImJihlPWUubWluKHQubWluaW11bSkpLHR5cGVvZiB0Lm1heGltdW09PSJudW1iZXIiJiYoZT1lLm1heCh0Lm1heGltdW0pKSx0eXBlb2YgdC5leGNsdXNpdmVNaW5pbXVtPT0ibnVtYmVyIj9lPWUuZ3QodC5leGNsdXNpdmVNaW5pbXVtKTp0LmV4Y2x1c2l2ZU1pbmltdW09PT0hMCYmdHlwZW9mIHQubWluaW11bT09Im51bWJlciImJihlPWUuZ3QodC5taW5pbXVtKSksdHlwZW9mIHQuZXhjbHVzaXZlTWF4aW11bT09Im51bWJlciI/ZT1lLmx0KHQuZXhjbHVzaXZlTWF4aW11bSk6dC5leGNsdXNpdmVNYXhpbXVtPT09ITAmJnR5cGVvZiB0Lm1heGltdW09PSJudW1iZXIiJiYoZT1lLmx0KHQubWF4aW11bSkpLHR5cGVvZiB0Lm11bHRpcGxlT2Y9PSJudW1iZXIiJiYoZT1lLm11bHRpcGxlT2YodC5tdWx0aXBsZU9mKSksbz1lO2JyZWFrfWNhc2UiYm9vbGVhbiI6e289Yi5ib29sZWFuKCk7YnJlYWt9Y2FzZSJudWxsIjp7bz1iLm51bGwoKTticmVha31jYXNlIm9iamVjdCI6e2NvbnN0IGU9e30saT10LnByb3BlcnRpZXN8fHt9LGE9bmV3IFNldCh0LnJlcXVpcmVkfHxbXSk7Zm9yKGNvbnN0W2MsdV1vZiBPYmplY3QuZW50cmllcyhpKSl7Y29uc3QgbD1RKHUsbik7ZVtjXT1hLmhhcyhjKT9sOmwub3B0aW9uYWwoKX1pZih0LnByb3BlcnR5TmFtZXMpe2NvbnN0IGM9USh0LnByb3BlcnR5TmFtZXMsbiksdT10LmFkZGl0aW9uYWxQcm9wZXJ0aWVzJiZ0eXBlb2YgdC5hZGRpdGlvbmFsUHJvcGVydGllcz09Im9iamVjdCI/USh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pOmIuYW55KCk7aWYoT2JqZWN0LmtleXMoZSkubGVuZ3RoPT09MCl7bz1iLnJlY29yZChjLHUpO2JyZWFrfWNvbnN0IGw9Yi5vYmplY3QoZSkucGFzc3Rocm91Z2goKSxnPWIubG9vc2VSZWNvcmQoYyx1KTtvPWIuaW50ZXJzZWN0aW9uKGwsZyk7YnJlYWt9aWYodC5wYXR0ZXJuUHJvcGVydGllcyl7Y29uc3QgYz10LnBhdHRlcm5Qcm9wZXJ0aWVzLHU9T2JqZWN0LmtleXMoYyksbD1bXTtmb3IoY29uc3QgdiBvZiB1KXtjb25zdCAkPVEoY1t2XSxuKSx5PWIuc3RyaW5nKCkucmVnZXgobmV3IFJlZ0V4cCh2KSk7bC5wdXNoKGIubG9vc2VSZWNvcmQoeSwkKSl9Y29uc3QgZz1bXTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmZy5wdXNoKGIub2JqZWN0KGUpLnBhc3N0aHJvdWdoKCkpLGcucHVzaCguLi5sKSxnLmxlbmd0aD09PTApbz1iLm9iamVjdCh7fSkucGFzc3Rocm91Z2goKTtlbHNlIGlmKGcubGVuZ3RoPT09MSlvPWdbMF07ZWxzZXtsZXQgdj1iLmludGVyc2VjdGlvbihnWzBdLGdbMV0pO2ZvcihsZXQgJD0yOyQ8Zy5sZW5ndGg7JCsrKXY9Yi5pbnRlcnNlY3Rpb24odixnWyRdKTtvPXZ9YnJlYWt9Y29uc3Qgcz1iLm9iamVjdChlKTt0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT09ITE/bz1zLnN0cmljdCgpOnR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT0ib2JqZWN0Ij9vPXMuY2F0Y2hhbGwoUSh0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzLG4pKTpvPXMucGFzc3Rocm91Z2goKTticmVha31jYXNlImFycmF5Ijp7Y29uc3QgZT10LnByZWZpeEl0ZW1zLGk9dC5pdGVtcztpZihlJiZBcnJheS5pc0FycmF5KGUpKXtjb25zdCBhPWUubWFwKGM9PlEoYyxuKSkscz1pJiZ0eXBlb2YgaT09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KGkpP1EoaSxuKTp2b2lkIDA7cz9vPWIudHVwbGUoYSkucmVzdChzKTpvPWIudHVwbGUoYSksdHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWluTGVuZ3RoKHQubWluSXRlbXMpKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYobz1vLmNoZWNrKGIubWF4TGVuZ3RoKHQubWF4SXRlbXMpKSl9ZWxzZSBpZihBcnJheS5pc0FycmF5KGkpKXtjb25zdCBhPWkubWFwKGM9PlEoYyxuKSkscz10LmFkZGl0aW9uYWxJdGVtcyYmdHlwZW9mIHQuYWRkaXRpb25hbEl0ZW1zPT0ib2JqZWN0Ij9RKHQuYWRkaXRpb25hbEl0ZW1zLG4pOnZvaWQgMDtzP289Yi50dXBsZShhKS5yZXN0KHMpOm89Yi50dXBsZShhKSx0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5taW5MZW5ndGgodC5taW5JdGVtcykpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5tYXhMZW5ndGgodC5tYXhJdGVtcykpKX1lbHNlIGlmKGkhPT12b2lkIDApe2NvbnN0IGE9UShpLG4pO2xldCBzPWIuYXJyYXkoYSk7dHlwZW9mIHQubWluSXRlbXM9PSJudW1iZXIiJiYocz1zLm1pbih0Lm1pbkl0ZW1zKSksdHlwZW9mIHQubWF4SXRlbXM9PSJudW1iZXIiJiYocz1zLm1heCh0Lm1heEl0ZW1zKSksbz1zfWVsc2Ugbz1iLmFycmF5KGIuYW55KCkpO2JyZWFrfWRlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCB0eXBlOiAke3J9YCl9cmV0dXJuIG99ZnVuY3Rpb24gUSh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI9WWQodCxuKTtjb25zdCBvPXQudHlwZXx8dC5lbnVtIT09dm9pZCAwfHx0LmNvbnN0IT09dm9pZCAwO2lmKHQuYW55T2YmJkFycmF5LmlzQXJyYXkodC5hbnlPZikpe2NvbnN0IHM9dC5hbnlPZi5tYXAodT0+USh1LG4pKSxjPWIudW5pb24ocyk7cj1vP2IuaW50ZXJzZWN0aW9uKHIsYyk6Y31pZih0Lm9uZU9mJiZBcnJheS5pc0FycmF5KHQub25lT2YpKXtjb25zdCBzPXQub25lT2YubWFwKHU9PlEodSxuKSksYz1iLnhvcihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQuYWxsT2YmJkFycmF5LmlzQXJyYXkodC5hbGxPZikpaWYodC5hbGxPZi5sZW5ndGg9PT0wKXI9bz9yOmIuYW55KCk7ZWxzZXtsZXQgcz1vP3I6USh0LmFsbE9mWzBdLG4pO2NvbnN0IGM9bz8wOjE7Zm9yKGxldCB1PWM7dTx0LmFsbE9mLmxlbmd0aDt1Kyspcz1iLmludGVyc2VjdGlvbihzLFEodC5hbGxPZlt1XSxuKSk7cj1zfXQubnVsbGFibGU9PT0hMCYmbi52ZXJzaW9uPT09Im9wZW5hcGktMy4wIiYmKHI9Yi5udWxsYWJsZShyKSksdC5yZWFkT25seT09PSEwJiYocj1iLnJlYWRvbmx5KHIpKSx0LmRlZmF1bHQhPT12b2lkIDAmJihyPXIuZGVmYXVsdCh0LmRlZmF1bHQpKTtjb25zdCBlPXt9LGk9WyIkaWQiLCJpZCIsIiRjb21tZW50IiwiJGFuY2hvciIsIiR2b2NhYnVsYXJ5IiwiJGR5bmFtaWNSZWYiLCIkZHluYW1pY0FuY2hvciJdO2Zvcihjb25zdCBzIG9mIGkpcyBpbiB0JiYoZVtzXT10W3NdKTtjb25zdCBhPVsiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiXTtmb3IoY29uc3QgcyBvZiBhKXMgaW4gdCYmKGVbc109dFtzXSk7Zm9yKGNvbnN0IHMgb2YgT2JqZWN0LmtleXModCkpS2cuaGFzKHMpfHwoZVtzXT10W3NdKTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoPjAmJm4ucmVnaXN0cnkuYWRkKHIsZSksdC5kZXNjcmlwdGlvbiYmKHI9ci5kZXNjcmliZSh0LmRlc2NyaXB0aW9uKSkscn1mdW5jdGlvbiBRZCh0LG4pe2lmKHR5cGVvZiB0PT0iYm9vbGVhbiIpcmV0dXJuIHQ/Yi5hbnkoKTpiLm5ldmVyKCk7bGV0IHI7dHJ5e3I9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0KSl9Y2F0Y2h7dGhyb3cgbmV3IEVycm9yKCJmcm9tSlNPTlNjaGVtYSBpbnB1dCBpcyBub3QgdmFsaWQgSlNPTiAocG9zc2libHkgY3ljbGljKTsgdXNlICRkZWZzLyRyZWYgZm9yIHJlY3Vyc2l2ZSBzY2hlbWFzIil9Y29uc3Qgbz1CZyhyLG4/LmRlZmF1bHRUYXJnZXQpLGU9ci4kZGVmc3x8ci5kZWZpbml0aW9uc3x8e30saT17dmVyc2lvbjpvLGRlZnM6ZSxyZWZzOm5ldyBNYXAscHJvY2Vzc2luZzpuZXcgU2V0LHJvb3RTY2hlbWE6cixyZWdpc3RyeTpuPy5yZWdpc3RyeT8/cmV9O3JldHVybiBRKHIsaSl9ZnVuY3Rpb24gR2codCl7cmV0dXJuIGJsKGV0LHQpfWZ1bmN0aW9uIFhnKHQpe3JldHVybiB4bChudCx0KX1mdW5jdGlvbiBZZyh0KXtyZXR1cm4gTmwocnQsdCl9ZnVuY3Rpb24gUWcodCl7cmV0dXJuIFpsKGl0LHQpfWZ1bmN0aW9uIGV2KHQpe3JldHVybiBLbCh1bix0KX1jb25zdCBlbT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYmlnaW50OlFnLGJvb2xlYW46WWcsZGF0ZTpldixudW1iZXI6WGcsc3RyaW5nOkdnfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpO1YoZ2woKSk7Y29uc3Qgd3M9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDppaSwkaW5wdXQ6RWksJG91dHB1dDpOaSxORVZFUjpyaSxUaW1lUHJlY2lzaW9uOm5vLFpvZEFueTpjcixab2RBcnJheTptcixab2RCYXNlNjQ6bm4sWm9kQmFzZTY0VVJMOnJuLFpvZEJpZ0ludDppdCxab2RCaWdJbnRGb3JtYXQ6c24sWm9kQm9vbGVhbjpydCxab2RDSURSdjQ6ZW4sWm9kQ0lEUnY2OnRuLFpvZENVSUQ6S3QsWm9kQ1VJRDI6QnQsWm9kQ2F0Y2g6T3IsWm9kQ29kZWM6dXQsWm9kQ3VzdG9tOmx0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpaZSxab2REYXRlOnVuLFpvZERlZmF1bHQ6enIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmZyLFpvZEUxNjQ6b24sWm9kRW1haWw6SnQsWm9kRW1vamk6SHQsWm9kRW51bTpPZSxab2RFcnJvcjpCZCxab2RFeGFjdE9wdGlvbmFsOlNyLFpvZEZpbGU6eXIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBObn0sWm9kRnVuY3Rpb246cXIsWm9kR1VJRDpWZSxab2RJUHY0Oll0LFpvZElQdjY6UXQsWm9kSVNPRGF0ZTp0cixab2RJU09EYXRlVGltZTplcixab2RJU09EdXJhdGlvbjpycixab2RJU09UaW1lOm5yLFpvZEludGVyc2VjdGlvbjpncixab2RJc3N1ZUNvZGU6V2QsWm9kSldUOmFuLFpvZEtTVUlEOlh0LFpvZExhenk6QXIsWm9kTGl0ZXJhbDpicixab2RNQUM6aXIsWm9kTWFwOiRyLFpvZE5hTjpOcixab2ROYW5vSUQ6VnQsWm9kTmV2ZXI6bHIsWm9kTm9uT3B0aW9uYWw6cG4sWm9kTnVsbDpzcixab2ROdWxsYWJsZTpJcixab2ROdW1iZXI6bnQsWm9kTnVtYmVyRm9ybWF0OmtlLFpvZE9iamVjdDpvdCxab2RPcHRpb25hbDptbixab2RQaXBlOmN0LFpvZFByZWZhdWx0OlRyLFpvZFByZXByb2Nlc3M6RXIsWm9kUHJvbWlzZTpNcixab2RSZWFkb25seTpacixab2RSZWFsRXJyb3I6bmUsWm9kUmVjb3JkOlBlLFpvZFNldDpfcixab2RTdHJpbmc6ZXQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2VzczpQcixab2RTeW1ib2w6b3IsWm9kVGVtcGxhdGVMaXRlcmFsOkNyLFpvZFRyYW5zZm9ybTprcixab2RUdXBsZTp2cixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6dHQsWm9kVVVJRDptZSxab2RVbmRlZmluZWQ6YXIsWm9kVW5pb246YXQsWm9kVW5rbm93bjp1cixab2RWb2lkOmRyLFpvZFhJRDpHdCxab2RYb3I6cHIsX1pvZFN0cmluZzpGdCxfZGVmYXVsdDp4cixfZnVuY3Rpb246V2UsYW55OmlhLGFycmF5OncsYmFzZTY0OnFvLGJhc2U2NHVybDpGbyxiaWdpbnQ6ZWEsYm9vbGVhbjpELGNhdGNoOkRyLGNoZWNrOlNhLGNpZHJ2NDpMbyxjaWRydjY6TW8sY2xvbmU6YWUsY29kZWM6X2EsY29lcmNlOmVtLGNvbmZpZzpWLGNvcmU6cWQsY3VpZDpPbyxjdWlkMjpEbyxjdXN0b206RnIsZGF0ZTphYSxkZWNvZGU6Z28sZGVjb2RlQXN5bmM6aG8sZGVzY3JpYmU6d2EsZGlzY3JpbWluYXRlZFVuaW9uOmxuLGUxNjQ6Sm8sZW1haWw6a28sZW1vamk6VW8sZW5jb2RlOmZvLGVuY29kZUFzeW5jOnZvLGVuZHNXaXRoOk50LGVudW06RyxleGFjdE9wdGlvbmFsOndyLGZpbGU6Z2EsZmxhdHRlbkVycm9yOkZuLGZsb2F0MzI6R28sZmxvYXQ2NDpYbyxmb3JtYXRFcnJvcjpKbixmcm9tSlNPTlNjaGVtYTpRZCxmdW5jdGlvbjpXZSxnZXRFcnJvck1hcDpYZCxnbG9iYWxSZWdpc3RyeTpyZSxndDokZSxndGU6dGUsZ3VpZDpTbyxoYXNoOldvLGhleDpCbyxob3N0bmFtZTpLbyxodHRwVXJsOmpvLGluY2x1ZGVzOk90LGluc3RhbmNlb2Y6emEsaW50Omh0LGludDMyOllvLGludDY0OnRhLGludGVyc2VjdGlvbjpzdCxpbnZlcnRDb2RlYzpiYSxpcHY0OlJvLGlwdjY6QW8saXNvOmNvLGpzb246VGEsand0OkhvLGtleW9mOnNhLGtzdWlkOlpvLGxhenk6THIsbGVuZ3RoOlFlLGxpdGVyYWw6bSxsb2NhbGVzOkRpLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6ZGEsbG93ZXJjYXNlOlV0LGx0OmhlLGx0ZTppZSxtYWM6Q28sbWFwOm1hLG1heExlbmd0aDpZZSxtYXhTaXplOkVlLG1ldGE6SWEsbWltZTpFdCxtaW5MZW5ndGg6YmUsbWluU2l6ZTpfZSxtdWx0aXBsZU9mOmplLG5hbjokYSxuYW5vaWQ6UG8sbmF0aXZlRW51bTpmYSxuZWdhdGl2ZTpHbixuZXZlcjpVZSxub25uZWdhdGl2ZTpZbixub25vcHRpb25hbDpVcixub25wb3NpdGl2ZTpYbixub3JtYWxpemU6WnQsbnVsbDpjbixudWxsYWJsZTpCZSxudWxsaXNoOnZhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOmdlLHBhcnNlOnVvLHBhcnNlQXN5bmM6bG8scGFydGlhbFJlY29yZDpsYSxwaXBlOiR0LHBvc2l0aXZlOlduLHByZWZhdWx0OmpyLHByZXByb2Nlc3M6Zm4scHJldHRpZnlFcnJvcjpsaSxwcm9taXNlOmthLHByb3BlcnR5OlFuLHJlYWRvbmx5OlJyLHJlY29yZDpVLHJlZmluZTpKcixyZWdleDpqdCxyZWdleGVzOkhuLHJlZ2lzdHJ5OktuLHNhZmVEZWNvZGU6X28sc2FmZURlY29kZUFzeW5jOnlvLHNhZmVFbmNvZGU6JG8sc2FmZUVuY29kZUFzeW5jOmJvLHNhZmVQYXJzZTptbyxzYWZlUGFyc2VBc3luYzpwbyxzZXQ6cGEsc2V0RXJyb3JNYXA6R2Qsc2l6ZTpYZSxzbHVnaWZ5Okx0LHN0YXJ0c1dpdGg6RHQsc3RyaWN0T2JqZWN0OmNhLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpWbyxzdHJpbmdib29sOnhhLHN1Y2Nlc3M6aGEsc3VwZXJSZWZpbmU6SHIsc3ltYm9sOnJhLHRlbXBsYXRlTGl0ZXJhbDp5YSx0b0pTT05TY2hlbWE6b28sdG9Mb3dlckNhc2U6Q3QsdG9VcHBlckNhc2U6QXQsdHJhbnNmb3JtOmRuLHRyZWVpZnlFcnJvcjp1aSx0cmltOlJ0LHR1cGxlOmhyLHVpbnQzMjpRbyx1aW50NjQ6bmEsdWxpZDpObyx1bmRlZmluZWQ6S2UsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOlB0LHVybDpUbyx1dGlsOnNpLHV1aWQ6d28sdXVpZHY0OklvLHV1aWR2Njp6byx1dWlkdjc6eG8sdm9pZDpvYSx4aWQ6RW8seG9yOnVhfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHR2PU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCwkYnJhbmQ6aWksJGlucHV0OkVpLCRvdXRwdXQ6TmksTkVWRVI6cmksVGltZVByZWNpc2lvbjpubyxab2RBbnk6Y3IsWm9kQXJyYXk6bXIsWm9kQmFzZTY0Om5uLFpvZEJhc2U2NFVSTDpybixab2RCaWdJbnQ6aXQsWm9kQmlnSW50Rm9ybWF0OnNuLFpvZEJvb2xlYW46cnQsWm9kQ0lEUnY0OmVuLFpvZENJRFJ2Njp0bixab2RDVUlEOkt0LFpvZENVSUQyOkJ0LFpvZENhdGNoOk9yLFpvZENvZGVjOnV0LFpvZEN1c3RvbTpsdCxab2RDdXN0b21TdHJpbmdGb3JtYXQ6WmUsWm9kRGF0ZTp1bixab2REZWZhdWx0OnpyLFpvZERpc2NyaW1pbmF0ZWRVbmlvbjpmcixab2RFMTY0Om9uLFpvZEVtYWlsOkp0LFpvZEVtb2ppOkh0LFpvZEVudW06T2UsWm9kRXJyb3I6QmQsWm9kRXhhY3RPcHRpb25hbDpTcixab2RGaWxlOnlyLGdldCBab2RGaXJzdFBhcnR5VHlwZUtpbmQoKXtyZXR1cm4gTm59LFpvZEZ1bmN0aW9uOnFyLFpvZEdVSUQ6VmUsWm9kSVB2NDpZdCxab2RJUHY2OlF0LFpvZElTT0RhdGU6dHIsWm9kSVNPRGF0ZVRpbWU6ZXIsWm9kSVNPRHVyYXRpb246cnIsWm9kSVNPVGltZTpucixab2RJbnRlcnNlY3Rpb246Z3IsWm9kSXNzdWVDb2RlOldkLFpvZEpXVDphbixab2RLU1VJRDpYdCxab2RMYXp5OkFyLFpvZExpdGVyYWw6YnIsWm9kTUFDOmlyLFpvZE1hcDokcixab2ROYU46TnIsWm9kTmFub0lEOlZ0LFpvZE5ldmVyOmxyLFpvZE5vbk9wdGlvbmFsOnBuLFpvZE51bGw6c3IsWm9kTnVsbGFibGU6SXIsWm9kTnVtYmVyOm50LFpvZE51bWJlckZvcm1hdDprZSxab2RPYmplY3Q6b3QsWm9kT3B0aW9uYWw6bW4sWm9kUGlwZTpjdCxab2RQcmVmYXVsdDpUcixab2RQcmVwcm9jZXNzOkVyLFpvZFByb21pc2U6TXIsWm9kUmVhZG9ubHk6WnIsWm9kUmVhbEVycm9yOm5lLFpvZFJlY29yZDpQZSxab2RTZXQ6X3IsWm9kU3RyaW5nOmV0LFpvZFN0cmluZ0Zvcm1hdDpaLFpvZFN1Y2Nlc3M6UHIsWm9kU3ltYm9sOm9yLFpvZFRlbXBsYXRlTGl0ZXJhbDpDcixab2RUcmFuc2Zvcm06a3IsWm9kVHVwbGU6dnIsWm9kVHlwZTp4LFpvZFVMSUQ6V3QsWm9kVVJMOnR0LFpvZFVVSUQ6bWUsWm9kVW5kZWZpbmVkOmFyLFpvZFVuaW9uOmF0LFpvZFVua25vd246dXIsWm9kVm9pZDpkcixab2RYSUQ6R3QsWm9kWG9yOnByLF9ab2RTdHJpbmc6RnQsX2RlZmF1bHQ6eHIsX2Z1bmN0aW9uOldlLGFueTppYSxhcnJheTp3LGJhc2U2NDpxbyxiYXNlNjR1cmw6Rm8sYmlnaW50OmVhLGJvb2xlYW46RCxjYXRjaDpEcixjaGVjazpTYSxjaWRydjQ6TG8sY2lkcnY2Ok1vLGNsb25lOmFlLGNvZGVjOl9hLGNvZXJjZTplbSxjb25maWc6Vixjb3JlOnFkLGN1aWQ6T28sY3VpZDI6RG8sY3VzdG9tOkZyLGRhdGU6YWEsZGVjb2RlOmdvLGRlY29kZUFzeW5jOmhvLGRlZmF1bHQ6d3MsZGVzY3JpYmU6d2EsZGlzY3JpbWluYXRlZFVuaW9uOmxuLGUxNjQ6Sm8sZW1haWw6a28sZW1vamk6VW8sZW5jb2RlOmZvLGVuY29kZUFzeW5jOnZvLGVuZHNXaXRoOk50LGVudW06RyxleGFjdE9wdGlvbmFsOndyLGZpbGU6Z2EsZmxhdHRlbkVycm9yOkZuLGZsb2F0MzI6R28sZmxvYXQ2NDpYbyxmb3JtYXRFcnJvcjpKbixmcm9tSlNPTlNjaGVtYTpRZCxmdW5jdGlvbjpXZSxnZXRFcnJvck1hcDpYZCxnbG9iYWxSZWdpc3RyeTpyZSxndDokZSxndGU6dGUsZ3VpZDpTbyxoYXNoOldvLGhleDpCbyxob3N0bmFtZTpLbyxodHRwVXJsOmpvLGluY2x1ZGVzOk90LGluc3RhbmNlb2Y6emEsaW50Omh0LGludDMyOllvLGludDY0OnRhLGludGVyc2VjdGlvbjpzdCxpbnZlcnRDb2RlYzpiYSxpcHY0OlJvLGlwdjY6QW8saXNvOmNvLGpzb246VGEsand0OkhvLGtleW9mOnNhLGtzdWlkOlpvLGxhenk6THIsbGVuZ3RoOlFlLGxpdGVyYWw6bSxsb2NhbGVzOkRpLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6ZGEsbG93ZXJjYXNlOlV0LGx0OmhlLGx0ZTppZSxtYWM6Q28sbWFwOm1hLG1heExlbmd0aDpZZSxtYXhTaXplOkVlLG1ldGE6SWEsbWltZTpFdCxtaW5MZW5ndGg6YmUsbWluU2l6ZTpfZSxtdWx0aXBsZU9mOmplLG5hbjokYSxuYW5vaWQ6UG8sbmF0aXZlRW51bTpmYSxuZWdhdGl2ZTpHbixuZXZlcjpVZSxub25uZWdhdGl2ZTpZbixub25vcHRpb25hbDpVcixub25wb3NpdGl2ZTpYbixub3JtYWxpemU6WnQsbnVsbDpjbixudWxsYWJsZTpCZSxudWxsaXNoOnZhLG51bWJlcjp6LG9iamVjdDpmLG9wdGlvbmFsOkEsb3ZlcndyaXRlOmdlLHBhcnNlOnVvLHBhcnNlQXN5bmM6bG8scGFydGlhbFJlY29yZDpsYSxwaXBlOiR0LHBvc2l0aXZlOlduLHByZWZhdWx0OmpyLHByZXByb2Nlc3M6Zm4scHJldHRpZnlFcnJvcjpsaSxwcm9taXNlOmthLHByb3BlcnR5OlFuLHJlYWRvbmx5OlJyLHJlY29yZDpVLHJlZmluZTpKcixyZWdleDpqdCxyZWdleGVzOkhuLHJlZ2lzdHJ5OktuLHNhZmVEZWNvZGU6X28sc2FmZURlY29kZUFzeW5jOnlvLHNhZmVFbmNvZGU6JG8sc2FmZUVuY29kZUFzeW5jOmJvLHNhZmVQYXJzZTptbyxzYWZlUGFyc2VBc3luYzpwbyxzZXQ6cGEsc2V0RXJyb3JNYXA6R2Qsc2l6ZTpYZSxzbHVnaWZ5Okx0LHN0YXJ0c1dpdGg6RHQsc3RyaWN0T2JqZWN0OmNhLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpWbyxzdHJpbmdib29sOnhhLHN1Y2Nlc3M6aGEsc3VwZXJSZWZpbmU6SHIsc3ltYm9sOnJhLHRlbXBsYXRlTGl0ZXJhbDp5YSx0b0pTT05TY2hlbWE6b28sdG9Mb3dlckNhc2U6Q3QsdG9VcHBlckNhc2U6QXQsdHJhbnNmb3JtOmRuLHRyZWVpZnlFcnJvcjp1aSx0cmltOlJ0LHR1cGxlOmhyLHVpbnQzMjpRbyx1aW50NjQ6bmEsdWxpZDpObyx1bmRlZmluZWQ6S2UsdW5pb246aix1bmtub3duOk8sdXBwZXJjYXNlOlB0LHVybDpUbyx1dGlsOnNpLHV1aWQ6d28sdXVpZHY0OklvLHV1aWR2Njp6byx1dWlkdjc6eG8sdm9pZDpvYSx4aWQ6RW8seG9yOnVhLHo6d3N9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksd2U9ImlvLm1vZGVsY29udGV4dHByb3RvY29sL3JlbGF0ZWQtdGFzayIsVnI9IjIuMCIsSD1Gcih0PT50IT09bnVsbCYmKHR5cGVvZiB0PT0ib2JqZWN0Inx8dHlwZW9mIHQ9PSJmdW5jdGlvbiIpKSx0bT1qKFtwKCkseigpLmludCgpXSksbm09cCgpO1coe3R0bDp6KCkub3B0aW9uYWwoKSxwb2xsSW50ZXJ2YWw6eigpLm9wdGlvbmFsKCl9KTtjb25zdCBudj1mKHt0dGw6eigpLm9wdGlvbmFsKCl9KSxydj1mKHt0YXNrSWQ6cCgpfSksamE9Vyh7cHJvZ3Jlc3NUb2tlbjp0bS5vcHRpb25hbCgpLFt3ZV06cnYub3B0aW9uYWwoKX0pLGNlPWYoe19tZXRhOmphLm9wdGlvbmFsKCl9KSxnbj1jZS5leHRlbmQoe3Rhc2s6bnYub3B0aW9uYWwoKX0pLGl2PXQ9PmduLnNhZmVQYXJzZSh0KS5zdWNjZXNzLFg9Zih7bWV0aG9kOnAoKSxwYXJhbXM6Y2UubG9vc2UoKS5vcHRpb25hbCgpfSksbGU9Zih7X21ldGE6amEub3B0aW9uYWwoKX0pLGRlPWYoe21ldGhvZDpwKCkscGFyYW1zOmxlLmxvb3NlKCkub3B0aW9uYWwoKX0pLFk9Vyh7X21ldGE6amEub3B0aW9uYWwoKX0pLHZuPWooW3AoKSx6KCkuaW50KCldKSxybT1mKHtqc29ucnBjOm0oVnIpLGlkOnZuLC4uLlguc2hhcGV9KS5zdHJpY3QoKSxJcz10PT5ybS5zYWZlUGFyc2UodCkuc3VjY2VzcyxpbT1mKHtqc29ucnBjOm0oVnIpLC4uLmRlLnNoYXBlfSkuc3RyaWN0KCksb3Y9dD0+aW0uc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsVWE9Zih7anNvbnJwYzptKFZyKSxpZDp2bixyZXN1bHQ6WX0pLnN0cmljdCgpLHpuPXQ9PlVhLnNhZmVQYXJzZSh0KS5zdWNjZXNzO3ZhciBOOyhmdW5jdGlvbih0KXt0W3QuQ29ubmVjdGlvbkNsb3NlZD0tMzJlM109IkNvbm5lY3Rpb25DbG9zZWQiLHRbdC5SZXF1ZXN0VGltZW91dD0tMzIwMDFdPSJSZXF1ZXN0VGltZW91dCIsdFt0LlBhcnNlRXJyb3I9LTMyNzAwXT0iUGFyc2VFcnJvciIsdFt0LkludmFsaWRSZXF1ZXN0PS0zMjYwMF09IkludmFsaWRSZXF1ZXN0Iix0W3QuTWV0aG9kTm90Rm91bmQ9LTMyNjAxXT0iTWV0aG9kTm90Rm91bmQiLHRbdC5JbnZhbGlkUGFyYW1zPS0zMjYwMl09IkludmFsaWRQYXJhbXMiLHRbdC5JbnRlcm5hbEVycm9yPS0zMjYwM109IkludGVybmFsRXJyb3IiLHRbdC5VcmxFbGljaXRhdGlvblJlcXVpcmVkPS0zMjA0Ml09IlVybEVsaWNpdGF0aW9uUmVxdWlyZWQifSkoTnx8KE49e30pKTtjb25zdCBQYT1mKHtqc29ucnBjOm0oVnIpLGlkOnZuLm9wdGlvbmFsKCksZXJyb3I6Zih7Y29kZTp6KCkuaW50KCksbWVzc2FnZTpwKCksZGF0YTpPKCkub3B0aW9uYWwoKX0pfSkuc3RyaWN0KCksYXY9dD0+UGEuc2FmZVBhcnNlKHQpLnN1Y2Nlc3Msc3Y9aihbcm0saW0sVWEsUGFdKTtqKFtVYSxQYV0pO2NvbnN0IE9hPVkuc3RyaWN0KCksY3Y9bGUuZXh0ZW5kKHtyZXF1ZXN0SWQ6dm4ub3B0aW9uYWwoKSxyZWFzb246cCgpLm9wdGlvbmFsKCl9KSxEYT1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2NhbmNlbGxlZCIpLHBhcmFtczpjdn0pLHV2PWYoe3NyYzpwKCksbWltZVR5cGU6cCgpLm9wdGlvbmFsKCksc2l6ZXM6dyhwKCkpLm9wdGlvbmFsKCksdGhlbWU6RyhbImxpZ2h0IiwiZGFyayJdKS5vcHRpb25hbCgpfSksaG49Zih7aWNvbnM6dyh1dikub3B0aW9uYWwoKX0pLEdlPWYoe25hbWU6cCgpLHRpdGxlOnAoKS5vcHRpb25hbCgpfSksS3I9R2UuZXh0ZW5kKHsuLi5HZS5zaGFwZSwuLi5obi5zaGFwZSx2ZXJzaW9uOnAoKSx3ZWJzaXRlVXJsOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpfSksbHY9c3QoZih7YXBwbHlEZWZhdWx0czpEKCkub3B0aW9uYWwoKX0pLFUocCgpLE8oKSkpLGR2PWZuKHQ9PnQmJnR5cGVvZiB0PT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkodCkmJk9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTA/e2Zvcm06e319OnQsc3QoZih7Zm9ybTpsdi5vcHRpb25hbCgpLHVybDpILm9wdGlvbmFsKCl9KSxVKHAoKSxPKCkpLm9wdGlvbmFsKCkpKSxtdj1XKHtsaXN0Okgub3B0aW9uYWwoKSxjYW5jZWw6SC5vcHRpb25hbCgpLHJlcXVlc3RzOlcoe3NhbXBsaW5nOlcoe2NyZWF0ZU1lc3NhZ2U6SC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSxlbGljaXRhdGlvbjpXKHtjcmVhdGU6SC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxwdj1XKHtsaXN0Okgub3B0aW9uYWwoKSxjYW5jZWw6SC5vcHRpb25hbCgpLHJlcXVlc3RzOlcoe3Rvb2xzOlcoe2NhbGw6SC5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxmdj1mKHtleHBlcmltZW50YWw6VShwKCksSCkub3B0aW9uYWwoKSxzYW1wbGluZzpmKHtjb250ZXh0Okgub3B0aW9uYWwoKSx0b29sczpILm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOmR2Lm9wdGlvbmFsKCkscm9vdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOm12Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpVKHAoKSxIKS5vcHRpb25hbCgpfSksZ3Y9Y2UuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczpmdixjbGllbnRJbmZvOktyfSksdnY9WC5leHRlbmQoe21ldGhvZDptKCJpbml0aWFsaXplIikscGFyYW1zOmd2fSksaHY9Zih7ZXhwZXJpbWVudGFsOlUocCgpLEgpLm9wdGlvbmFsKCksbG9nZ2luZzpILm9wdGlvbmFsKCksY29tcGxldGlvbnM6SC5vcHRpb25hbCgpLHByb21wdHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHJlc291cmNlczpmKHtzdWJzY3JpYmU6RCgpLm9wdGlvbmFsKCksbGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKSx0YXNrczpwdi5vcHRpb25hbCgpLGV4dGVuc2lvbnM6VShwKCksSCkub3B0aW9uYWwoKX0pLCR2PVkuZXh0ZW5kKHtwcm90b2NvbFZlcnNpb246cCgpLGNhcGFiaWxpdGllczpodixzZXJ2ZXJJbmZvOktyLGluc3RydWN0aW9uczpwKCkub3B0aW9uYWwoKX0pLF92PWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6bGUub3B0aW9uYWwoKX0pLEJyPVguZXh0ZW5kKHttZXRob2Q6bSgicGluZyIpLHBhcmFtczpjZS5vcHRpb25hbCgpfSksYnY9Zih7cHJvZ3Jlc3M6eigpLHRvdGFsOkEoeigpKSxtZXNzYWdlOkEocCgpKX0pLHl2PWYoey4uLmxlLnNoYXBlLC4uLmJ2LnNoYXBlLHByb2dyZXNzVG9rZW46dG19KSxOYT1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb2dyZXNzIikscGFyYW1zOnl2fSksa3Y9Y2UuZXh0ZW5kKHtjdXJzb3I6bm0ub3B0aW9uYWwoKX0pLCRuPVguZXh0ZW5kKHtwYXJhbXM6a3Yub3B0aW9uYWwoKX0pLF9uPVkuZXh0ZW5kKHtuZXh0Q3Vyc29yOm5tLm9wdGlvbmFsKCl9KSxTdj1HKFsid29ya2luZyIsImlucHV0X3JlcXVpcmVkIiwiY29tcGxldGVkIiwiZmFpbGVkIiwiY2FuY2VsbGVkIl0pLGJuPWYoe3Rhc2tJZDpwKCksc3RhdHVzOlN2LHR0bDpqKFt6KCksY24oKV0pLGNyZWF0ZWRBdDpwKCksbGFzdFVwZGF0ZWRBdDpwKCkscG9sbEludGVydmFsOkEoeigpKSxzdGF0dXNNZXNzYWdlOkEocCgpKX0pLEVhPVkuZXh0ZW5kKHt0YXNrOmJufSksd3Y9bGUubWVyZ2UoYm4pLEVuPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIikscGFyYW1zOnd2fSksWmE9WC5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9nZXQiKSxwYXJhbXM6Y2UuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxSYT1ZLm1lcmdlKGJuKSxDYT1YLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL3Jlc3VsdCIpLHBhcmFtczpjZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pO1kubG9vc2UoKTtjb25zdCBBYT0kbi5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9saXN0Iil9KSxMYT1fbi5leHRlbmQoe3Rhc2tzOncoYm4pfSksTWE9WC5leHRlbmQoe21ldGhvZDptKCJ0YXNrcy9jYW5jZWwiKSxwYXJhbXM6Y2UuZXh0ZW5kKHt0YXNrSWQ6cCgpfSl9KSxJdj1ZLm1lcmdlKGJuKSxvbT1mKHt1cmk6cCgpLG1pbWVUeXBlOkEocCgpKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxhbT1vbS5leHRlbmQoe3RleHQ6cCgpfSkscWE9cCgpLnJlZmluZSh0PT57dHJ5e3JldHVybiBhdG9iKHQpLCEwfWNhdGNoe3JldHVybiExfX0se21lc3NhZ2U6IkludmFsaWQgQmFzZTY0IHN0cmluZyJ9KSxzbT1vbS5leHRlbmQoe2Jsb2I6cWF9KSx5bj1HKFsidXNlciIsImFzc2lzdGFudCJdKSxkdD1mKHthdWRpZW5jZTp3KHluKS5vcHRpb25hbCgpLHByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksbGFzdE1vZGlmaWVkOnNvKHtvZmZzZXQ6ITB9KS5vcHRpb25hbCgpfSksY209Zih7Li4uR2Uuc2hhcGUsLi4uaG4uc2hhcGUsdXJpOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSksbWltZVR5cGU6QShwKCkpLHNpemU6QSh6KCkpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6QShXKHt9KSl9KSx6dj1mKHsuLi5HZS5zaGFwZSwuLi5obi5zaGFwZSx1cmlUZW1wbGF0ZTpwKCksZGVzY3JpcHRpb246QShwKCkpLG1pbWVUeXBlOkEocCgpKSxhbm5vdGF0aW9uczpkdC5vcHRpb25hbCgpLF9tZXRhOkEoVyh7fSkpfSkseHY9JG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL2xpc3QiKX0pLHVtPV9uLmV4dGVuZCh7cmVzb3VyY2VzOncoY20pfSksVHY9JG4uZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0Iil9KSxqdj1fbi5leHRlbmQoe3Jlc291cmNlVGVtcGxhdGVzOncoenYpfSksRmE9Y2UuZXh0ZW5kKHt1cmk6cCgpfSksVXY9RmEsUHY9WC5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvcmVhZCIpLHBhcmFtczpVdn0pLGxtPVkuZXh0ZW5kKHtjb250ZW50czp3KGooW2FtLHNtXSkpfSksT3Y9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmxlLm9wdGlvbmFsKCl9KSxEdj1GYSxOdj1YLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9zdWJzY3JpYmUiKSxwYXJhbXM6RHZ9KSxFdj1GYSxadj1YLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy91bnN1YnNjcmliZSIpLHBhcmFtczpFdn0pLFJ2PWxlLmV4dGVuZCh7dXJpOnAoKX0pLEN2PWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcmVzb3VyY2VzL3VwZGF0ZWQiKSxwYXJhbXM6UnZ9KSxBdj1mKHtuYW1lOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSkscmVxdWlyZWQ6QShEKCkpfSksTHY9Zih7Li4uR2Uuc2hhcGUsLi4uaG4uc2hhcGUsZGVzY3JpcHRpb246QShwKCkpLGFyZ3VtZW50czpBKHcoQXYpKSxfbWV0YTpBKFcoe30pKX0pLE12PSRuLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvbGlzdCIpfSkscXY9X24uZXh0ZW5kKHtwcm9tcHRzOncoTHYpfSksRnY9Y2UuZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCkscCgpKS5vcHRpb25hbCgpfSksSnY9WC5leHRlbmQoe21ldGhvZDptKCJwcm9tcHRzL2dldCIpLHBhcmFtczpGdn0pLEphPWYoe3R5cGU6bSgidGV4dCIpLHRleHQ6cCgpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksSGE9Zih7dHlwZTptKCJpbWFnZSIpLGRhdGE6cWEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksVmE9Zih7dHlwZTptKCJhdWRpbyIpLGRhdGE6cWEsbWltZVR5cGU6cCgpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksSHY9Zih7dHlwZTptKCJ0b29sX3VzZSIpLG5hbWU6cCgpLGlkOnAoKSxpbnB1dDpVKHAoKSxPKCkpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLGRtPWYoe3R5cGU6bSgicmVzb3VyY2UiKSxyZXNvdXJjZTpqKFthbSxzbV0pLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksbW09Y20uZXh0ZW5kKHt0eXBlOm0oInJlc291cmNlX2xpbmsiKX0pLGtuPWooW0phLEhhLFZhLG1tLGRtXSksVnY9Zih7cm9sZTp5bixjb250ZW50OmtufSksS3Y9WS5leHRlbmQoe2Rlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1lc3NhZ2VzOncoVnYpfSksQnY9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9wcm9tcHRzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSksV3Y9Zih7dGl0bGU6cCgpLm9wdGlvbmFsKCkscmVhZE9ubHlIaW50OkQoKS5vcHRpb25hbCgpLGRlc3RydWN0aXZlSGludDpEKCkub3B0aW9uYWwoKSxpZGVtcG90ZW50SGludDpEKCkub3B0aW9uYWwoKSxvcGVuV29ybGRIaW50OkQoKS5vcHRpb25hbCgpfSksR3Y9Zih7dGFza1N1cHBvcnQ6RyhbInJlcXVpcmVkIiwib3B0aW9uYWwiLCJmb3JiaWRkZW4iXSkub3B0aW9uYWwoKX0pLEthPWYoey4uLkdlLnNoYXBlLC4uLmhuLnNoYXBlLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGlucHV0U2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxIKS5vcHRpb25hbCgpLHJlcXVpcmVkOncocCgpKS5vcHRpb25hbCgpfSkuY2F0Y2hhbGwoTygpKSxvdXRwdXRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLEgpLm9wdGlvbmFsKCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChPKCkpLm9wdGlvbmFsKCksYW5ub3RhdGlvbnM6V3Yub3B0aW9uYWwoKSxleGVjdXRpb246R3Yub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxwbT0kbi5leHRlbmQoe21ldGhvZDptKCJ0b29scy9saXN0Iil9KSxYdj1fbi5leHRlbmQoe3Rvb2xzOncoS2EpfSksV3I9WS5leHRlbmQoe2NvbnRlbnQ6dyhrbikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6VShwKCksTygpKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCl9KTtXci5vcihZLmV4dGVuZCh7dG9vbFJlc3VsdDpPKCl9KSk7Y29uc3QgWXY9Z24uZXh0ZW5kKHtuYW1lOnAoKSxhcmd1bWVudHM6VShwKCksTygpKS5vcHRpb25hbCgpfSksZm09WC5leHRlbmQoe21ldGhvZDptKCJ0b29scy9jYWxsIikscGFyYW1zOll2fSksUXY9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6bGUub3B0aW9uYWwoKX0pO2Yoe2F1dG9SZWZyZXNoOkQoKS5kZWZhdWx0KCEwKSxkZWJvdW5jZU1zOnooKS5pbnQoKS5ub25uZWdhdGl2ZSgpLmRlZmF1bHQoMzAwKX0pO2NvbnN0IGdtPUcoWyJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJjcml0aWNhbCIsImFsZXJ0IiwiZW1lcmdlbmN5Il0pLGVoPWNlLmV4dGVuZCh7bGV2ZWw6Z219KSx0aD1YLmV4dGVuZCh7bWV0aG9kOm0oImxvZ2dpbmcvc2V0TGV2ZWwiKSxwYXJhbXM6ZWh9KSxuaD1sZS5leHRlbmQoe2xldmVsOmdtLGxvZ2dlcjpwKCkub3B0aW9uYWwoKSxkYXRhOk8oKX0pLHJoPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvbWVzc2FnZSIpLHBhcmFtczpuaH0pLGloPWYoe25hbWU6cCgpLm9wdGlvbmFsKCl9KSxvaD1mKHtoaW50czp3KGloKS5vcHRpb25hbCgpLGNvc3RQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLHNwZWVkUHJpb3JpdHk6eigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxpbnRlbGxpZ2VuY2VQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpfSksYWg9Zih7bW9kZTpHKFsiYXV0byIsInJlcXVpcmVkIiwibm9uZSJdKS5vcHRpb25hbCgpfSksc2g9Zih7dHlwZTptKCJ0b29sX3Jlc3VsdCIpLHRvb2xVc2VJZDpwKCkuZGVzY3JpYmUoIlRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdG9vbCBjYWxsLiIpLGNvbnRlbnQ6dyhrbikuZGVmYXVsdChbXSksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkubG9vc2UoKS5vcHRpb25hbCgpLGlzRXJyb3I6RCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksY2g9bG4oInR5cGUiLFtKYSxIYSxWYV0pLFpuPWxuKCJ0eXBlIixbSmEsSGEsVmEsSHYsc2hdKSx1aD1mKHtyb2xlOnluLGNvbnRlbnQ6aihbWm4sdyhabildKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxsaD1nbi5leHRlbmQoe21lc3NhZ2VzOncodWgpLG1vZGVsUHJlZmVyZW5jZXM6b2gub3B0aW9uYWwoKSxzeXN0ZW1Qcm9tcHQ6cCgpLm9wdGlvbmFsKCksaW5jbHVkZUNvbnRleHQ6RyhbIm5vbmUiLCJ0aGlzU2VydmVyIiwiYWxsU2VydmVycyJdKS5vcHRpb25hbCgpLHRlbXBlcmF0dXJlOnooKS5vcHRpb25hbCgpLG1heFRva2Vuczp6KCkuaW50KCksc3RvcFNlcXVlbmNlczp3KHAoKSkub3B0aW9uYWwoKSxtZXRhZGF0YTpILm9wdGlvbmFsKCksdG9vbHM6dyhLYSkub3B0aW9uYWwoKSx0b29sQ2hvaWNlOmFoLm9wdGlvbmFsKCl9KSxkaD1YLmV4dGVuZCh7bWV0aG9kOm0oInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiKSxwYXJhbXM6bGh9KSx2bT1ZLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShHKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyJdKS5vcihwKCkpKSxyb2xlOnluLGNvbnRlbnQ6Y2h9KSxobT1ZLmV4dGVuZCh7bW9kZWw6cCgpLHN0b3BSZWFzb246QShHKFsiZW5kVHVybiIsInN0b3BTZXF1ZW5jZSIsIm1heFRva2VucyIsInRvb2xVc2UiXSkub3IocCgpKSkscm9sZTp5bixjb250ZW50OmooW1puLHcoWm4pXSl9KSxtaD1mKHt0eXBlOm0oImJvb2xlYW4iKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxkZWZhdWx0OkQoKS5vcHRpb25hbCgpfSkscGg9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5MZW5ndGg6eigpLm9wdGlvbmFsKCksbWF4TGVuZ3RoOnooKS5vcHRpb25hbCgpLGZvcm1hdDpHKFsiZW1haWwiLCJ1cmkiLCJkYXRlIiwiZGF0ZS10aW1lIl0pLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLGZoPWYoe3R5cGU6RyhbIm51bWJlciIsImludGVnZXIiXSksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluaW11bTp6KCkub3B0aW9uYWwoKSxtYXhpbXVtOnooKS5vcHRpb25hbCgpLGRlZmF1bHQ6eigpLm9wdGlvbmFsKCl9KSxnaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSx2aD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG9uZU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksaGg9Zih7dHlwZTptKCJzdHJpbmciKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxlbnVtOncocCgpKSxlbnVtTmFtZXM6dyhwKCkpLm9wdGlvbmFsKCksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLCRoPWooW2doLHZoXSksX2g9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe3R5cGU6bSgic3RyaW5nIiksZW51bTp3KHAoKSl9KSxkZWZhdWx0OncocCgpKS5vcHRpb25hbCgpfSksYmg9Zih7dHlwZTptKCJhcnJheSIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkl0ZW1zOnooKS5vcHRpb25hbCgpLG1heEl0ZW1zOnooKS5vcHRpb25hbCgpLGl0ZW1zOmYoe2FueU9mOncoZih7Y29uc3Q6cCgpLHRpdGxlOnAoKX0pKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSx5aD1qKFtfaCxiaF0pLGtoPWooW2hoLCRoLHloXSksU2g9aihba2gsbWgscGgsZmhdKSx3aD1nbi5leHRlbmQoe21vZGU6bSgiZm9ybSIpLm9wdGlvbmFsKCksbWVzc2FnZTpwKCkscmVxdWVzdGVkU2NoZW1hOmYoe3R5cGU6bSgib2JqZWN0IikscHJvcGVydGllczpVKHAoKSxTaCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KX0pLEloPWduLmV4dGVuZCh7bW9kZTptKCJ1cmwiKSxtZXNzYWdlOnAoKSxlbGljaXRhdGlvbklkOnAoKSx1cmw6cCgpLnVybCgpfSksemg9aihbd2gsSWhdKSx4aD1YLmV4dGVuZCh7bWV0aG9kOm0oImVsaWNpdGF0aW9uL2NyZWF0ZSIpLHBhcmFtczp6aH0pLFRoPWxlLmV4dGVuZCh7ZWxpY2l0YXRpb25JZDpwKCl9KSxqaD1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL2VsaWNpdGF0aW9uL2NvbXBsZXRlIikscGFyYW1zOlRofSksVWg9WS5leHRlbmQoe2FjdGlvbjpHKFsiYWNjZXB0IiwiZGVjbGluZSIsImNhbmNlbCJdKSxjb250ZW50OmZuKHQ9PnQ9PT1udWxsP3ZvaWQgMDp0LFUocCgpLGooW3AoKSx6KCksRCgpLHcocCgpKV0pKS5vcHRpb25hbCgpKX0pLFBoPWYoe3R5cGU6bSgicmVmL3Jlc291cmNlIiksdXJpOnAoKX0pLE9oPWYoe3R5cGU6bSgicmVmL3Byb21wdCIpLG5hbWU6cCgpfSksRGg9Y2UuZXh0ZW5kKHtyZWY6aihbT2gsUGhdKSxhcmd1bWVudDpmKHtuYW1lOnAoKSx2YWx1ZTpwKCl9KSxjb250ZXh0OmYoe2FyZ3VtZW50czpVKHAoKSxwKCkpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSksTmg9WC5leHRlbmQoe21ldGhvZDptKCJjb21wbGV0aW9uL2NvbXBsZXRlIikscGFyYW1zOkRofSksRWg9WS5leHRlbmQoe2NvbXBsZXRpb246Vyh7dmFsdWVzOncocCgpKS5tYXgoMTAwKSx0b3RhbDpBKHooKS5pbnQoKSksaGFzTW9yZTpBKEQoKSl9KX0pLFpoPWYoe3VyaTpwKCkuc3RhcnRzV2l0aCgiZmlsZTovLyIpLG5hbWU6cCgpLm9wdGlvbmFsKCksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksUmg9WC5leHRlbmQoe21ldGhvZDptKCJyb290cy9saXN0IikscGFyYW1zOmNlLm9wdGlvbmFsKCl9KSxDaD1ZLmV4dGVuZCh7cm9vdHM6dyhaaCl9KSxBaD1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Jvb3RzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSk7aihbQnIsdnYsTmgsdGgsSnYsTXYseHYsVHYsUHYsTnYsWnYsZm0scG0sWmEsQ2EsQWEsTWFdKTtqKFtEYSxOYSxfdixBaCxFbl0pO2ooW09hLHZtLGhtLFVoLENoLFJhLExhLEVhXSk7aihbQnIsZGgseGgsUmgsWmEsQ2EsQWEsTWFdKTtqKFtEYSxOYSxyaCxDdixPdixRdixCdixFbixqaF0pO2ooW09hLCR2LEVoLEt2LHF2LHVtLGp2LGxtLFdyLFh2LFJhLExhLEVhXSk7Y2xhc3MgUCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKG4scixvKXtzdXBlcihgTUNQIGVycm9yICR7bn06ICR7cn1gKSx0aGlzLmNvZGU9bix0aGlzLmRhdGE9byx0aGlzLm5hbWU9Ik1jcEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKG4scixvKXtpZihuPT09Ti5VcmxFbGljaXRhdGlvblJlcXVpcmVkJiZvKXtjb25zdCBlPW87aWYoZS5lbGljaXRhdGlvbnMpcmV0dXJuIG5ldyBMaChlLmVsaWNpdGF0aW9ucyxyKX1yZXR1cm4gbmV3IFAobixyLG8pfX1jbGFzcyBMaCBleHRlbmRzIFB7Y29uc3RydWN0b3IobixyPWBVUkwgZWxpY2l0YXRpb24ke24ubGVuZ3RoPjE/InMiOiIifSByZXF1aXJlZGApe3N1cGVyKE4uVXJsRWxpY2l0YXRpb25SZXF1aXJlZCxyLHtlbGljaXRhdGlvbnM6bn0pfWdldCBlbGljaXRhdGlvbnMoKXtyZXR1cm4gdGhpcy5kYXRhPy5lbGljaXRhdGlvbnM/P1tdfX1mdW5jdGlvbiBTZSh0KXtyZXR1cm4gdD09PSJjb21wbGV0ZWQifHx0PT09ImZhaWxlZCJ8fHQ9PT0iY2FuY2VsbGVkIn1uZXcgU2V0KCJBQkNERUZHSElKS0xNTk9QUVJTVFVWWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnh5ejAxMjM0NTY3ODkiKTtmdW5jdGlvbiB6cyh0KXtjb25zdCByPUZnKHQpPy5tZXRob2Q7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhIG1ldGhvZCBsaXRlcmFsIik7Y29uc3Qgbz1KZyhyKTtpZih0eXBlb2YgbyE9InN0cmluZyIpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgbWV0aG9kIGxpdGVyYWwgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBvfWZ1bmN0aW9uIHhzKHQsbil7Y29uc3Qgcj1GZCh0LG4pO2lmKCFyLnN1Y2Nlc3MpdGhyb3cgci5lcnJvcjtyZXR1cm4gci5kYXRhfWNvbnN0IE1oPTZlNDtjbGFzcyBxaHtjb25zdHJ1Y3RvcihuKXt0aGlzLl9vcHRpb25zPW4sdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZD0wLHRoaXMuX3JlcXVlc3RIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycz1uZXcgTWFwLHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVzcG9uc2VIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl90aW1lb3V0SW5mbz1uZXcgTWFwLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zPW5ldyBTZXQsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zPW5ldyBNYXAsdGhpcy5fcmVxdWVzdFJlc29sdmVycz1uZXcgTWFwLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihEYSxyPT57dGhpcy5fb25jYW5jZWwocil9KSx0aGlzLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIoTmEscj0+e3RoaXMuX29ucHJvZ3Jlc3Mocil9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEJyLHI9Pih7fSkpLHRoaXMuX3Rhc2tTdG9yZT1uPy50YXNrU3RvcmUsdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT1uPy50YXNrTWVzc2FnZVF1ZXVlLHRoaXMuX3Rhc2tTdG9yZSYmKHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoWmEsYXN5bmMocixvKT0+e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybnsuLi5lfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQ2EsYXN5bmMocixvKT0+e2NvbnN0IGU9YXN5bmMoKT0+e2NvbnN0IGk9ci5wYXJhbXMudGFza0lkO2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2xldCBzO2Zvcig7cz1hd2FpdCB0aGlzLl90YXNrTWVzc2FnZVF1ZXVlLmRlcXVldWUoaSxvLnNlc3Npb25JZCk7KXtpZihzLnR5cGU9PT0icmVzcG9uc2UifHxzLnR5cGU9PT0iZXJyb3IiKXtjb25zdCBjPXMubWVzc2FnZSx1PWMuaWQsbD10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldCh1KTtpZihsKWlmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHUpLHMudHlwZT09PSJyZXNwb25zZSIpbChjKTtlbHNle2NvbnN0IGc9Yyx2PW5ldyBQKGcuZXJyb3IuY29kZSxnLmVycm9yLm1lc3NhZ2UsZy5lcnJvci5kYXRhKTtsKHYpfWVsc2V7Y29uc3QgZz1zLnR5cGU9PT0icmVzcG9uc2UiPyJSZXNwb25zZSI6IkVycm9yIjt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgJHtnfSBoYW5kbGVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHt1fWApKX1jb250aW51ZX1hd2FpdCB0aGlzLl90cmFuc3BvcnQ/LnNlbmQocy5tZXNzYWdlLHtyZWxhdGVkUmVxdWVzdElkOm8ucmVxdWVzdElkfSl9fWNvbnN0IGE9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soaSxvLnNlc3Npb25JZCk7aWYoIWEpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtpfWApO2lmKCFTZShhLnN0YXR1cykpcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRGb3JUYXNrVXBkYXRlKGksby5zaWduYWwpLGF3YWl0IGUoKTtpZihTZShhLnN0YXR1cykpe2NvbnN0IHM9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2tSZXN1bHQoaSxvLnNlc3Npb25JZCk7cmV0dXJuIHRoaXMuX2NsZWFyVGFza1F1ZXVlKGkpLHsuLi5zLF9tZXRhOnsuLi5zLl9tZXRhLFt3ZV06e3Rhc2tJZDppfX19fXJldHVybiBhd2FpdCBlKCl9O3JldHVybiBhd2FpdCBlKCl9KSx0aGlzLnNldFJlcXVlc3RIYW5kbGVyKEFhLGFzeW5jKHIsbyk9Pnt0cnl7Y29uc3R7dGFza3M6ZSxuZXh0Q3Vyc29yOml9PWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5saXN0VGFza3Moci5wYXJhbXM/LmN1cnNvcixvLnNlc3Npb25JZCk7cmV0dXJue3Rhc2tzOmUsbmV4dEN1cnNvcjppLF9tZXRhOnt9fX1jYXRjaChlKXt0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYEZhaWxlZCB0byBsaXN0IHRhc2tzOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoTWEsYXN5bmMocixvKT0+e3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWUpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZDogJHtyLnBhcmFtcy50YXNrSWR9YCk7aWYoU2UoZS5zdGF0dXMpKXRocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcyxgQ2Fubm90IGNhbmNlbCB0YXNrIGluIHRlcm1pbmFsIHN0YXR1czogJHtlLnN0YXR1c31gKTthd2FpdCB0aGlzLl90YXNrU3RvcmUudXBkYXRlVGFza1N0YXR1cyhyLnBhcmFtcy50YXNrSWQsImNhbmNlbGxlZCIsIkNsaWVudCBjYW5jZWxsZWQgdGFzayBleGVjdXRpb24uIixvLnNlc3Npb25JZCksdGhpcy5fY2xlYXJUYXNrUXVldWUoci5wYXJhbXMudGFza0lkKTtjb25zdCBpPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZS5nZXRUYXNrKHIucGFyYW1zLnRhc2tJZCxvLnNlc3Npb25JZCk7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrIG5vdCBmb3VuZCBhZnRlciBjYW5jZWxsYXRpb246ICR7ci5wYXJhbXMudGFza0lkfWApO3JldHVybntfbWV0YTp7fSwuLi5pfX1jYXRjaChlKXt0aHJvdyBlIGluc3RhbmNlb2YgUD9lOm5ldyBQKE4uSW52YWxpZFJlcXVlc3QsYEZhaWxlZCB0byBjYW5jZWwgdGFzazogJHtlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKX1gKX19KSl9YXN5bmMgX29uY2FuY2VsKG4pe2lmKCFuLnBhcmFtcy5yZXF1ZXN0SWQpcmV0dXJuO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5wYXJhbXMucmVxdWVzdElkKT8uYWJvcnQobi5wYXJhbXMucmVhc29uKX1fc2V0dXBUaW1lb3V0KG4scixvLGUsaT0hMSl7dGhpcy5fdGltZW91dEluZm8uc2V0KG4se3RpbWVvdXRJZDpzZXRUaW1lb3V0KGUsciksc3RhcnRUaW1lOkRhdGUubm93KCksdGltZW91dDpyLG1heFRvdGFsVGltZW91dDpvLHJlc2V0VGltZW91dE9uUHJvZ3Jlc3M6aSxvblRpbWVvdXQ6ZX0pfV9yZXNldFRpbWVvdXQobil7Y29uc3Qgcj10aGlzLl90aW1lb3V0SW5mby5nZXQobik7aWYoIXIpcmV0dXJuITE7Y29uc3Qgbz1EYXRlLm5vdygpLXIuc3RhcnRUaW1lO2lmKHIubWF4VG90YWxUaW1lb3V0JiZvPj1yLm1heFRvdGFsVGltZW91dCl0aHJvdyB0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobiksUC5mcm9tRXJyb3IoTi5SZXF1ZXN0VGltZW91dCwiTWF4aW11bSB0b3RhbCB0aW1lb3V0IGV4Y2VlZGVkIix7bWF4VG90YWxUaW1lb3V0OnIubWF4VG90YWxUaW1lb3V0LHRvdGFsRWxhcHNlZDpvfSk7cmV0dXJuIGNsZWFyVGltZW91dChyLnRpbWVvdXRJZCksci50aW1lb3V0SWQ9c2V0VGltZW91dChyLm9uVGltZW91dCxyLnRpbWVvdXQpLCEwfV9jbGVhbnVwVGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtyJiYoY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSx0aGlzLl90aW1lb3V0SW5mby5kZWxldGUobikpfWFzeW5jIGNvbm5lY3Qobil7aWYodGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBjb25uZWN0ZWQgdG8gYSB0cmFuc3BvcnQuIENhbGwgY2xvc2UoKSBiZWZvcmUgY29ubmVjdGluZyB0byBhIG5ldyB0cmFuc3BvcnQsIG9yIHVzZSBhIHNlcGFyYXRlIFByb3RvY29sIGluc3RhbmNlIHBlciBjb25uZWN0aW9uLiIpO3RoaXMuX3RyYW5zcG9ydD1uO2NvbnN0IHI9dGhpcy50cmFuc3BvcnQ/Lm9uY2xvc2U7dGhpcy5fdHJhbnNwb3J0Lm9uY2xvc2U9KCk9PntyPy4oKSx0aGlzLl9vbmNsb3NlKCl9O2NvbnN0IG89dGhpcy50cmFuc3BvcnQ/Lm9uZXJyb3I7dGhpcy5fdHJhbnNwb3J0Lm9uZXJyb3I9aT0+e28/LihpKSx0aGlzLl9vbmVycm9yKGkpfTtjb25zdCBlPXRoaXMuX3RyYW5zcG9ydD8ub25tZXNzYWdlO3RoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2U9KGksYSk9PntlPy4oaSxhKSx6bihpKXx8YXYoaSk/dGhpcy5fb25yZXNwb25zZShpKTpJcyhpKT90aGlzLl9vbnJlcXVlc3QoaSxhKTpvdihpKT90aGlzLl9vbm5vdGlmaWNhdGlvbihpKTp0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5rbm93biBtZXNzYWdlIHR5cGU6ICR7SlNPTi5zdHJpbmdpZnkoaSl9YCkpfSxhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKX1fb25jbG9zZSgpe2NvbnN0IG49dGhpcy5fcmVzcG9uc2VIYW5kbGVyczt0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5jbGVhcigpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5jbGVhcigpLHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fdGltZW91dEluZm8udmFsdWVzKCkpY2xlYXJUaW1lb3V0KG8udGltZW91dElkKTt0aGlzLl90aW1lb3V0SW5mby5jbGVhcigpO2Zvcihjb25zdCBvIG9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy52YWx1ZXMoKSlvLmFib3J0KCk7dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmNsZWFyKCk7Y29uc3Qgcj1QLmZyb21FcnJvcihOLkNvbm5lY3Rpb25DbG9zZWQsIkNvbm5lY3Rpb24gY2xvc2VkIik7dGhpcy5fdHJhbnNwb3J0PXZvaWQgMCx0aGlzLm9uY2xvc2U/LigpO2Zvcihjb25zdCBvIG9mIG4udmFsdWVzKCkpbyhyKX1fb25lcnJvcihuKXt0aGlzLm9uZXJyb3I/LihuKX1fb25ub3RpZmljYXRpb24obil7Y29uc3Qgcj10aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtyIT09dm9pZCAwJiZQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT5yKG4pKS5jYXRjaChvPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgVW5jYXVnaHQgZXJyb3IgaW4gbm90aWZpY2F0aW9uIGhhbmRsZXI6ICR7b31gKSkpfV9vbnJlcXVlc3QobixyKXtjb25zdCBvPXRoaXMuX3JlcXVlc3RIYW5kbGVycy5nZXQobi5tZXRob2QpPz90aGlzLmZhbGxiYWNrUmVxdWVzdEhhbmRsZXIsZT10aGlzLl90cmFuc3BvcnQsaT1uLnBhcmFtcz8uX21ldGE/Llt3ZV0/LnRhc2tJZDtpZihvPT09dm9pZCAwKXtjb25zdCBsPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6Ti5NZXRob2ROb3RGb3VuZCxtZXNzYWdlOiJNZXRob2Qgbm90IGZvdW5kIn19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/dGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmwsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBlbnF1ZXVlIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTplPy5zZW5kKGwpLmNhdGNoKGc9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtnfWApKSk7cmV0dXJufWNvbnN0IGE9bmV3IEFib3J0Q29udHJvbGxlcjt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuc2V0KG4uaWQsYSk7Y29uc3Qgcz1pdihuLnBhcmFtcyk/bi5wYXJhbXMudGFzazp2b2lkIDAsYz10aGlzLl90YXNrU3RvcmU/dGhpcy5yZXF1ZXN0VGFza1N0b3JlKG4sZT8uc2Vzc2lvbklkKTp2b2lkIDAsdT17c2lnbmFsOmEuc2lnbmFsLHNlc3Npb25JZDplPy5zZXNzaW9uSWQsX21ldGE6bi5wYXJhbXM/Ll9tZXRhLHNlbmROb3RpZmljYXRpb246YXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3JlbGF0ZWRSZXF1ZXN0SWQ6bi5pZH07aSYmKGcucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24obCxnKX0sc2VuZFJlcXVlc3Q6YXN5bmMobCxnLHYpPT57aWYoYS5zaWduYWwuYWJvcnRlZCl0aHJvdyBuZXcgUChOLkNvbm5lY3Rpb25DbG9zZWQsIlJlcXVlc3Qgd2FzIGNhbmNlbGxlZCIpO2NvbnN0ICQ9ey4uLnYscmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYhJC5yZWxhdGVkVGFzayYmKCQucmVsYXRlZFRhc2s9e3Rhc2tJZDppfSk7Y29uc3QgeT0kLnJlbGF0ZWRUYXNrPy50YXNrSWQ/P2k7cmV0dXJuIHkmJmMmJmF3YWl0IGMudXBkYXRlVGFza1N0YXR1cyh5LCJpbnB1dF9yZXF1aXJlZCIpLGF3YWl0IHRoaXMucmVxdWVzdChsLGcsJCl9LGF1dGhJbmZvOnI/LmF1dGhJbmZvLHJlcXVlc3RJZDpuLmlkLHJlcXVlc3RJbmZvOnI/LnJlcXVlc3RJbmZvLHRhc2tJZDppLHRhc2tTdG9yZTpjLHRhc2tSZXF1ZXN0ZWRUdGw6cz8udHRsLGNsb3NlU1NFU3RyZWFtOnI/LmNsb3NlU1NFU3RyZWFtLGNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbTpyPy5jbG9zZVN0YW5kYWxvbmVTU0VTdHJlYW19O1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PntzJiZ0aGlzLmFzc2VydFRhc2tIYW5kbGVyQ2FwYWJpbGl0eShuLm1ldGhvZCl9KS50aGVuKCgpPT5vKG4sdSkpLnRoZW4oYXN5bmMgbD0+e2lmKGEuc2lnbmFsLmFib3J0ZWQpcmV0dXJuO2NvbnN0IGc9e3Jlc3VsdDpsLGpzb25ycGM6IjIuMCIsaWQ6bi5pZH07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT9hd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToicmVzcG9uc2UiLG1lc3NhZ2U6Zyx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKTphd2FpdCBlPy5zZW5kKGcpfSxhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17anNvbnJwYzoiMi4wIixpZDpuLmlkLGVycm9yOntjb2RlOk51bWJlci5pc1NhZmVJbnRlZ2VyKGwuY29kZSk/bC5jb2RlOk4uSW50ZXJuYWxFcnJvcixtZXNzYWdlOmwubWVzc2FnZT8/IkludGVybmFsIGVycm9yIiwuLi5sLmRhdGEhPT12b2lkIDAmJntkYXRhOmwuZGF0YX19fTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJlcnJvciIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9KS5jYXRjaChsPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgcmVzcG9uc2U6ICR7bH1gKSkpLmZpbmFsbHkoKCk9Pnt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZ2V0KG4uaWQpPT09YSYmdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmRlbGV0ZShuLmlkKX0pfV9vbnByb2dyZXNzKG4pe2NvbnN0e3Byb2dyZXNzVG9rZW46ciwuLi5vfT1uLnBhcmFtcyxlPU51bWJlcihyKSxpPXRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZ2V0KGUpO2lmKCFpKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn1jb25zdCBhPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KGUpLHM9dGhpcy5fdGltZW91dEluZm8uZ2V0KGUpO2lmKHMmJmEmJnMucmVzZXRUaW1lb3V0T25Qcm9ncmVzcyl0cnl7dGhpcy5fcmVzZXRUaW1lb3V0KGUpfWNhdGNoKGMpe3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKGUpLHRoaXMuX2NsZWFudXBUaW1lb3V0KGUpLGEoYyk7cmV0dXJufWkobyl9X29ucmVzcG9uc2Uobil7Y29uc3Qgcj1OdW1iZXIobi5pZCksbz10aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmdldChyKTtpZihvKXtpZih0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShyKSx6bihuKSlvKG4pO2Vsc2V7Y29uc3QgYT1uZXcgUChuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7byhhKX1yZXR1cm59Y29uc3QgZT10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldChyKTtpZihlPT09dm9pZCAwKXt0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSByZXNwb25zZSBmb3IgYW4gdW5rbm93biBtZXNzYWdlIElEOiAke0pTT04uc3RyaW5naWZ5KG4pfWApKTtyZXR1cm59dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUociksdGhpcy5fY2xlYW51cFRpbWVvdXQocik7bGV0IGk9ITE7aWYoem4obikmJm4ucmVzdWx0JiZ0eXBlb2Ygbi5yZXN1bHQ9PSJvYmplY3QiKXtjb25zdCBhPW4ucmVzdWx0O2lmKGEudGFzayYmdHlwZW9mIGEudGFzaz09Im9iamVjdCIpe2NvbnN0IHM9YS50YXNrO3R5cGVvZiBzLnRhc2tJZD09InN0cmluZyImJihpPSEwLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5zZXQocy50YXNrSWQscikpfX1pZihpfHx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShyKSx6bihuKSllKG4pO2Vsc2V7Y29uc3QgYT1QLmZyb21FcnJvcihuLmVycm9yLmNvZGUsbi5lcnJvci5tZXNzYWdlLG4uZXJyb3IuZGF0YSk7ZShhKX19Z2V0IHRyYW5zcG9ydCgpe3JldHVybiB0aGlzLl90cmFuc3BvcnR9YXN5bmMgY2xvc2UoKXthd2FpdCB0aGlzLl90cmFuc3BvcnQ/LmNsb3NlKCl9YXN5bmMqcmVxdWVzdFN0cmVhbShuLHIsbyl7Y29uc3R7dGFzazplfT1vPz97fTtpZighZSl7dHJ5e3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMucmVxdWVzdChuLHIsbyl9fWNhdGNoKGEpe3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjphIGluc3RhbmNlb2YgUD9hOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixTdHJpbmcoYSkpfX1yZXR1cm59bGV0IGk7dHJ5e2NvbnN0IGE9YXdhaXQgdGhpcy5yZXF1ZXN0KG4sRWEsbyk7aWYoYS50YXNrKWk9YS50YXNrLnRhc2tJZCx5aWVsZHt0eXBlOiJ0YXNrQ3JlYXRlZCIsdGFzazphLnRhc2t9O2Vsc2UgdGhyb3cgbmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNyZWF0aW9uIGRpZCBub3QgcmV0dXJuIGEgdGFzayIpO2Zvcig7Oyl7Y29uc3Qgcz1hd2FpdCB0aGlzLmdldFRhc2soe3Rhc2tJZDppfSxvKTtpZih5aWVsZHt0eXBlOiJ0YXNrU3RhdHVzIix0YXNrOnN9LFNlKHMuc3RhdHVzKSl7cy5zdGF0dXM9PT0iY29tcGxldGVkIj95aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTpzLnN0YXR1cz09PSJmYWlsZWQiP3lpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSBmYWlsZWRgKX06cy5zdGF0dXM9PT0iY2FuY2VsbGVkIiYmKHlpZWxke3R5cGU6ImVycm9yIixlcnJvcjpuZXcgUChOLkludGVybmFsRXJyb3IsYFRhc2sgJHtpfSB3YXMgY2FuY2VsbGVkYCl9KTtyZXR1cm59aWYocy5zdGF0dXM9PT0iaW5wdXRfcmVxdWlyZWQiKXt5aWVsZHt0eXBlOiJyZXN1bHQiLHJlc3VsdDphd2FpdCB0aGlzLmdldFRhc2tSZXN1bHQoe3Rhc2tJZDppfSxyLG8pfTtyZXR1cm59Y29uc3QgYz1zLnBvbGxJbnRlcnZhbD8/dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzthd2FpdCBuZXcgUHJvbWlzZSh1PT5zZXRUaW1lb3V0KHUsYykpLG8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBQP2E6bmV3IFAoTi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fX1yZXF1ZXN0KG4scixvKXtjb25zdHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YSx0YXNrOnMscmVsYXRlZFRhc2s6Y309bz8/e307cmV0dXJuIG5ldyBQcm9taXNlKCh1LGwpPT57Y29uc3QgZz1LPT57bChLKX07aWYoIXRoaXMuX3RyYW5zcG9ydCl7ZyhuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKSk7cmV0dXJufWlmKHRoaXMuX29wdGlvbnM/LmVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXM9PT0hMCl0cnl7dGhpcy5hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4ubWV0aG9kKSxzJiZ0aGlzLmFzc2VydFRhc2tDYXBhYmlsaXR5KG4ubWV0aG9kKX1jYXRjaChLKXtnKEspO3JldHVybn1vPy5zaWduYWw/LnRocm93SWZBYm9ydGVkKCk7Y29uc3Qgdj10aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKyssJD17Li4ubixqc29ucnBjOiIyLjAiLGlkOnZ9O28/Lm9ucHJvZ3Jlc3MmJih0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldCh2LG8ub25wcm9ncmVzcyksJC5wYXJhbXM9ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LHByb2dyZXNzVG9rZW46dn19KSxzJiYoJC5wYXJhbXM9ey4uLiQucGFyYW1zLHRhc2s6c30pLGMmJigkLnBhcmFtcz17Li4uJC5wYXJhbXMsX21ldGE6ey4uLiQucGFyYW1zPy5fbWV0YXx8e30sW3dlXTpjfX0pO2NvbnN0IHk9Sz0+e3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHYpLHRoaXMuX2NsZWFudXBUaW1lb3V0KHYpLHRoaXMuX3RyYW5zcG9ydD8uc2VuZCh7anNvbnJwYzoiMi4wIixtZXRob2Q6Im5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIixwYXJhbXM6e3JlcXVlc3RJZDp2LHJlYXNvbjpTdHJpbmcoSyl9fSx7cmVsYXRlZFJlcXVlc3RJZDplLHJlc3VtcHRpb25Ub2tlbjppLG9ucmVzdW1wdGlvbnRva2VuOmF9KS5jYXRjaChDPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke0N9YCkpKTtjb25zdCBKPUsgaW5zdGFuY2VvZiBQP0s6bmV3IFAoTi5SZXF1ZXN0VGltZW91dCxTdHJpbmcoSykpO2woSil9O3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuc2V0KHYsSz0+e2lmKCFvPy5zaWduYWw/LmFib3J0ZWQpe2lmKEsgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gbChLKTt0cnl7Y29uc3QgSj1GZChyLEsucmVzdWx0KTtKLnN1Y2Nlc3M/dShKLmRhdGEpOmwoSi5lcnJvcil9Y2F0Y2goSil7bChKKX19fSksbz8uc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9Pnt5KG8/LnNpZ25hbD8ucmVhc29uKX0pO2NvbnN0IEY9bz8udGltZW91dD8/TWgsUj0oKT0+eShQLmZyb21FcnJvcihOLlJlcXVlc3RUaW1lb3V0LCJSZXF1ZXN0IHRpbWVkIG91dCIse3RpbWVvdXQ6Rn0pKTt0aGlzLl9zZXR1cFRpbWVvdXQodixGLG8/Lm1heFRvdGFsVGltZW91dCxSLG8/LnJlc2V0VGltZW91dE9uUHJvZ3Jlc3M/PyExKTtjb25zdCBSZT1jPy50YXNrSWQ7aWYoUmUpe2NvbnN0IEs9Sj0+e2NvbnN0IEM9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQodik7Qz9DKEopOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNwb25zZSBoYW5kbGVyIG1pc3NpbmcgZm9yIHNpZGUtY2hhbm5lbGVkIHJlcXVlc3QgJHt2fWApKX07dGhpcy5fcmVxdWVzdFJlc29sdmVycy5zZXQodixLKSx0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoUmUse3R5cGU6InJlcXVlc3QiLG1lc3NhZ2U6JCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0pLmNhdGNoKEo9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKEopfSl9ZWxzZSB0aGlzLl90cmFuc3BvcnQuc2VuZCgkLHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKEs9Pnt0aGlzLl9jbGVhbnVwVGltZW91dCh2KSxsKEspfSl9KX1hc3luYyBnZXRUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9nZXQiLHBhcmFtczpufSxSYSxyKX1hc3luYyBnZXRUYXNrUmVzdWx0KG4scixvKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL3Jlc3VsdCIscGFyYW1zOm59LHIsbyl9YXN5bmMgbGlzdFRhc2tzKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9saXN0IixwYXJhbXM6bn0sTGEscil9YXN5bmMgY2FuY2VsVGFzayhuLHIpe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvY2FuY2VsIixwYXJhbXM6bn0sSXYscil9YXN5bmMgbm90aWZpY2F0aW9uKG4scil7aWYoIXRoaXMuX3RyYW5zcG9ydCl0aHJvdyBuZXcgRXJyb3IoIk5vdCBjb25uZWN0ZWQiKTt0aGlzLmFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkobi5tZXRob2QpO2NvbnN0IG89cj8ucmVsYXRlZFRhc2s/LnRhc2tJZDtpZihvKXtjb25zdCBzPXsuLi5uLGpzb25ycGM6IjIuMCIscGFyYW1zOnsuLi5uLnBhcmFtcyxfbWV0YTp7Li4ubi5wYXJhbXM/Ll9tZXRhfHx7fSxbd2VdOnIucmVsYXRlZFRhc2t9fX07YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKG8se3R5cGU6Im5vdGlmaWNhdGlvbiIsbWVzc2FnZTpzLHRpbWVzdGFtcDpEYXRlLm5vdygpfSk7cmV0dXJufWlmKCh0aGlzLl9vcHRpb25zPy5kZWJvdW5jZWROb3RpZmljYXRpb25NZXRob2RzPz9bXSkuaW5jbHVkZXMobi5tZXRob2QpJiYhbi5wYXJhbXMmJiFyPy5yZWxhdGVkUmVxdWVzdElkJiYhcj8ucmVsYXRlZFRhc2spe2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmhhcyhuLm1ldGhvZCkpcmV0dXJuO3RoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmFkZChuLm1ldGhvZCksUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e2lmKHRoaXMuX3BlbmRpbmdEZWJvdW5jZWROb3RpZmljYXRpb25zLmRlbGV0ZShuLm1ldGhvZCksIXRoaXMuX3RyYW5zcG9ydClyZXR1cm47bGV0IHM9ey4uLm4sanNvbnJwYzoiMi4wIn07cj8ucmVsYXRlZFRhc2smJihzPXsuLi5zLHBhcmFtczp7Li4ucy5wYXJhbXMsX21ldGE6ey4uLnMucGFyYW1zPy5fbWV0YXx8e30sW3dlXTpyLnJlbGF0ZWRUYXNrfX19KSx0aGlzLl90cmFuc3BvcnQ/LnNlbmQocyxyKS5jYXRjaChjPT50aGlzLl9vbmVycm9yKGMpKX0pO3JldHVybn1sZXQgYT17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKGE9ey4uLmEscGFyYW1zOnsuLi5hLnBhcmFtcyxfbWV0YTp7Li4uYS5wYXJhbXM/Ll9tZXRhfHx7fSxbd2VdOnIucmVsYXRlZFRhc2t9fX0pLGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zZW5kKGEscil9c2V0UmVxdWVzdEhhbmRsZXIobixyKXtjb25zdCBvPXpzKG4pO3RoaXMuYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG8pLHRoaXMuX3JlcXVlc3RIYW5kbGVycy5zZXQobywoZSxpKT0+e2NvbnN0IGE9eHMobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoYSxpKSl9KX1yZW1vdmVSZXF1ZXN0SGFuZGxlcihuKXt0aGlzLl9yZXF1ZXN0SGFuZGxlcnMuZGVsZXRlKG4pfWFzc2VydENhblNldFJlcXVlc3RIYW5kbGVyKG4pe2lmKHRoaXMuX3JlcXVlc3RIYW5kbGVycy5oYXMobikpdGhyb3cgbmV3IEVycm9yKGBBIHJlcXVlc3QgaGFuZGxlciBmb3IgJHtufSBhbHJlYWR5IGV4aXN0cywgd2hpY2ggd291bGQgYmUgb3ZlcnJpZGRlbmApfXNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKXtjb25zdCBvPXpzKG4pO3RoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLnNldChvLGU9Pntjb25zdCBpPXhzKG4sZSk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShyKGkpKX0pfXJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIobil7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZGVsZXRlKG4pfV9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihuKXtjb25zdCByPXRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5nZXQobik7ciE9PXZvaWQgMCYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLHRoaXMuX3Rhc2tQcm9ncmVzc1Rva2Vucy5kZWxldGUobikpfWFzeW5jIF9lbnF1ZXVlVGFza01lc3NhZ2UobixyLG8pe2lmKCF0aGlzLl90YXNrU3RvcmV8fCF0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVucXVldWUgdGFzayBtZXNzYWdlOiB0YXNrU3RvcmUgYW5kIHRhc2tNZXNzYWdlUXVldWUgYXJlIG5vdCBjb25maWd1cmVkIik7Y29uc3QgZT10aGlzLl9vcHRpb25zPy5tYXhUYXNrUXVldWVTaXplO2F3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZW5xdWV1ZShuLHIsbyxlKX1hc3luYyBfY2xlYXJUYXNrUXVldWUobixyKXtpZih0aGlzLl90YXNrTWVzc2FnZVF1ZXVlKXtjb25zdCBvPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZUFsbChuLHIpO2Zvcihjb25zdCBlIG9mIG8paWYoZS50eXBlPT09InJlcXVlc3QiJiZJcyhlLm1lc3NhZ2UpKXtjb25zdCBpPWUubWVzc2FnZS5pZCxhPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KGkpO2E/KGEobmV3IFAoTi5JbnRlcm5hbEVycm9yLCJUYXNrIGNhbmNlbGxlZCBvciBjb21wbGV0ZWQiKSksdGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUoaSkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZXNvbHZlciBtaXNzaW5nIGZvciByZXF1ZXN0ICR7aX0gZHVyaW5nIHRhc2sgJHtufSBjbGVhbnVwYCkpfX19YXN5bmMgX3dhaXRGb3JUYXNrVXBkYXRlKG4scil7bGV0IG89dGhpcy5fb3B0aW9ucz8uZGVmYXVsdFRhc2tQb2xsSW50ZXJ2YWw/PzFlMzt0cnl7Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmU/LmdldFRhc2sobik7ZT8ucG9sbEludGVydmFsJiYobz1lLnBvbGxJbnRlcnZhbCl9Y2F0Y2h7fXJldHVybiBuZXcgUHJvbWlzZSgoZSxpKT0+e2lmKHIuYWJvcnRlZCl7aShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKTtyZXR1cm59Y29uc3QgYT1zZXRUaW1lb3V0KGUsbyk7ci5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsKCk9PntjbGVhclRpbWVvdXQoYSksaShuZXcgUChOLkludmFsaWRSZXF1ZXN0LCJSZXF1ZXN0IGNhbmNlbGxlZCIpKX0se29uY2U6ITB9KX0pfXJlcXVlc3RUYXNrU3RvcmUobixyKXtjb25zdCBvPXRoaXMuX3Rhc2tTdG9yZTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk5vIHRhc2sgc3RvcmUgY29uZmlndXJlZCIpO3JldHVybntjcmVhdGVUYXNrOmFzeW5jIGU9PntpZighbil0aHJvdyBuZXcgRXJyb3IoIk5vIHJlcXVlc3QgcHJvdmlkZWQiKTtyZXR1cm4gYXdhaXQgby5jcmVhdGVUYXNrKGUsbi5pZCx7bWV0aG9kOm4ubWV0aG9kLHBhcmFtczpuLnBhcmFtc30scil9LGdldFRhc2s6YXN5bmMgZT0+e2NvbnN0IGk9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIWkpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLCJGYWlsZWQgdG8gcmV0cmlldmUgdGFzazogVGFzayBub3QgZm91bmQiKTtyZXR1cm4gaX0sc3RvcmVUYXNrUmVzdWx0OmFzeW5jKGUsaSxhKT0+e2F3YWl0IG8uc3RvcmVUYXNrUmVzdWx0KGUsaSxhLHIpO2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYocyl7Y29uc3QgYz1Fbi5wYXJzZSh7bWV0aG9kOiJub3RpZmljYXRpb25zL3Rhc2tzL3N0YXR1cyIscGFyYW1zOnN9KTthd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihjKSxTZShzLnN0YXR1cykmJnRoaXMuX2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKGUpfX0sZ2V0VGFza1Jlc3VsdDplPT5vLmdldFRhc2tSZXN1bHQoZSxyKSx1cGRhdGVUYXNrU3RhdHVzOmFzeW5jKGUsaSxhKT0+e2NvbnN0IHM9YXdhaXQgby5nZXRUYXNrKGUscik7aWYoIXMpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBUYXNrICIke2V9IiBub3QgZm91bmQgLSBpdCBtYXkgaGF2ZSBiZWVuIGNsZWFuZWQgdXBgKTtpZihTZShzLnN0YXR1cykpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgdXBkYXRlIHRhc2sgIiR7ZX0iIGZyb20gdGVybWluYWwgc3RhdHVzICIke3Muc3RhdHVzfSIgdG8gIiR7aX0iLiBUZXJtaW5hbCBzdGF0ZXMgKGNvbXBsZXRlZCwgZmFpbGVkLCBjYW5jZWxsZWQpIGNhbm5vdCB0cmFuc2l0aW9uIHRvIG90aGVyIHN0YXRlcy5gKTthd2FpdCBvLnVwZGF0ZVRhc2tTdGF0dXMoZSxpLGEscik7Y29uc3QgYz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihjKXtjb25zdCB1PUVuLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6Y30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKHUpLFNlKGMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxsaXN0VGFza3M6ZT0+by5saXN0VGFza3MoZSxyKX19fWZ1bmN0aW9uIFRzKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KX1mdW5jdGlvbiBGaCh0LG4pe2NvbnN0IHI9ey4uLnR9O2Zvcihjb25zdCBvIGluIG4pe2NvbnN0IGU9byxpPW5bZV07aWYoaT09PXZvaWQgMCljb250aW51ZTtjb25zdCBhPXJbZV07VHMoYSkmJlRzKGkpP3JbZV09ey4uLmEsLi4uaX06cltlXT1pfXJldHVybiByfSh0PT50eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTp0eXBlb2YgUHJveHk8InUiP25ldyBQcm94eSh0LHtnZXQ6KG4scik9Pih0eXBlb2YgcmVxdWlyZTwidSI/cmVxdWlyZTpuKVtyXX0pOnQpKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiByZXF1aXJlPCJ1IilyZXR1cm4gcmVxdWlyZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhyb3cgRXJyb3IoJ0R5bmFtaWMgcmVxdWlyZSBvZiAiJyt0KyciIGlzIG5vdCBzdXBwb3J0ZWQnKX0pO2NsYXNzIEpoIGV4dGVuZHMgcWh7X3JlZ2lzdGVyZWRNZXRob2RzPW5ldyBTZXQ7X2V2ZW50U2xvdHM9bmV3IE1hcDtvbkV2ZW50RGlzcGF0Y2gobixyKXt9X2Vuc3VyZUV2ZW50U2xvdChuKXtsZXQgcj10aGlzLl9ldmVudFNsb3RzLmdldChuKTtpZighcil7bGV0IG89dGhpcy5ldmVudFNjaGVtYXNbbl07aWYoIW8pdGhyb3cgRXJyb3IoYFVua25vd24gZXZlbnQ6ICR7U3RyaW5nKG4pfWApO3I9e2xpc3RlbmVyczpbXX0sdGhpcy5fZXZlbnRTbG90cy5zZXQobixyKTtsZXQgZT1vLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQoZSk7bGV0IGk9cjtzdXBlci5zZXROb3RpZmljYXRpb25IYW5kbGVyKG8sYT0+e2xldCBzPWEucGFyYW1zO3RoaXMub25FdmVudERpc3BhdGNoKG4scyksaS5vbkhhbmRsZXI/LihzKTtmb3IobGV0IGMgb2ZbLi4uaS5saXN0ZW5lcnNdKWMocyl9KX1yZXR1cm4gcn1zZXRFdmVudEhhbmRsZXIobixyKXtsZXQgbz10aGlzLl9lbnN1cmVFdmVudFNsb3Qobik7by5vbkhhbmRsZXImJnImJmNvbnNvbGUud2FybihgW01DUCBBcHBzXSBvbiR7U3RyaW5nKG4pfSBoYW5kbGVyIHJlcGxhY2VkLiBVc2UgYWRkRXZlbnRMaXN0ZW5lcigiJHtTdHJpbmcobil9Iiwg4oCmKSB0byBhZGQgbXVsdGlwbGUgbGlzdGVuZXJzIHdpdGhvdXQgcmVwbGFjaW5nLmApLG8ub25IYW5kbGVyPXJ9Z2V0RXZlbnRIYW5kbGVyKG4pe3JldHVybiB0aGlzLl9ldmVudFNsb3RzLmdldChuKT8ub25IYW5kbGVyfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9lbnN1cmVFdmVudFNsb3QobikubGlzdGVuZXJzLnB1c2gocil9cmVtb3ZlRXZlbnRMaXN0ZW5lcihuLHIpe2xldCBvPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFvKXJldHVybjtsZXQgZT1vLmxpc3RlbmVycy5pbmRleE9mKHIpO2UhPT0tMSYmby5saXN0ZW5lcnMuc3BsaWNlKGUsMSl9c2V0UmVxdWVzdEhhbmRsZXI9KG4scik9Pnt0aGlzLl9hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4sInNldFJlcXVlc3RIYW5kbGVyIiksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07c2V0Tm90aWZpY2F0aW9uSGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0Tm90aWZpY2F0aW9uSGFuZGxlciIpLHN1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobixyKX07d2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZChuLHIsbyl7ciYmbyYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdICR7bn0gaGFuZGxlciByZXBsYWNlZC4gUHJldmlvdXMgaGFuZGxlciB3aWxsIG5vIGxvbmdlciBiZSBjYWxsZWQuYCl9cmVwbGFjZVJlcXVlc3RIYW5kbGVyPShuLHIpPT57bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pLHN1cGVyLnNldFJlcXVlc3RIYW5kbGVyKG4scil9O19hc3NlcnRNZXRob2ROb3RSZWdpc3RlcmVkKG4scil7bGV0IG89bi5zaGFwZS5tZXRob2QudmFsdWU7aWYodGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuaGFzKG8pKXRocm93IEVycm9yKGBIYW5kbGVyIGZvciAiJHtvfSIgYWxyZWFkeSByZWdpc3RlcmVkICh2aWEgJHtyfSkuIFVzZSBhZGRFdmVudExpc3RlbmVyKCkgdG8gYXR0YWNoIG11bHRpcGxlIGxpc3RlbmVycywgb3IgdGhlIG9uKiBzZXR0ZXIgZm9yIHJlcGxhY2Ugc2VtYW50aWNzLmApO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChvKX19dmFyIEhoPSIyMDI2LTAxLTI2IixWaD0idWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiO2NsYXNzIEtoe2V2ZW50VGFyZ2V0O2V2ZW50U291cmNlO21lc3NhZ2VMaXN0ZW5lcjtjb25zdHJ1Y3RvcihuPXdpbmRvdy5wYXJlbnQscil7dGhpcy5ldmVudFRhcmdldD1uLHRoaXMuZXZlbnRTb3VyY2U9cix0aGlzLm1lc3NhZ2VMaXN0ZW5lcj1vPT57aWYociYmby5zb3VyY2UhPT10aGlzLmV2ZW50U291cmNlKXtjb25zb2xlLmRlYnVnKCJJZ25vcmluZyBtZXNzYWdlIGZyb20gdW5rbm93biBzb3VyY2UiLG8pO3JldHVybn1sZXQgZT1zdi5zYWZlUGFyc2Uoby5kYXRhKTtlLnN1Y2Nlc3M/KGNvbnNvbGUuZGVidWcoIlBhcnNlZCBtZXNzYWdlIixlLmRhdGEpLHRoaXMub25tZXNzYWdlPy4oZS5kYXRhKSk6by5kYXRhPy5qc29ucnBjIT09IjIuMCI/Y29uc29sZS5kZWJ1ZygiSWdub3Jpbmcgbm9uLUpTT04tUlBDIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKTooY29uc29sZS5lcnJvcigiRmFpbGVkIHRvIHBhcnNlIG1lc3NhZ2UiLGUuZXJyb3IubWVzc2FnZSxvKSx0aGlzLm9uZXJyb3I/LihFcnJvcigiSW52YWxpZCBKU09OLVJQQyBtZXNzYWdlIHJlY2VpdmVkOiAiK2UuZXJyb3IubWVzc2FnZSkpKX19YXN5bmMgc3RhcnQoKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpfWFzeW5jIHNlbmQobixyKXtuLm1ldGhvZCE9PVZoJiZjb25zb2xlLmRlYnVnKCJTZW5kaW5nIG1lc3NhZ2UiLG4pLHRoaXMuZXZlbnRUYXJnZXQucG9zdE1lc3NhZ2UobiwiKiIpfWFzeW5jIGNsb3NlKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLHRoaXMubWVzc2FnZUxpc3RlbmVyKSx0aGlzLm9uY2xvc2U/LigpfW9uY2xvc2U7b25lcnJvcjtvbm1lc3NhZ2U7c2Vzc2lvbklkO3NldFByb3RvY29sVmVyc2lvbn12YXIgQmg9aihbbSgibGlnaHQiKSxtKCJkYXJrIildKS5kZXNjcmliZSgiQ29sb3IgdGhlbWUgcHJlZmVyZW5jZSBmb3IgdGhlIGhvc3QgZW52aXJvbm1lbnQuIiksX3Q9aihbbSgiaW5saW5lIiksbSgiZnVsbHNjcmVlbiIpLG0oInBpcCIpXSkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZSBmb3IgVUkgcHJlc2VudGF0aW9uLiIpLFdoPWooW20oIi0tY29sb3ItYmFja2dyb3VuZC1wcmltYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1pbnZlcnNlIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWdob3N0IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWluZm8iKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZGFuZ2VyIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtd2FybmluZyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItdGV4dC1wcmltYXJ5IiksbSgiLS1jb2xvci10ZXh0LXNlY29uZGFyeSIpLG0oIi0tY29sb3ItdGV4dC10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItdGV4dC1pbnZlcnNlIiksbSgiLS1jb2xvci10ZXh0LWdob3N0IiksbSgiLS1jb2xvci10ZXh0LWluZm8iKSxtKCItLWNvbG9yLXRleHQtZGFuZ2VyIiksbSgiLS1jb2xvci10ZXh0LXN1Y2Nlc3MiKSxtKCItLWNvbG9yLXRleHQtd2FybmluZyIpLG0oIi0tY29sb3ItdGV4dC1kaXNhYmxlZCIpLG0oIi0tY29sb3ItYm9yZGVyLXByaW1hcnkiKSxtKCItLWNvbG9yLWJvcmRlci1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLWJvcmRlci10ZXJ0aWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLWludmVyc2UiKSxtKCItLWNvbG9yLWJvcmRlci1naG9zdCIpLG0oIi0tY29sb3ItYm9yZGVyLWluZm8iKSxtKCItLWNvbG9yLWJvcmRlci1kYW5nZXIiKSxtKCItLWNvbG9yLWJvcmRlci1zdWNjZXNzIiksbSgiLS1jb2xvci1ib3JkZXItd2FybmluZyIpLG0oIi0tY29sb3ItYm9yZGVyLWRpc2FibGVkIiksbSgiLS1jb2xvci1yaW5nLXByaW1hcnkiKSxtKCItLWNvbG9yLXJpbmctc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1yaW5nLWludmVyc2UiKSxtKCItLWNvbG9yLXJpbmctaW5mbyIpLG0oIi0tY29sb3ItcmluZy1kYW5nZXIiKSxtKCItLWNvbG9yLXJpbmctc3VjY2VzcyIpLG0oIi0tY29sb3ItcmluZy13YXJuaW5nIiksbSgiLS1mb250LXNhbnMiKSxtKCItLWZvbnQtbW9ubyIpLG0oIi0tZm9udC13ZWlnaHQtbm9ybWFsIiksbSgiLS1mb250LXdlaWdodC1tZWRpdW0iKSxtKCItLWZvbnQtd2VpZ2h0LXNlbWlib2xkIiksbSgiLS1mb250LXdlaWdodC1ib2xkIiksbSgiLS1mb250LXRleHQteHMtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXNtLXNpemUiKSxtKCItLWZvbnQtdGV4dC1tZC1zaXplIiksbSgiLS1mb250LXRleHQtbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhzLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbWQtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLWxnLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy14bC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctMnhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0zeGwtc2l6ZSIpLG0oIi0tZm9udC10ZXh0LXhzLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtc20tbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1tZC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LWxnLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmcteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTJ4bC1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1saW5lLWhlaWdodCIpLG0oIi0tYm9yZGVyLXJhZGl1cy14cyIpLG0oIi0tYm9yZGVyLXJhZGl1cy1zbSIpLG0oIi0tYm9yZGVyLXJhZGl1cy1tZCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1sZyIpLG0oIi0tYm9yZGVyLXJhZGl1cy14bCIpLG0oIi0tYm9yZGVyLXJhZGl1cy1mdWxsIiksbSgiLS1ib3JkZXItd2lkdGgtcmVndWxhciIpLG0oIi0tc2hhZG93LWhhaXJsaW5lIiksbSgiLS1zaGFkb3ctc20iKSxtKCItLXNoYWRvdy1tZCIpLG0oIi0tc2hhZG93LWxnIildKS5kZXNjcmliZSgiQ1NTIHZhcmlhYmxlIGtleXMgYXZhaWxhYmxlIHRvIE1DUCBhcHBzIGZvciB0aGVtaW5nLiIpLEdoPVUoV2guZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCksaihbcCgpLEtlKCldKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSkuZGVzY3JpYmUoYFN0eWxlIHZhcmlhYmxlcyBmb3IgdGhlbWluZyBNQ1AgYXBwcy4KCkluZGl2aWR1YWwgc3R5bGUga2V5cyBhcmUgb3B0aW9uYWwgLSBob3N0cyBtYXkgcHJvdmlkZSBhbnkgc3Vic2V0IG9mIHRoZXNlIHZhbHVlcy4KVmFsdWVzIGFyZSBzdHJpbmdzIGNvbnRhaW5pbmcgQ1NTIHZhbHVlcyAoY29sb3JzLCBzaXplcywgZm9udCBzdGFja3MsIGV0Yy4pLgoKTm90ZTogVGhpcyB0eXBlIHVzZXMgXGBSZWNvcmQ8Sywgc3RyaW5nIHwgdW5kZWZpbmVkPlxgIHJhdGhlciB0aGFuIFxgUGFydGlhbDxSZWNvcmQ8Sywgc3RyaW5nPj5cYApmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFpvZCBzY2hlbWEgZ2VuZXJhdGlvbi4gQm90aCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgZm9yIHZhbGlkYXRpb24uYCk7Zih7bWV0aG9kOm0oInVpL29wZW4tbGluayIpLHBhcmFtczpmKHt1cmw6cCgpLmRlc2NyaWJlKCJVUkwgdG8gb3BlbiBpbiB0aGUgaG9zdCdzIGJyb3dzZXIiKX0pfSk7dmFyIFhoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgZmFpbGVkIHRvIG9wZW4gdGhlIFVSTCAoZS5nLiwgZHVlIHRvIHNlY3VyaXR5IHBvbGljeSkuIil9KS5wYXNzdGhyb3VnaCgpLFloPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGRvd25sb2FkIGZhaWxlZCAoZS5nLiwgdXNlciBjYW5jZWxsZWQgb3IgaG9zdCBkZW5pZWQpLiIpfSkucGFzc3Rocm91Z2goKSxRaD1mKHtpc0Vycm9yOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJUcnVlIGlmIHRoZSBob3N0IHJlamVjdGVkIG9yIGZhaWxlZCB0byBkZWxpdmVyIHRoZSBtZXNzYWdlLiIpfSkucGFzc3Rocm91Z2goKTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zYW5kYm94LXByb3h5LXJlYWR5IikscGFyYW1zOmYoe30pfSk7dmFyIEJhPWYoe2Nvbm5lY3REb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBPcmlnaW5zIGZvciBuZXR3b3JrIHJlcXVlc3RzIChmZXRjaC9YSFIvV2ViU29ja2V0KS4KCi0gTWFwcyB0byBDU1AgXGBjb25uZWN0LXNyY1xgIGRpcmVjdGl2ZQotIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgY29ubmVjdGlvbnMgKHNlY3VyZSBkZWZhdWx0KWApLHJlc291cmNlRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3Igc3RhdGljIHJlc291cmNlcyAoaW1hZ2VzLCBzY3JpcHRzLCBzdHlsZXNoZWV0cywgZm9udHMsIG1lZGlhKS5cblxuLSBNYXBzIHRvIENTUCBgaW1nLXNyY2AsIGBzY3JpcHQtc3JjYCwgYHN0eWxlLXNyY2AsIGBmb250LXNyY2AsIGBtZWRpYS1zcmNgIGRpcmVjdGl2ZXNcbi0gV2lsZGNhcmQgc3ViZG9tYWlucyBzdXBwb3J0ZWQ6IGBodHRwczovLyouZXhhbXBsZS5jb21gXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5ldHdvcmsgcmVzb3VyY2VzIChzZWN1cmUgZGVmYXVsdCkiKSxmcmFtZURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9yaWdpbnMgZm9yIG5lc3RlZCBpZnJhbWVzLlxuXG4tIE1hcHMgdG8gQ1NQIGBmcmFtZS1zcmNgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBubyBuZXN0ZWQgaWZyYW1lcyBhbGxvd2VkIChgZnJhbWUtc3JjICdub25lJ2ApIiksYmFzZVVyaURvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkFsbG93ZWQgYmFzZSBVUklzIGZvciB0aGUgZG9jdW1lbnQuXG5cbi0gTWFwcyB0byBDU1AgYGJhc2UtdXJpYCBkaXJlY3RpdmVcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgb25seSBzYW1lIG9yaWdpbiBhbGxvd2VkIChgYmFzZS11cmkgJ3NlbGYnYCkiKX0pLFdhPWYoe2NhbWVyYTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGNhbWVyYSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGNhbWVyYWAgZmVhdHVyZS4iKSxtaWNyb3Bob25lOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgbWljcm9waG9uZSBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYG1pY3JvcGhvbmVgIGZlYXR1cmUuIiksZ2VvbG9jYXRpb246Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBnZW9sb2NhdGlvbiBhY2Nlc3MuXG5cbk1hcHMgdG8gUGVybWlzc2lvbiBQb2xpY3kgYGdlb2xvY2F0aW9uYCBmZWF0dXJlLiIpLGNsaXBib2FyZFdyaXRlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2xpcGJvYXJkIHdyaXRlIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2xpcGJvYXJkLXdyaXRlYCBmZWF0dXJlLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIikscGFyYW1zOmYoe3dpZHRoOnooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgd2lkdGggaW4gcGl4ZWxzLiIpLGhlaWdodDp6KCkub3B0aW9uYWwoKS5kZXNjcmliZSgiTmV3IGhlaWdodCBpbiBwaXhlbHMuIil9KX0pO3ZhciBlJD1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0IikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb21wbGV0ZSB0b29sIGNhbGwgYXJndW1lbnRzIGFzIGtleS12YWx1ZSBwYWlycy4iKX0pfSksdCQ9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1pbnB1dC1wYXJ0aWFsIikscGFyYW1zOmYoe2FyZ3VtZW50czpVKHAoKSxPKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBhcnRpYWwgdG9vbCBjYWxsIGFyZ3VtZW50cyAoaW5jb21wbGV0ZSwgbWF5IGNoYW5nZSkuIil9KX0pLG4kPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtY2FuY2VsbGVkIikscGFyYW1zOmYoe3JlYXNvbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgnT3B0aW9uYWwgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uIChlLmcuLCAidXNlciBhY3Rpb24iLCAidGltZW91dCIpLicpfSl9KSxyJD1mKHtmb250czpwKCkub3B0aW9uYWwoKX0pLGkkPWYoe3ZhcmlhYmxlczpHaC5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1MgdmFyaWFibGVzIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksY3NzOnIkLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyBibG9ja3MgdGhhdCBhcHBzIGNhbiBpbmplY3QuIil9KSxvJD1mKHttZXRob2Q6bSgidWkvcmVzb3VyY2UtdGVhcmRvd24iKSxwYXJhbXM6Zih7fSl9KTtVKHAoKSxPKCkpO3ZhciBqcz1mKHt0ZXh0OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdGV4dCBjb250ZW50IGJsb2Nrcy4iKSxpbWFnZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGltYWdlIGNvbnRlbnQgYmxvY2tzLiIpLGF1ZGlvOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgYXVkaW8gY29udGVudCBibG9ja3MuIikscmVzb3VyY2U6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZUxpbms6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZXNvdXJjZSBsaW5rIGNvbnRlbnQgYmxvY2tzLiIpLHN0cnVjdHVyZWRDb250ZW50OmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgc3RydWN0dXJlZCBjb250ZW50LiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIpLHBhcmFtczpmKHt9KS5vcHRpb25hbCgpfSk7dmFyIGEkPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLG9wZW5MaW5rczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIG9wZW5pbmcgZXh0ZXJuYWwgVVJMcy4iKSxkb3dubG9hZEZpbGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBmaWxlIGRvd25sb2FkcyB2aWEgdWkvZG93bmxvYWQtZmlsZS4iKSxzZXJ2ZXJUb29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0b29scy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHRvb2wgY2FsbHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksc2VydmVyUmVzb3VyY2VzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlcy9saXN0X2NoYW5nZWQgbm90aWZpY2F0aW9ucy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgY2FuIHByb3h5IHJlc291cmNlIHJlYWRzIHRvIHRoZSBNQ1Agc2VydmVyLiIpLGxvZ2dpbmc6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBhY2NlcHRzIGxvZyBtZXNzYWdlcy4iKSxzYW5kYm94OmYoe3Blcm1pc3Npb25zOldhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhlIGhvc3QgKGNhbWVyYSwgbWljcm9waG9uZSwgZ2VvbG9jYXRpb24pLiIpLGNzcDpCYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgZG9tYWlucyBhcHByb3ZlZCBieSB0aGUgaG9zdC4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggY29uZmlndXJhdGlvbiBhcHBsaWVkIGJ5IHRoZSBob3N0LiIpLHVwZGF0ZU1vZGVsQ29udGV4dDpqcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgY29udGV4dCB1cGRhdGVzICh1aS91cGRhdGUtbW9kZWwtY29udGV4dCkgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1vZGVsJ3MgY29udGV4dCBmb3IgZnV0dXJlIHR1cm5zLiIpLG1lc3NhZ2U6anMub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyByZWNlaXZpbmcgY29udGVudCBtZXNzYWdlcyAodWkvbWVzc2FnZSkgZnJvbSB0aGUgdmlldy4iKSxzYW1wbGluZzpmKHt0b29sczpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2wgdXNlIHZpYSBgdG9vbHNgIGFuZCBgdG9vbENob2ljZWAgcGFyYW1ldGVycy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgTExNIHNhbXBsaW5nIChzYW1wbGluZy9jcmVhdGVNZXNzYWdlKSBmcm9tIHRoZSB2aWV3LlxuTWlycm9ycyB0aGUgTUNQIGBDbGllbnRDYXBhYmlsaXRpZXMuc2FtcGxpbmdgIHNoYXBlIHNvIGhvc3RzIGNhbiBwYXNzIGl0IHRocm91Z2guIil9KSxzJD1mKHtleHBlcmltZW50YWw6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRXhwZXJpbWVudGFsIGZlYXR1cmVzIChzdHJ1Y3R1cmUgVEJEKS4iKSx0b29sczpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQXBwIGV4cG9zZXMgTUNQLXN0eWxlIHRvb2xzIHRoYXQgdGhlIGhvc3QgY2FuIGNhbGwuIiksYXZhaWxhYmxlRGlzcGxheU1vZGVzOncoX3QpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkRpc3BsYXkgbW9kZXMgdGhlIGFwcCBzdXBwb3J0cy4iKX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2luaXRpYWxpemVkIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTtmKHtjc3A6QmEub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgVUkgcmVzb3VyY2VzLiIpLHBlcm1pc3Npb25zOldhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgcmVxdWVzdGVkIGJ5IHRoZSBVSSByZXNvdXJjZS4iKSxkb21haW46cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYERlZGljYXRlZCBvcmlnaW4gZm9yIHZpZXcgc2FuZGJveC4KClVzZWZ1bCB3aGVuIHZpZXdzIG5lZWQgc3RhYmxlLCBkZWRpY2F0ZWQgb3JpZ2lucyBmb3IgT0F1dGggY2FsbGJhY2tzLCBDT1JTIHBvbGljaWVzLCBvciBBUEkga2V5IGFsbG93bGlzdHMuCgoqKkhvc3QtZGVwZW5kZW50OioqIFRoZSBmb3JtYXQgYW5kIHZhbGlkYXRpb24gcnVsZXMgZm9yIHRoaXMgZmllbGQgYXJlIGRldGVybWluZWQgYnkgZWFjaCBob3N0LiBTZXJ2ZXJzIE1VU1QgY29uc3VsdCBob3N0LXNwZWNpZmljIGRvY3VtZW50YXRpb24gZm9yIHRoZSBleHBlY3RlZCBkb21haW4gZm9ybWF0LiBDb21tb24gcGF0dGVybnMgaW5jbHVkZToKLSBIYXNoLWJhc2VkIHN1YmRvbWFpbnMgKGUuZy4sIFxge2hhc2h9LmNsYXVkZW1jcGNvbnRlbnQuY29tXGApCi0gVVJMLWRlcml2ZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB3d3ctZXhhbXBsZS1jb20ub2FpdXNlcmNvbnRlbnQuY29tXGApCgpJZiBvbWl0dGVkLCBob3N0IHVzZXMgZGVmYXVsdCBzYW5kYm94IG9yaWdpbiAodHlwaWNhbGx5IHBlci1jb252ZXJzYXRpb24pLmApLHByZWZlcnNCb3JkZXI6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYFZpc3VhbCBib3VuZGFyeSBwcmVmZXJlbmNlIC0gdHJ1ZSBpZiB2aWV3IHByZWZlcnMgYSB2aXNpYmxlIGJvcmRlci4KCkJvb2xlYW4gcmVxdWVzdGluZyB3aGV0aGVyIGEgdmlzaWJsZSBib3JkZXIgYW5kIGJhY2tncm91bmQgaXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIFNwZWNpZnlpbmcgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMgaXMgcmVjb21tZW5kZWQgYmVjYXVzZSBob3N0cycgZGVmYXVsdHMgbWF5IHZhcnkuCgotIFxgdHJ1ZVxgOiByZXF1ZXN0IHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIFxgZmFsc2VcYDogcmVxdWVzdCBubyB2aXNpYmxlIGJvcmRlciArIGJhY2tncm91bmQKLSBvbWl0dGVkOiBob3N0IGRlY2lkZXMgYm9yZGVyYCl9KTtmKHttZXRob2Q6bSgidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiKSxwYXJhbXM6Zih7bW9kZTpfdC5kZXNjcmliZSgiVGhlIGRpc3BsYXkgbW9kZSBiZWluZyByZXF1ZXN0ZWQuIil9KX0pO3ZhciBjJD1mKHttb2RlOl90LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIHRoYXQgd2FzIGFjdHVhbGx5IHNldC4gTWF5IGRpZmZlciBmcm9tIHJlcXVlc3RlZCBpZiBub3Qgc3VwcG9ydGVkLiIpfSkucGFzc3Rocm91Z2goKSx1JD1qKFttKCJtb2RlbCIpLG0oImFwcCIpXSkuZGVzY3JpYmUoIlRvb2wgdmlzaWJpbGl0eSBzY29wZSAtIHdobyBjYW4gYWNjZXNzIHRoZSB0b29sLiIpO2Yoe3Jlc291cmNlVXJpOnAoKS5vcHRpb25hbCgpLHZpc2liaWxpdHk6dyh1JCkub3B0aW9uYWwoKS5kZXNjcmliZShgV2hvIGNhbiBhY2Nlc3MgdGhpcyB0b29sLiBEZWZhdWx0OiBbIm1vZGVsIiwgImFwcCJdCi0gIm1vZGVsIjogVG9vbCB2aXNpYmxlIHRvIGFuZCBjYWxsYWJsZSBieSB0aGUgYWdlbnQKLSAiYXBwIjogVG9vbCBjYWxsYWJsZSBieSB0aGUgYXBwIGZyb20gdGhpcyBzZXJ2ZXIgb25seWApLGNzcDpVZSgpLm9wdGlvbmFsKCkscGVybWlzc2lvbnM6VWUoKS5vcHRpb25hbCgpfSk7Zih7bWltZVR5cGVzOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdBcnJheSBvZiBzdXBwb3J0ZWQgTUlNRSB0eXBlcyBmb3IgVUkgcmVzb3VyY2VzLlxuTXVzdCBpbmNsdWRlIGAidGV4dC9odG1sO3Byb2ZpbGU9bWNwLWFwcCJgIGZvciBNQ1AgQXBwcyBzdXBwb3J0LicpfSk7Zih7bWV0aG9kOm0oInVpL2Rvd25sb2FkLWZpbGUiKSxwYXJhbXM6Zih7Y29udGVudHM6dyhqKFtkbSxtbV0pKS5kZXNjcmliZSgiUmVzb3VyY2UgY29udGVudHMgdG8gZG93bmxvYWQg4oCUIGVtYmVkZGVkIChpbmxpbmUgZGF0YSkgb3IgbGlua2VkIChob3N0IGZldGNoZXMpLiBVc2VzIHN0YW5kYXJkIE1DUCByZXNvdXJjZSB0eXBlcy4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL21lc3NhZ2UiKSxwYXJhbXM6Zih7cm9sZTptKCJ1c2VyIikuZGVzY3JpYmUoJ01lc3NhZ2Ugcm9sZSwgY3VycmVudGx5IG9ubHkgInVzZXIiIGlzIHN1cHBvcnRlZC4nKSxjb250ZW50Oncoa24pLmRlc2NyaWJlKCJNZXNzYWdlIGNvbnRlbnQgYmxvY2tzICh0ZXh0LCBpbWFnZSwgZXRjLikuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcmVzb3VyY2UtcmVhZHkiKSxwYXJhbXM6Zih7aHRtbDpwKCkuZGVzY3JpYmUoIkhUTUwgY29udGVudCB0byBsb2FkIGludG8gdGhlIGlubmVyIGlmcmFtZS4iKSxzYW5kYm94OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcHRpb25hbCBvdmVycmlkZSBmb3IgdGhlIGlubmVyIGlmcmFtZSdzIHNhbmRib3ggYXR0cmlidXRlLiIpLGNzcDpCYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDU1AgY29uZmlndXJhdGlvbiBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpLHBlcm1pc3Npb25zOldhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlNhbmRib3ggcGVybWlzc2lvbnMgZnJvbSByZXNvdXJjZSBtZXRhZGF0YS4iKX0pfSk7dmFyIGwkPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtcmVzdWx0IikscGFyYW1zOldyLmRlc2NyaWJlKCJTdGFuZGFyZCBNQ1AgdG9vbCBleGVjdXRpb24gcmVzdWx0LiIpfSksJG09Zih7dG9vbEluZm86Zih7aWQ6dm4ub3B0aW9uYWwoKS5kZXNjcmliZSgiSlNPTi1SUEMgaWQgb2YgdGhlIHRvb2xzL2NhbGwgcmVxdWVzdC4iKSx0b29sOkthLmRlc2NyaWJlKCJUb29sIGRlZmluaXRpb24gaW5jbHVkaW5nIG5hbWUsIGlucHV0U2NoZW1hLCBldGMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNZXRhZGF0YSBvZiB0aGUgdG9vbCBjYWxsIHRoYXQgaW5zdGFudGlhdGVkIHRoaXMgQXBwLiIpLHRoZW1lOkJoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkN1cnJlbnQgY29sb3IgdGhlbWUgcHJlZmVyZW5jZS4iKSxzdHlsZXM6aSQub3B0aW9uYWwoKS5kZXNjcmliZSgiU3R5bGUgY29uZmlndXJhdGlvbiBmb3IgdGhlbWluZyB0aGUgYXBwLiIpLGRpc3BsYXlNb2RlOl90Lm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvdyB0aGUgVUkgaXMgY3VycmVudGx5IGRpc3BsYXllZC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dyhfdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgaG9zdCBzdXBwb3J0cy4iKSxjb250YWluZXJEaW1lbnNpb25zOmooW2Yoe2hlaWdodDp6KCkuZGVzY3JpYmUoIkZpeGVkIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSksZih7bWF4SGVpZ2h0OmooW3ooKSxLZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgaGVpZ2h0IGluIHBpeGVscy4iKX0pXSkuYW5kKGooW2Yoe3dpZHRoOnooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIHdpZHRoIGluIHBpeGVscy4iKX0pLGYoe21heFdpZHRoOmooW3ooKSxLZSgpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTWF4aW11bSBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSldKSkub3B0aW9uYWwoKS5kZXNjcmliZShgQ29udGFpbmVyIGRpbWVuc2lvbnMuIFJlcHJlc2VudHMgdGhlIGRpbWVuc2lvbnMgb2YgdGhlIGlmcmFtZSBvciBvdGhlcgpjb250YWluZXIgaG9sZGluZyB0aGUgYXBwLiBTcGVjaWZ5IGVpdGhlciB3aWR0aCBvciBtYXhXaWR0aCwgYW5kIGVpdGhlciBoZWlnaHQgb3IgbWF4SGVpZ2h0LmApLGxvY2FsZTpwKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVXNlcidzIGxhbmd1YWdlIGFuZCByZWdpb24gcHJlZmVyZW5jZSBpbiBCQ1AgNDcgZm9ybWF0LiIpLHRpbWVab25lOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgdGltZXpvbmUgaW4gSUFOQSBmb3JtYXQuIiksdXNlckFnZW50OnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpZXIuIikscGxhdGZvcm06aihbbSgid2ViIiksbSgiZGVza3RvcCIpLG0oIm1vYmlsZSIpXSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGxhdGZvcm0gdHlwZSBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24gZGVjaXNpb25zLiIpLGRldmljZUNhcGFiaWxpdGllczpmKHt0b3VjaDpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiV2hldGhlciB0aGUgZGV2aWNlIHN1cHBvcnRzIHRvdWNoIGlucHV0LiIpLGhvdmVyOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgaG92ZXIgaW50ZXJhY3Rpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGV2aWNlIGlucHV0IGNhcGFiaWxpdGllcy4iKSxzYWZlQXJlYUluc2V0czpmKHt0b3A6eigpLmRlc2NyaWJlKCJUb3Agc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxyaWdodDp6KCkuZGVzY3JpYmUoIlJpZ2h0IHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksYm90dG9tOnooKS5kZXNjcmliZSgiQm90dG9tIHNhZmUgYXJlYSBpbnNldCBpbiBwaXhlbHMuIiksbGVmdDp6KCkuZGVzY3JpYmUoIkxlZnQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1vYmlsZSBzYWZlIGFyZWEgYm91bmRhcmllcyBpbiBwaXhlbHMuIil9KS5wYXNzdGhyb3VnaCgpLGQkPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL2hvc3QtY29udGV4dC1jaGFuZ2VkIikscGFyYW1zOiRtLmRlc2NyaWJlKCJQYXJ0aWFsIGNvbnRleHQgdXBkYXRlIGNvbnRhaW5pbmcgb25seSBjaGFuZ2VkIGZpZWxkcy4iKX0pO2Yoe21ldGhvZDptKCJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIpLHBhcmFtczpmKHtjb250ZW50Oncoa24pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbnRleHQgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKSxzdHJ1Y3R1cmVkQ29udGVudDpVKHAoKSxPKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlN0cnVjdHVyZWQgY29udGVudCBmb3IgbWFjaGluZS1yZWFkYWJsZSBjb250ZXh0IGRhdGEuIil9KX0pO2Yoe21ldGhvZDptKCJ1aS9pbml0aWFsaXplIikscGFyYW1zOmYoe2FwcEluZm86S3IuZGVzY3JpYmUoIkFwcCBpZGVudGlmaWNhdGlvbiAobmFtZSBhbmQgdmVyc2lvbikuIiksYXBwQ2FwYWJpbGl0aWVzOnMkLmRlc2NyaWJlKCJGZWF0dXJlcyBhbmQgY2FwYWJpbGl0aWVzIHRoaXMgYXBwIHByb3ZpZGVzLiIpLHByb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoIlByb3RvY29sIHZlcnNpb24gdGhpcyBhcHAgc3VwcG9ydHMuIil9KX0pO3ZhciBtJD1mKHtwcm90b2NvbFZlcnNpb246cCgpLmRlc2NyaWJlKCdOZWdvdGlhdGVkIHByb3RvY29sIHZlcnNpb24gc3RyaW5nIChlLmcuLCAiMjAyNS0xMS0yMSIpLicpLGhvc3RJbmZvOktyLmRlc2NyaWJlKCJIb3N0IGFwcGxpY2F0aW9uIGlkZW50aWZpY2F0aW9uIGFuZCB2ZXJzaW9uLiIpLGhvc3RDYXBhYmlsaXRpZXM6YSQuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgcHJvdmlkZWQgYnkgdGhlIGhvc3QuIiksaG9zdENvbnRleHQ6JG0uZGVzY3JpYmUoIlJpY2ggY29udGV4dCBhYm91dCB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKX0pLnBhc3N0aHJvdWdoKCkscCQ9e3RhcmdldDoiZHJhZnQtMjAyMC0xMiJ9O2FzeW5jIGZ1bmN0aW9uIFVzKHQsbil7bGV0IHI9dFsifnN0YW5kYXJkIl07aWYoci5qc29uU2NoZW1hKXJldHVybiByLmpzb25TY2hlbWFbbl0ocCQpO2lmKHIudmVuZG9yPT09InpvZCIpe2xldHt6Om99PWF3YWl0IHhtKCgpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT50diksdm9pZCAwLGltcG9ydC5tZXRhLnVybCk7cmV0dXJuIG8udG9KU09OU2NoZW1hKHQse2lvOm59KX10aHJvdyBFcnJvcihgU2NoZW1hICh2ZW5kb3I6ICR7ci52ZW5kb3J9KSBkb2VzIG5vdCBpbXBsZW1lbnQgU3RhbmRhcmQgSlNPTiBTY2hlbWEgKH5zdGFuZGFyZC5qc29uU2NoZW1hKS4gVXNlIGEgbGlicmFyeSB0aGF0IGRvZXMgKHpvZCB2NCwgQXJrVHlwZSwgVmFsaWJvdCkgb3Igd3JhcCB5b3VyIHNjaGVtYSBhY2NvcmRpbmdseS5gKX1hc3luYyBmdW5jdGlvbiBQcyh0LG4scj0iIil7bGV0IG89YXdhaXQgdFsifnN0YW5kYXJkIl0udmFsaWRhdGUobik7aWYoby5pc3N1ZXMpe2xldCBlPW8uaXNzdWVzLm1hcChpPT57bGV0IGE9aS5wYXRoPy5tYXAocz0+dHlwZW9mIHM9PSJvYmplY3QiP3Mua2V5OnMpLmpvaW4oIi4iKTtyZXR1cm4gYT9gJHthfTogJHtpLm1lc3NhZ2V9YDppLm1lc3NhZ2V9KS5qb2luKCI7ICIpO3Rocm93IEVycm9yKHIrZSl9cmV0dXJuIG8udmFsdWV9Y2xhc3MgR2EgZXh0ZW5kcyBKaHtfYXBwSW5mbztfY2FwYWJpbGl0aWVzO29wdGlvbnM7X2hvc3RDYXBhYmlsaXRpZXM7X2hvc3RJbmZvO19ob3N0Q29udGV4dDtfcmVnaXN0ZXJlZFRvb2xzPXt9O19pbml0aWFsaXplZFNlbnQ9ITE7X2Fzc2VydEluaXRpYWxpemVkKG4pe2lmKHRoaXMuX2luaXRpYWxpemVkU2VudClyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gQXBwLiR7bn0oKSBjYWxsZWQgYmVmb3JlIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBBd2FpdCBhcHAuY29ubmVjdCgpIGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLCBvciBtb3ZlIGRhdGEgbG9hZGluZyB0byBhbiBvbnRvb2xyZXN1bHQgaGFuZGxlci5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihgJHtyfS4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2UuYCl9ZXZlbnRTY2hlbWFzPXt0b29saW5wdXQ6ZSQsdG9vbGlucHV0cGFydGlhbDp0JCx0b29scmVzdWx0OmwkLHRvb2xjYW5jZWxsZWQ6biQsaG9zdGNvbnRleHRjaGFuZ2VkOmQkfTtzdGF0aWMgT05FX1NIT1RfRVZFTlRTPW5ldyBTZXQoWyJ0b29saW5wdXQiLCJ0b29saW5wdXRwYXJ0aWFsIiwidG9vbHJlc3VsdCIsInRvb2xjYW5jZWxsZWQiXSk7X2V2ZXJIYWRMaXN0ZW5lcj1uZXcgU2V0O19hc3NlcnRIYW5kbGVyVGltaW5nKG4pe2lmKCFHYS5PTkVfU0hPVF9FVkVOVFMuaGFzKG4pfHx0aGlzLl9ldmVySGFkTGlzdGVuZXIuaGFzKG4pfHwodGhpcy5fZXZlckhhZExpc3RlbmVyLmFkZChuKSwhdGhpcy5faW5pdGlhbGl6ZWRTZW50KSlyZXR1cm47bGV0IHI9YFtleHQtYXBwc10gIiR7U3RyaW5nKG4pfSIgaGFuZGxlciByZWdpc3RlcmVkIGFmdGVyIGNvbm5lY3QoKSBjb21wbGV0ZWQgdGhlIHVpL2luaXRpYWxpemUgaGFuZHNoYWtlLiBUaGUgaG9zdCBtYXkgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyBub3RpZmljYXRpb24uIFJlZ2lzdGVyIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIGFwcC5jb25uZWN0KCkuYDtpZih0aGlzLm9wdGlvbnM/LnN0cmljdCl0aHJvdyBFcnJvcihyKTtjb25zb2xlLndhcm4ocil9c2V0RXZlbnRIYW5kbGVyKG4scil7ciYmdGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5zZXRFdmVudEhhbmRsZXIobixyKX1hZGRFdmVudExpc3RlbmVyKG4scil7dGhpcy5fYXNzZXJ0SGFuZGxlclRpbWluZyhuKSxzdXBlci5hZGRFdmVudExpc3RlbmVyKG4scil9b25FdmVudERpc3BhdGNoKG4scil7bj09PSJob3N0Y29udGV4dGNoYW5nZWQiJiYodGhpcy5faG9zdENvbnRleHQ9ey4uLnRoaXMuX2hvc3RDb250ZXh0LC4uLnJ9KX1jb25zdHJ1Y3RvcihuLHI9e30sbz17YXV0b1Jlc2l6ZTohMH0pe3N1cGVyKG8pLHRoaXMuX2FwcEluZm89bix0aGlzLl9jYXBhYmlsaXRpZXM9cix0aGlzLm9wdGlvbnM9byxvLmFsbG93VW5zYWZlRXZhbHx8Vih7aml0bGVzczohMH0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQnIsZT0+KGNvbnNvbGUubG9nKCJSZWNlaXZlZCBwaW5nOiIsZS5wYXJhbXMpLHt9KSksdGhpcy5zZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIsdm9pZCAwKX1yZWdpc3RlckNhcGFiaWxpdGllcyhuKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGNhcGFiaWxpdGllcyBhZnRlciB0cmFuc3BvcnQgaXMgZXN0YWJsaXNoZWQiKTt0aGlzLl9jYXBhYmlsaXRpZXM9RmgodGhpcy5fY2FwYWJpbGl0aWVzLG4pfXJlZ2lzdGVyVG9vbChuLHIsbyl7aWYodGhpcy5fcmVnaXN0ZXJlZFRvb2xzW25dKXRocm93IEVycm9yKGBUb29sICR7bn0gaXMgYWxyZWFkeSByZWdpc3RlcmVkYCk7bGV0IGU9dGhpcyxpPSgpPT57ZS5faW5pdGlhbGl6ZWRTZW50JiZlLl9jYXBhYmlsaXRpZXMudG9vbHM/Lmxpc3RDaGFuZ2VkJiZlLnNlbmRUb29sTGlzdENoYW5nZWQoKX0sYT1yLmlucHV0U2NoZW1hIT09dm9pZCAwLHM9e3RpdGxlOnIudGl0bGUsZGVzY3JpcHRpb246ci5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTpyLmlucHV0U2NoZW1hLG91dHB1dFNjaGVtYTpyLm91dHB1dFNjaGVtYSxhbm5vdGF0aW9uczpyLmFubm90YXRpb25zLF9tZXRhOnIuX21ldGEsZW5hYmxlZDohMCxlbmFibGUoKXt0aGlzLmVuYWJsZWQ9ITAsaSgpfSxkaXNhYmxlKCl7dGhpcy5lbmFibGVkPSExLGkoKX0sdXBkYXRlKGMpe09iamVjdC5hc3NpZ24odGhpcyxjKSxpKCl9LHJlbW92ZSgpe2UuX3JlZ2lzdGVyZWRUb29sc1tuXT09PXMmJihkZWxldGUgZS5fcmVnaXN0ZXJlZFRvb2xzW25dLGkoKSl9LGhhbmRsZXI6YXN5bmMoYyx1KT0+e2lmKCFzLmVuYWJsZWQpdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBkaXNhYmxlZGApO2xldCBsO2lmKGEpe2xldCBnPXMuaW5wdXRTY2hlbWEsdj1nP2F3YWl0IFBzKGcsYz8/e30sYEludmFsaWQgaW5wdXQgZm9yIHRvb2wgJHtufTogYCk6Yz8/e307bD1hd2FpdCBvKHYsdSl9ZWxzZSBsPWF3YWl0IG8odSk7cmV0dXJuIHMub3V0cHV0U2NoZW1hJiYhbC5pc0Vycm9yJiYobC5zdHJ1Y3R1cmVkQ29udGVudD1hd2FpdCBQcyhzLm91dHB1dFNjaGVtYSxsLnN0cnVjdHVyZWRDb250ZW50LGBJbnZhbGlkIG91dHB1dCBmb3IgdG9vbCAke259OiBgKSksbH19O3JldHVybiB0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl09cywhdGhpcy5fY2FwYWJpbGl0aWVzLnRvb2xzJiYhdGhpcy50cmFuc3BvcnQmJnRoaXMucmVnaXN0ZXJDYXBhYmlsaXRpZXMoe3Rvb2xzOntsaXN0Q2hhbmdlZDohMH19KSx0aGlzLmVuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCksaSgpLHN9X3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSExO2Vuc3VyZVRvb2xIYW5kbGVyc0luaXRpYWxpemVkKCl7dGhpcy5fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWR8fCh0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZD0hMCx0aGlzLm9uY2FsbHRvb2w9YXN5bmMobixyKT0+e2xldCBvPXRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuLm5hbWVdO2lmKCFvKXRocm93IEVycm9yKGBUb29sICR7bi5uYW1lfSBub3QgZm91bmRgKTtyZXR1cm4gby5oYW5kbGVyKG4uYXJndW1lbnRzLHIpfSx0aGlzLm9ubGlzdHRvb2xzPWFzeW5jKG4scik9Pih7dG9vbHM6YXdhaXQgUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXModGhpcy5fcmVnaXN0ZXJlZFRvb2xzKS5maWx0ZXIoKFtvLGVdKT0+ZS5lbmFibGVkKS5tYXAoYXN5bmMoW28sZV0pPT57bGV0IGk9e25hbWU6byx0aXRsZTplLnRpdGxlLGRlc2NyaXB0aW9uOmUuZGVzY3JpcHRpb24saW5wdXRTY2hlbWE6ZS5pbnB1dFNjaGVtYT9hd2FpdCBVcyhlLmlucHV0U2NoZW1hLCJpbnB1dCIpOnt0eXBlOiJvYmplY3QiLHByb3BlcnRpZXM6e319fTtyZXR1cm4gZS5vdXRwdXRTY2hlbWEmJihpLm91dHB1dFNjaGVtYT1hd2FpdCBVcyhlLm91dHB1dFNjaGVtYSwib3V0cHV0IikpLGUuYW5ub3RhdGlvbnMmJihpLmFubm90YXRpb25zPWUuYW5ub3RhdGlvbnMpLGUuX21ldGEmJihpLl9tZXRhPWUuX21ldGEpLGl9KSl9KSl9YXN5bmMgc2VuZFRvb2xMaXN0Q2hhbmdlZChuPXt9KXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZFRvb2xMaXN0Q2hhbmdlZCIpLGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdG9vbHMvbGlzdF9jaGFuZ2VkIixwYXJhbXM6bn0pfWdldEhvc3RDYXBhYmlsaXRpZXMoKXtyZXR1cm4gdGhpcy5faG9zdENhcGFiaWxpdGllc31nZXRIb3N0VmVyc2lvbigpe3JldHVybiB0aGlzLl9ob3N0SW5mb31nZXRIb3N0Q29udGV4dCgpe3JldHVybiB0aGlzLl9ob3N0Q29udGV4dH1nZXQgb250b29saW5wdXQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dCIpfXNldCBvbnRvb2xpbnB1dChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0IixuKX1nZXQgb250b29saW5wdXRwYXJ0aWFsKCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIil9c2V0IG9udG9vbGlucHV0cGFydGlhbChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbGlucHV0cGFydGlhbCIsbil9Z2V0IG9udG9vbHJlc3VsdCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIpfXNldCBvbnRvb2xyZXN1bHQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xyZXN1bHQiLG4pfWdldCBvbnRvb2xjYW5jZWxsZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiKX1zZXQgb250b29sY2FuY2VsbGVkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29sY2FuY2VsbGVkIixuKX1nZXQgb25ob3N0Y29udGV4dGNoYW5nZWQoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoImhvc3Rjb250ZXh0Y2hhbmdlZCIpfXNldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIixuKX1fb250ZWFyZG93bjtnZXQgb250ZWFyZG93bigpe3JldHVybiB0aGlzLl9vbnRlYXJkb3dufXNldCBvbnRlYXJkb3duKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib250ZWFyZG93biIsdGhpcy5fb250ZWFyZG93bixuKSx0aGlzLl9vbnRlYXJkb3duPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIobyQsKHIsbyk9PntpZighdGhpcy5fb250ZWFyZG93bil0aHJvdyBFcnJvcigiTm8gb250ZWFyZG93biBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbnRlYXJkb3duKHIucGFyYW1zLG8pfSl9X29uY2FsbHRvb2w7Z2V0IG9uY2FsbHRvb2woKXtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbH1zZXQgb25jYWxsdG9vbChuKXt0aGlzLndhcm5JZlJlcXVlc3RIYW5kbGVyUmVwbGFjZWQoIm9uY2FsbHRvb2wiLHRoaXMuX29uY2FsbHRvb2wsbiksdGhpcy5fb25jYWxsdG9vbD1uLHRoaXMucmVwbGFjZVJlcXVlc3RIYW5kbGVyKGZtLChyLG8pPT57aWYoIXRoaXMuX29uY2FsbHRvb2wpdGhyb3cgRXJyb3IoIk5vIG9uY2FsbHRvb2wgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25jYWxsdG9vbChyLnBhcmFtcyxvKX0pfV9vbmxpc3R0b29scztnZXQgb25saXN0dG9vbHMoKXtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHN9c2V0IG9ubGlzdHRvb2xzKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25saXN0dG9vbHMiLHRoaXMuX29ubGlzdHRvb2xzLG4pLHRoaXMuX29ubGlzdHRvb2xzPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIocG0sKHIsbyk9PntpZighdGhpcy5fb25saXN0dG9vbHMpdGhyb3cgRXJyb3IoIk5vIG9ubGlzdHRvb2xzIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29ubGlzdHRvb2xzKHIucGFyYW1zLG8pfSl9YXNzZXJ0Q2FwYWJpbGl0eUZvck1ldGhvZChuKXtzd2l0Y2gobil7Y2FzZSJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIjppZighdGhpcy5faG9zdENhcGFiaWxpdGllcz8uc2FtcGxpbmcpdGhyb3cgRXJyb3IoYEhvc3QgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyAocmVxdWlyZWQgZm9yICR7bn0pYCk7YnJlYWt9fWFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eShuKXtzd2l0Y2gobil7Y2FzZSJ0b29scy9jYWxsIjpjYXNlInRvb2xzL2xpc3QiOmlmKCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMpdGhyb3cgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHRvb2wgY2FwYWJpbGl0eSAocmVxdWlyZWQgZm9yICR7bn0pYCk7cmV0dXJuO2Nhc2UicGluZyI6Y2FzZSJ1aS9yZXNvdXJjZS10ZWFyZG93biI6cmV0dXJuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoYE5vIGhhbmRsZXIgZm9yIG1ldGhvZCAke259IHJlZ2lzdGVyZWRgKX19YXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuKXt9YXNzZXJ0VGFza0NhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2tzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4pe3Rocm93IEVycm9yKCJUYXNrIGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIE1DUCBBcHBzIil9YXN5bmMgY2FsbFNlcnZlclRvb2wobixyKXtpZih0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY2FsbFNlcnZlclRvb2wiKSx0eXBlb2Ygbj09InN0cmluZyIpdGhyb3cgRXJyb3IoYGNhbGxTZXJ2ZXJUb29sKCkgZXhwZWN0cyBhbiBvYmplY3QgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCBidXQgcmVjZWl2ZWQgYSBzdHJpbmcgKCIke259IikuIERpZCB5b3UgbWVhbjogY2FsbFNlcnZlclRvb2woeyBuYW1lOiAiJHtufSIsIGFyZ3VtZW50czogeyAuLi4gfSB9KT9gKTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRvb2xzL2NhbGwiLHBhcmFtczpufSxXcix7b25wcm9ncmVzczooKT0+e30scmVzZXRUaW1lb3V0T25Qcm9ncmVzczohMCwuLi5yfSl9YXN5bmMgcmVhZFNlcnZlclJlc291cmNlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZWFkU2VydmVyUmVzb3VyY2UiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL3JlYWQiLHBhcmFtczpufSxsbSxyKX1hc3luYyBsaXN0U2VydmVyUmVzb3VyY2VzKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJsaXN0U2VydmVyUmVzb3VyY2VzIiksYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InJlc291cmNlcy9saXN0IixwYXJhbXM6bn0sdW0scil9YXN5bmMgY3JlYXRlU2FtcGxpbmdNZXNzYWdlKG4scil7dGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImNyZWF0ZVNhbXBsaW5nTWVzc2FnZSIpO2xldCBvPW4udG9vbHM/aG06dm07cmV0dXJuIGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJzYW1wbGluZy9jcmVhdGVNZXNzYWdlIixwYXJhbXM6bn0sbyxyKX1zZW5kTWVzc2FnZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgic2VuZE1lc3NhZ2UiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvbWVzc2FnZSIscGFyYW1zOm59LFFoLHIpfXNlbmRMb2cobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvbWVzc2FnZSIscGFyYW1zOm59KX11cGRhdGVNb2RlbENvbnRleHQobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInVwZGF0ZU1vZGVsQ29udGV4dCIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS91cGRhdGUtbW9kZWwtY29udGV4dCIscGFyYW1zOm59LE9hLHIpfW9wZW5MaW5rKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJvcGVuTGluayIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9vcGVuLWxpbmsiLHBhcmFtczpufSxYaCxyKX1zZW5kT3Blbkxpbms9dGhpcy5vcGVuTGluaztkb3dubG9hZEZpbGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImRvd25sb2FkRmlsZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9kb3dubG9hZC1maWxlIixwYXJhbXM6bn0sWWgscil9cmVxdWVzdFRlYXJkb3duKG49e30pe3JldHVybiB0aGlzLm5vdGlmaWNhdGlvbih7bWV0aG9kOiJ1aS9ub3RpZmljYXRpb25zL3JlcXVlc3QtdGVhcmRvd24iLHBhcmFtczpufSl9cmVxdWVzdERpc3BsYXlNb2RlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJyZXF1ZXN0RGlzcGxheU1vZGUiKSx0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvcmVxdWVzdC1kaXNwbGF5LW1vZGUiLHBhcmFtczpufSxjJCxyKX1zZW5kU2l6ZUNoYW5nZWQobil7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvc2l6ZS1jaGFuZ2VkIixwYXJhbXM6bn0pfXNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl7bGV0IG49ITEscj0wLG89MCxlPSgpPT57bnx8KG49ITAscmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpPT57bj0hMTtsZXQgYT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscz1hLnN0eWxlLmhlaWdodDthLnN0eWxlLmhlaWdodD0ibWF4LWNvbnRlbnQiO2xldCBjPU1hdGguY2VpbChhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCk7YS5zdHlsZS5oZWlnaHQ9cztsZXQgdT1NYXRoLmNlaWwod2luZG93LmlubmVyV2lkdGgpOyh1IT09cnx8YyE9PW8pJiYocj11LG89Yyx0aGlzLnNlbmRTaXplQ2hhbmdlZCh7d2lkdGg6dSxoZWlnaHQ6Y30pKX0pKX07ZSgpO2xldCBpPW5ldyBSZXNpemVPYnNlcnZlcihlKTtyZXR1cm4gaS5vYnNlcnZlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCksaS5vYnNlcnZlKGRvY3VtZW50LmJvZHkpLCgpPT5pLmRpc2Nvbm5lY3QoKX1hc3luYyBjb25uZWN0KG49bmV3IEtoKHdpbmRvdy5wYXJlbnQsd2luZG93LnBhcmVudCkscil7aWYodGhpcy50cmFuc3BvcnQpdGhyb3cgRXJyb3IoIkFwcCBpcyBhbHJlYWR5IGNvbm5lY3RlZC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIGFnYWluLiIpO3RoaXMuX2luaXRpYWxpemVkU2VudD0hMSxhd2FpdCBzdXBlci5jb25uZWN0KG4pO3RyeXtsZXQgbz1hd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidWkvaW5pdGlhbGl6ZSIscGFyYW1zOnthcHBDYXBhYmlsaXRpZXM6dGhpcy5fY2FwYWJpbGl0aWVzLGFwcEluZm86dGhpcy5fYXBwSW5mbyxwcm90b2NvbFZlcnNpb246SGh9fSxtJCxyKTtpZihvPT09dm9pZCAwKXRocm93IEVycm9yKGBTZXJ2ZXIgc2VudCBpbnZhbGlkIGluaXRpYWxpemUgcmVzdWx0OiAke299YCk7dGhpcy5faG9zdENhcGFiaWxpdGllcz1vLmhvc3RDYXBhYmlsaXRpZXMsdGhpcy5faG9zdEluZm89by5ob3N0SW5mbyx0aGlzLl9ob3N0Q29udGV4dD1vLmhvc3RDb250ZXh0LGF3YWl0IHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQifSksdGhpcy5faW5pdGlhbGl6ZWRTZW50PSEwLHRoaXMub3B0aW9ucz8uYXV0b1Jlc2l6ZSYmdGhpcy5zZXR1cFNpemVDaGFuZ2VkTm90aWZpY2F0aW9ucygpfWNhdGNoKG8pe3Rocm93IHRoaXMuY2xvc2UoKSxvfX19Y29uc3QgRGU9dD0+ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCksZiQ9e1VTRDoyLEVVUjoyLEdCUDoyLEpQWTowLFVTREM6NixVU0RUOjYsRVVSQzo2fSxuaT17VVNEOiIkIixFVVI6IuKCrCIsR0JQOiLCoyIsSlBZOiLCpSJ9LGckPW5ldyBTZXQoWyJVU0RDIiwiVVNEVCIsIkVVUkMiXSksT3M9e1VTREM6Jzxzdmcgdmlld0JveD0iMCAwIDMyIDMyIj48ZyBmaWxsPSJub25lIj48Y2lyY2xlIGZpbGw9IiMzRTczQzQiIGN4PSIxNiIgY3k9IjE2IiByPSIxNiIvPjxnIGZpbGw9IiNGRkYiPjxwYXRoIGQ9Ik0yMC4wMjIgMTguMTI0YzAtMi4xMjQtMS4yOC0yLjg1Mi0zLjg0LTMuMTU2LTEuODI4LS4yNDMtMi4xOTMtLjcyOC0yLjE5My0xLjU3OCAwLS44NS42MS0xLjM5NiAxLjgyOC0xLjM5NiAxLjA5NyAwIDEuNzA3LjM2NCAyLjAxMSAxLjI3NWEuNDU4LjQ1OCAwIDAwLjQyNy4zMDNoLjk3NWEuNDE2LjQxNiAwIDAwLjQyNy0uNDI1di0uMDZhMy4wNCAzLjA0IDAgMDAtMi43NDMtMi40ODlWOS4xNDJjMC0uMjQzLS4xODMtLjQyNS0uNDg3LS40ODZoLS45MTVjLS4yNDMgMC0uNDI2LjE4Mi0uNDg3LjQ4NnYxLjM5NmMtMS44MjkuMjQyLTIuOTg2IDEuNDU2LTIuOTg2IDIuOTc0IDAgMi4wMDIgMS4yMTggMi43OTEgMy43NzggMy4wOTUgMS43MDcuMzAzIDIuMjU1LjY2OCAyLjI1NSAxLjYzOSAwIC45Ny0uODUzIDEuNjM4LTIuMDExIDEuNjM4LTEuNTg1IDAtMi4xMzMtLjY2Ny0yLjMxNi0xLjU3OC0uMDYtLjI0Mi0uMjQ0LS4zNjQtLjQyNy0uMzY0aC0xLjAzNmEuNDE2LjQxNiAwIDAwLS40MjYuNDI1di4wNmMuMjQzIDEuNTE4IDEuMjE5IDIuNjEgMy4yMyAyLjkxNHYxLjQ1N2MwIC4yNDIuMTgzLjQyNS40ODcuNDg1aC45MTVjLjI0MyAwIC40MjYtLjE4Mi40ODctLjQ4NVYyMS4zNGMxLjgyOS0uMzAzIDMuMDQ3LTEuNTc4IDMuMDQ3LTMuMjE3eiIvPjxwYXRoIGQ9Ik0xMi44OTIgMjQuNDk3Yy00Ljc1NC0xLjctNy4xOTItNi45OC01LjQyNC0xMS42NTMuOTE0LTIuNTUgMi45MjUtNC40OTEgNS40MjQtNS40MDIuMjQ0LS4xMjEuMzY1LS4zMDMuMzY1LS42MDd2LS44NWMwLS4yNDItLjEyMS0uNDI0LS4zNjUtLjQ4NS0uMDYxIDAtLjE4MyAwLS4yNDQuMDZhMTAuODk1IDEwLjg5NSAwIDAwLTcuMTMgMTMuNzE3YzEuMDk2IDMuNCAzLjcxNyA2LjAxIDcuMTMgNy4xMDIuMjQ0LjEyMS40ODggMCAuNTQ4LS4yNDMuMDYxLS4wNi4wNjEtLjEyMi4wNjEtLjI0M3YtLjg1YzAtLjE4Mi0uMTgyLS40MjQtLjM2NS0uNTQ2em02LjQ2LTE4LjkzNmMtLjI0NC0uMTIyLS40ODggMC0uNTQ4LjI0Mi0uMDYxLjA2MS0uMDYxLjEyMi0uMDYxLjI0M3YuODVjMCAuMjQzLjE4Mi40ODUuMzY1LjYwNyA0Ljc1NCAxLjcgNy4xOTIgNi45OCA1LjQyNCAxMS42NTMtLjkxNCAyLjU1LTIuOTI1IDQuNDkxLTUuNDI0IDUuNDAyLS4yNDQuMTIxLS4zNjUuMzAzLS4zNjUuNjA3di44NWMwIC4yNDIuMTIxLjQyNC4zNjUuNDg1LjA2MSAwIC4xODMgMCAuMjQ0LS4wNmExMC44OTUgMTAuODk1IDAgMDA3LjEzLTEzLjcxN2MtMS4wOTYtMy40Ni0zLjc3OC02LjA3LTcuMTMtNy4xNjJ6Ii8+PC9nPjwvZz48L3N2Zz4nLFVTRFQ6Jzxzdmcgdmlld0JveD0iMCAwIDMyIDMyIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgY3g9IjE2IiBjeT0iMTYiIHI9IjE2IiBmaWxsPSIjMjZBMTdCIi8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE3LjkyMiAxNy4zODN2LS4wMDJjLS4xMS4wMDgtLjY3Ny4wNDItMS45NDIuMDQyLTEuMDEgMC0xLjcyMS0uMDMtMS45NzEtLjA0MnYuMDAzYy0zLjg4OC0uMTcxLTYuNzktLjg0OC02Ljc5LTEuNjU4IDAtLjgwOSAyLjkwMi0xLjQ4NiA2Ljc5LTEuNjZ2Mi42NDRjLjI1NC4wMTguOTgyLjA2MSAxLjk4OC4wNjEgMS4yMDcgMCAxLjgxMi0uMDUgMS45MjUtLjA2di0yLjY0M2MzLjg4LjE3MyA2Ljc3NS44NSA2Ljc3NSAxLjY1OCAwIC44MS0yLjg5NSAxLjQ4NS02Ljc3NSAxLjY1N20wLTMuNTl2LTIuMzY2aDUuNDE0VjcuODE5SDguNTk1djMuNjA4aDUuNDE0djIuMzY1Yy00LjQuMjAyLTcuNzA5IDEuMDc0LTcuNzA5IDIuMTE4IDAgMS4wNDQgMy4zMDkgMS45MTUgNy43MDkgMi4xMTh2Ny41ODJoMy45MTN2LTcuNTg0YzQuMzkzLS4yMDIgNy42OTQtMS4wNzMgNy42OTQtMi4xMTYgMC0xLjA0My0zLjMwMS0xLjkxNC03LjY5NC0yLjExNyIvPjwvZz48L3N2Zz4nfSx2JD0odCxuKT0+e2NvbnN0IHI9ZiRbKG58fCIiKS50b1VwcGVyQ2FzZSgpXT8/MixvPXQ8MCxlPVN0cmluZyhNYXRoLmFicyh0KSkucGFkU3RhcnQocisxLCIwIiksaT1lLnNsaWNlKDAsZS5sZW5ndGgtcikucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZywiLCIpLGE9cj4wP2AuJHtlLnNsaWNlKGUubGVuZ3RoLXIpfWA6IiI7cmV0dXJuYCR7bz8iLSI6IiJ9JHtpfSR7YX1gfSxSbj0odCxuKT0+e2NvbnN0IHI9KG58fCIiKS50b1VwcGVyQ2FzZSgpO2xldCBvPXYkKHQscik7aWYoZyQuaGFzKHIpJiZvLmluY2x1ZGVzKCIuIikpe289by5yZXBsYWNlKC8wKyQvLCIiKS5yZXBsYWNlKC9cLiQvLCIiKTtjb25zdCBlPW8uaW5kZXhPZigiLiIpO2U8MD9vKz0iLjAwIjpvLmxlbmd0aC1lLTE8MiYmKG89YCR7b30keyIwIi5yZXBlYXQoMi0oby5sZW5ndGgtZS0xKSl9YCl9cmV0dXJuIG99LERzPSh0LG4pPT5gJHtuaVsobnx8IiIpLnRvVXBwZXJDYXNlKCldPz8iIn0ke1JuKHQsbil9YCxNPXQ9PlN0cmluZyh0KS5yZXBsYWNlKC9bJjw+IiddL2csbj0+KHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsifSlbbl0pLF9tPXQ9Pntjb25zdCBuPW5ldyBEYXRlKHQpO3JldHVybiBOdW1iZXIuaXNOYU4obi5nZXRUaW1lKCkpPyIiOm4udG9JU09TdHJpbmcoKS5zbGljZSgwLDEwKX0sWGE9KHQsbik9PntEZSgia2luZCIpLnRleHRDb250ZW50PXQsRGUoIm1lcmNoYW50IikudGV4dENvbnRlbnQ9bj8/IiJ9LGgkPXtwZW5kaW5nX3BheW1lbnQ6InBlbmRpbmcgcGF5bWVudCJ9LGJtPXQ9PmA8c3BhbiBjbGFzcz0iYmFkZ2UgaXMtJHtNKHQpfSI+PHNwYW4gY2xhc3M9ImRvdCI+PC9zcGFuPiR7TShoJFt0XT8/dC5yZXBsYWNlKC9fL2csIiAiKSl9PC9zcGFuPmAsJCQ9dD0+e2NvbnN0IG49KHR8fCIiKS50b1VwcGVyQ2FzZSgpO3JldHVybiBPc1tuXT9gPGRpdiBjbGFzcz0idG9rIGxvZ28iPiR7T3Nbbl19PC9kaXY+YDpuaVtuXT9gPGRpdiBjbGFzcz0idG9rIj4ke00obmlbbl0pfTwvZGl2PmA6YDxkaXYgY2xhc3M9InRvayBjb2RlIj4ke00obi5zbGljZSgwLDQpKX08L2Rpdj5gfSxfJD10PT5gPGRpdiBjbGFzcz0iY2N5Ij4ke00oKHR8fCIiKS50b1VwcGVyQ2FzZSgpKX08L2Rpdj5gLGIkPXQ9PntmdD1udWxsLFhhKCJDdXJsZXNzIHdhbGxldCIsdC5tZXJjaGFudElkKTtjb25zdCBuPXQuY3VybGVzc1dhbGxldD8/W107aWYoIW4ubGVuZ3RoKXtEZSgiY29udGVudCIpLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZW1wdHkiPk5vIHdhbGxldCBiYWxhbmNlIHlldC48L2Rpdj4nO3JldHVybn1EZSgiY29udGVudCIpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0id2FsIj4ke24ubWFwKHI9PmA8ZGl2IGNsYXNzPSJ3cm93Ij4keyQkKHIuY3VycmVuY3kpfSR7XyQoci5jdXJyZW5jeSl9CiAgICAgICAgPGRpdiBjbGFzcz0ibnVtcyI+PGRpdiBjbGFzcz0iYXYiPiR7RHMoci5hdmFpbGFibGUsci5jdXJyZW5jeSl9PC9kaXY+PGRpdiBjbGFzcz0iZnoiPmZyb3plbiAke0RzKHIuZnJvemVuLHIuY3VycmVuY3kpfTwvZGl2PjwvZGl2PgogICAgICA8L2Rpdj5gKS5qb2luKCIiKX08L2Rpdj5gfSx5JD10PT57aWYoIXR8fCF0LmJyYW5kKXJldHVybiIiO2NvbnN0IG49dC5sYXN0ND9gIOKAouKAouKAouKAoiAke00oU3RyaW5nKHQubGFzdDQpKX1gOiIiO3JldHVybmAke00oU3RyaW5nKHQuYnJhbmQpKX0ke259YH0sayQ9dD0+e2NvbnN0IG49KHQubGluZUl0ZW1zPz9bXSkubWFwKG89Pk0oYCR7by5uYW1lfSR7by5xdWFudGl0eT4xP2Agw5cke28ucXVhbnRpdHl9YDoiIn1gKSkuam9pbigiLCAiKXx8TShTdHJpbmcodC5pZCkpLHI9W3kkKHQucGF5bWVudE1ldGhvZCksX20odC5jcmVhdGVkQXQpXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpO3JldHVybmA8ZGl2IGNsYXNzPSJvcmRlciBjbGlja2FibGUiIGRhdGEtb2lkPSIke00oU3RyaW5nKHQuaWQpKX0iPgogICAgPGRpdiBjbGFzcz0iYW10Ij4ke1JuKHQuYW1vdW50LHQuY3VycmVuY3kpfTxzcGFuIGNsYXNzPSJjY3kiPiR7TSh0LmN1cnJlbmN5KX08L3NwYW4+PC9kaXY+CiAgICAke2JtKFN0cmluZyh0LnN0YXR1cz8/IiIpKX0KICAgIDxkaXYgY2xhc3M9ImRlc2MiPiR7bn08L2Rpdj4KICAgIDxkaXYgY2xhc3M9IndoZW4iPiR7cn08L2Rpdj4KICA8L2Rpdj5gfSxHcj0xMDtsZXQgcGU9MCxUbj1udWxsLGZ0PW51bGw7Y29uc3QgeW09dD0+e1RuPXQsZnQ9bnVsbCxYYSgiT3JkZXJzIix0Lm1lcmNoYW50SWQpO2NvbnN0IG49dC5vcmRlcnM/P1tdO2lmKCFuLmxlbmd0aCl7RGUoImNvbnRlbnQiKS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImVtcHR5Ij5ObyBvcmRlcnMgeWV0LjwvZGl2Pic7cmV0dXJufWNvbnN0IHI9TWF0aC5jZWlsKG4ubGVuZ3RoL0dyKTtwZT1NYXRoLm1heCgwLE1hdGgubWluKHBlLHItMSkpO2NvbnN0IG89KCk9PntwZT1NYXRoLm1heCgwLE1hdGgubWluKHBlLHItMSkpO2NvbnN0IGU9cGUqR3IsaT1uLnNsaWNlKGUsZStHcikubWFwKGskKS5qb2luKCIiKSxhPXI+MT9gPGRpdiBjbGFzcz0icGFnZXIiPgogICAgICAgICAgICA8YnV0dG9uIGlkPSJvcC1wcmV2IiR7cGU9PT0wPyIgZGlzYWJsZWQiOiIifT7igLkgUHJldjwvYnV0dG9uPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0icGFnZWluZm8iPlBhZ2UgJHtwZSsxfSAvICR7cn0gwrcgJHtuLmxlbmd0aH0gb3JkZXJzPC9zcGFuPgogICAgICAgICAgICA8YnV0dG9uIGlkPSJvcC1uZXh0IiR7cGU+PXItMT8iIGRpc2FibGVkIjoiIn0+TmV4dCDigLo8L2J1dHRvbj4KICAgICAgICAgIDwvZGl2PmA6IiI7RGUoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9Im9yZGVycyI+JHtpfTwvZGl2PiR7YX1gLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcC1wcmV2Iik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3BlLT0xLG8oKX0pLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcC1uZXh0Iik/LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e3BlKz0xLG8oKX0pO2Zvcihjb25zdCBzIG9mIEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLm9yZGVyLmNsaWNrYWJsZSIpKSlzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwoKT0+e2NvbnN0IGM9bi5maW5kKHU9PlN0cmluZyh1LmlkKT09PXMuZGF0YXNldC5vaWQpO2MmJlMkKHQsYyl9KX07bygpfSxTJD0odCxuKT0+e2NvbnN0IHI9U3RyaW5nKG4uaWQpO2Z0PXI7Y29uc3Qgbz17bWVyY2hhbnRJZDp0Lm1lcmNoYW50SWQsbW9kZTp0Lm1vZGUsb3JkZXI6bn07am4oey4uLm8scGF5bWVudDp2b2lkIDB9KSxBZS5jYWxsU2VydmVyVG9vbCh7bmFtZToiZ2V0X29yZGVyIixhcmd1bWVudHM6e29yZGVySWQ6bi5pZH19KS50aGVuKGU9PntmdD09PXImJmpuKGU/LnN0cnVjdHVyZWRDb250ZW50Pz97Li4ubyxwYXltZW50Om51bGx9KX0pLmNhdGNoKCgpPT57ZnQ9PT1yJiZqbih7Li4ubyxwYXltZW50Om51bGx9KX0pfSx3JD10PT57aWYodD09PXZvaWQgMClyZXR1cm4nPHNwYW4gY2xhc3M9Im11dGVkIj5sb2FkaW5n4oCmPC9zcGFuPic7aWYoIXQpcmV0dXJuJzxzcGFuIGNsYXNzPSJtdXRlZCI+4oCUPC9zcGFuPic7Y29uc3Qgbj10Lmxhc3Q0P2Ag4oCi4oCi4oCi4oCiICR7TShTdHJpbmcodC5sYXN0NCkpfWA6IiI7cmV0dXJuYDxzcGFuIGNsYXNzPSJicmFuZCI+JHtNKFN0cmluZyh0LmJyYW5kPz8iY2FyZCIpKX08L3NwYW4+JHtufWB9LEllPSh0LG4pPT5gPGRpdiBjbGFzcz0ia3YiPjxzcGFuIGNsYXNzPSJrIj4ke00odCl9PC9zcGFuPjxzcGFuIGNsYXNzPSJ2Ij4ke259PC9zcGFuPjwvZGl2PmAseG49KHQsbik9Pm4/YDxkaXYgY2xhc3M9Im9kLXNlYyI+PGRpdiBjbGFzcz0ib2Qtc2VjLWgiPiR7TSh0KX08L2Rpdj4ke259PC9kaXY+YDoiIixOcz10PT4hdHx8dHlwZW9mIHQhPSJvYmplY3QiPyIiOk9iamVjdC5lbnRyaWVzKHQpLmZpbHRlcigoWyxuXSk9Pm4hPW51bGwmJm4hPT0iIiYmdHlwZW9mIG4hPSJvYmplY3QiKS5tYXAoKFtuLHJdKT0+SWUobi5yZXBsYWNlKC9fL2csIiAiKSxNKFN0cmluZyhyKSkpKS5qb2luKCIiKSxqbj10PT57Y29uc3Qgbj10Lm9yZGVyO2lmKCFuKXJldHVybjtYYSgiT3JkZXIiLHQubWVyY2hhbnRJZCk7Y29uc3Qgcj10LnBheW1lbnQ/P24ucGF5bWVudE1ldGhvZCxvPShuLmxpbmVJdGVtcz8/W10pLm1hcChsPT5gPGRpdiBjbGFzcz0ibGkiPgogICAgICAgIDxkaXYgY2xhc3M9ImxpLW5hbWUiPiR7TShsLm5hbWUpfTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImxpLXF0eSI+w5cke00oU3RyaW5nKGwucXVhbnRpdHkpKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsaS1hbXQiPiR7Um4oKGwudW5pdFByaWNlPz8wKSoobC5xdWFudGl0eT8/MSksbi5jdXJyZW5jeSl9ICR7TShuLmN1cnJlbmN5KX08L2Rpdj4KICAgICAgPC9kaXY+YCkuam9pbigiIiksZT1yP1tyLnR5cGUsci5mdW5kaW5nXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpOiIiLGk9cj8ucmVmZXJlbmNlPz9uLnJhaWxSZWZlcmVuY2UsYT1bbi5wcm90b2NvbD9TdHJpbmcobi5wcm90b2NvbCkudG9VcHBlckNhc2UoKToiIixuLnJhaWw/P3I/LnByb3ZpZGVyXS5maWx0ZXIoQm9vbGVhbikuam9pbigiIMK3ICIpLHM9KGE/SWUoIlNvdXJjZSIsTShhKSk6IiIpK0llKCJDYXJkIix3JChyKSkrKGU/SWUoIk1ldGhvZCIsTShlKSk6IiIpKyhyPy53YWxsZXQ/SWUoIldhbGxldCIsTShTdHJpbmcoci53YWxsZXQpKSk6IiIpKyhpP0llKCJSZWZlcmVuY2UiLGA8c3BhbiBjbGFzcz0ibW9ubyI+JHtNKFN0cmluZyhpKSl9PC9zcGFuPmApOiIiKSxjPU5zKG4uYnV5ZXIpKyhuLmN1c3RvbWVySWQ/SWUoIkN1c3RvbWVyIixgPHNwYW4gY2xhc3M9Im1vbm8iPiR7TShTdHJpbmcobi5jdXN0b21lcklkKSl9PC9zcGFuPmApOiIiKSx1PVRuPyc8YnV0dG9uIGlkPSJvZC1iYWNrIiBjbGFzcz0iYmFjayI+4oC5IE9yZGVyczwvYnV0dG9uPic6IiI7RGUoImNvbnRlbnQiKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImRldGFpbCI+CiAgICAke3V9CiAgICA8ZGl2IGNsYXNzPSJvZC1oZXJvIj4KICAgICAgPGRpdiBjbGFzcz0ib2QtdG90YWwiPiR7Um4obi5hbW91bnQsbi5jdXJyZW5jeSl9IDxzcGFuIGNsYXNzPSJjY3kiPiR7TShuLmN1cnJlbmN5KX08L3NwYW4+PC9kaXY+CiAgICAgICR7Ym0oU3RyaW5nKG4uc3RhdHVzPz8iIikpfQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJvZC1zdWIiPiR7X20obi5jcmVhdGVkQXQpfSDCtyA8c3BhbiBjbGFzcz0ibW9ubyI+JHtNKG4uaWQpfTwvc3Bhbj48L2Rpdj4KICAgICR7eG4oIkl0ZW1zIixvfHwnPGRpdiBjbGFzcz0iZW1wdHkiPk5vIGl0ZW1zLjwvZGl2PicpfQogICAgJHt4bigiUGF5bWVudCIscyl9CiAgICAke3huKCJCdXllciIsYyl9CiAgICAke3huKCJEZXRhaWxzIixOcyhuLm1ldGFkYXRhKSl9CiAgPC9kaXY+YCxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib2QtYmFjayIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntUbiYmeW0oVG4pfSl9LGttPXQ9Pnt0JiYodC5vcmRlcj9qbih0KTpBcnJheS5pc0FycmF5KHQuY3VybGVzc1dhbGxldCk/YiQodCk6QXJyYXkuaXNBcnJheSh0Lm9yZGVycykmJnltKHQpKX0sU209dD0+e2NvbnN0IG49dD8uc3R5bGVzPy52YXJpYWJsZXM7aWYobilmb3IoY29uc3RbcixvXW9mIE9iamVjdC5lbnRyaWVzKG4pKW8hPW51bGwmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShyLFN0cmluZyhvKSk7dD8udGhlbWUmJihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGF0YXNldC50aGVtZT10LnRoZW1lKX0sQWU9bmV3IEdhKHtuYW1lOiJhZ2VudGJhbmstbWVyY2hhbnQta2l0Iix2ZXJzaW9uOiIxLjAuMCJ9KTtBZS5vbnRvb2xyZXN1bHQ9dD0+a20odD8uc3RydWN0dXJlZENvbnRlbnQpO0FlLm9uaG9zdGNvbnRleHRjaGFuZ2VkPXQ9PlNtKHQpO0FlLmNvbm5lY3QoKS50aGVuKCgpPT57U20oQWUuZ2V0SG9zdENvbnRleHQoKSk7Y29uc3QgdD1BZS5nZXRIb3N0Q29udGV4dCgpPy50b29sSW5mbz8ucmVzdWx0Py5zdHJ1Y3R1cmVkQ29udGVudDt0JiZrbSh0KX0pLmNhdGNoKCgpPT57fSk7PC9zY3JpcHQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBjbGFzcz0iY2FyZCI+CiAgICAgIDxkaXYgY2xhc3M9ImhlYWQiIGlkPSJoZWFkIj4KICAgICAgICA8aW1nIGNsYXNzPSJsb2dvIiBhbHQ9IkN1cmxlc3MiIHNyYz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJMEFBQUI0Q0FZQUFBRFBBWEVQQUFBa1VFbEVRVlI0MnUyZGVaaGNWWm4vdis4NTkxWjFkN283WVVrUURiTEk0aVFRa0xDalV3a0pFSFlDVkpCVmNaejRqRDlRbEhHY2thVlNqZzZqd29EaU1JTDRJSWdHMHVLNGtJVUFka3BHUVVtRFJHaU5pSkFRRXBPUXBaUGVxdTQ1Ny9mM1IxVjFWMjlKZDZjNzZRNTFuaWRVVVYzcnZaLzdidWM5MzROcnZyYnFoQ3R2WDNVWUFDUVgwSUlVbEVkNTlCaEpXN3huYXNaVS9BbVdsMTM5OVZYWDFzMFJEeEVtRjlDV0QxSjVGSWJrZ2FuejFkVlQ5eDh6WnNyUkFnQno3MlBZc25YMWZHTXNOamF2K2NTUzlDbmJrZ3RvNjVKUWlMQjgzTjdOMXFYT0EwQmw5WlJMQlB3N2c5aDlLTGdqQVlDcnZ2SFcwbXZ2MnJqdW8vL3gycXppeXhLcCtxQjg4TjUxdzNTNG8vR1Rxc2ZVSHY5UVplMnhDekYrVW5YblUwaEJpZ1lBcnY3R1cwOTk4dDVXWG5INzYvZC85S3V2SHdBQXFSUk5xdkQzOHRqYlI2TERTRlR0TS9XOE1lTk9mTHVxOWtQMVJjTUN3T1JCRUNFd0R5RGxuZFYvT0wrMWFWMm1ldHo3L2xFRUwxenhsZGV1VGFkRjAyblJ2TlVwQjhwN2Q2Q2JjZVBHblhwdzlUNG5QbXdsL2dTaGphM2JYcHJlYVlHZ1hRQklwV2pTYWRIa0Y1ZVBEY2J0ODJTc292WmtsMnVGZDI2UjVySmZYSkNlOUVveHk2cWJJNzU4b1BjYVZ5U0YyTVhXN0h2cTlZQy8yVWhzdlBkdFM1cTM0a0tnd1JVc2phTEU1UFFFNTZ0L0hoK0tyUmRySjVNQWZkUkcxVHU4Vy92MXV2VDA1cUs3U3FkRnk4ZDl0R1pGQ1F0a0hBQ00zZS9VTTFUa2RnRk9BZ0ZxOVBUMk1mWkNySG0rcldoaFNsN1lpNkZLTHJCMWRYUDg1Zi8raDROTVVKVVJ5cUZSMUtieHluRW15amF2VkxyYjZtNmJ2S0RENnBTenJGR2JGWTA5NENPSGdreUIrQmlaNTRMcWY3VTliRHNYNjFlMGRBZW1UMmhLWGRBbFgzNzFpSGhRa1FGd29NdTFabTFRRVJkcjRhUHNZdStqMng1UFQxbGV6TEl5NldrZUtNTXp3bUZSQUJ3L1BsRWRDVDhMNFQ4THpEanZjem1JamFtNjUyUFVzemR2L3QyMjNvRFpJVFNkSUV4M2MyNTU4VmhiV2Z0TGd2dTZiSnNqYU1LS2F1T2pOay9pdThMMjIrdlNKNnd1d3pOU1I2cVErYVlWQVBaN3ovUnJGTHhGeEJ5cEdvSHEyMFZzaFZlMzNFU3RaelkxdmJ5MUwyQjJDazBwT01sYkcwNjE4ZHFuVkgyVmQxa0NKQUFiVmxURFpWdTNnUHJOdHR6MmJ5Mzh6NDlzNmJSVTBESThleHFXeG1LUWkzMG16cGdsaWx0RTVIU3FCOVY1a2lwaVF1Lzk3elZzUDdONVhjTTdwZTVyVU5DVWduUEp6Uy9PakZYV0xQUWFCZXB5K2NoYjFjR1lJSXhWSVpkdFdVM1ZPNktBMzNzaWZVSnJHWjZSQWN2NDk1OTV1aXIrRGNCNUlFR05QQWtodllvRWdYcjNxalArakpiMXoyM1lHVEQ5aGlZUERvTk1XdHlsdDc1NFVSQ3Yvb242SEwzTEdZRUkxWk9FRjJ1RElLeEFsRzFaU2ZWM2JvbTEvaUNUbnQ1ZWRsdTd1OWFTUCtudm1UanJSRy94QlpCSlFrQ2ZVNm9DZ0NIVkNXeWdkSCt5enMvWXRPazNhL3NEeklDZ0FZQ3BjNWVIRGZlZkVGMTIyMHRYQmZIcVI2SmNxNmQzQm9DQWhLb25TYlZCekJvYklzcTEvcEhRdStMdGJ6MVNkOWVjdGc1NDVrM3o1V3hycUdHWnhHTE1jc0NoNTUxRTVlY0JKaUhHcU0rUlZBVnBTUUtrQTB4QTlhOGpwOU8zYkhuMnJmNENNMkJvU3NHWmZWdkRwK0lWWTc4VHRUVTdxck1BaEZTUUJGV1ZVTm9nYm8wSjRIS3RLNVg0ZHB1MC9PRHByNTNaVkhSYmsxNEZ5M1dlWGFpekpCSVdtWHlkQlFBT1BQU2lqNmpvWjBGZUFqRkNud1B6YnFBQWk0SktKMklDMHIvaGxXYzByYys4T1JCZ0JnVk5LVGlYM1BiaVRmR0tzWGRrVzVzYzZLMlNBaElrQVJDcVhrSFNCcUUxTmdhWGJWMU4rZ2VpckQ2NDVKN3BhL0xGeEpScGJKd3NkWFhKY3R6VDMzZ2xzY3lVd0NJSEhIN1IrVUpjRDhGWmdJSDZMRUQxSUd6SGhVeUM5RjVncmFwZjQ2MU8zN1ltODVlQkFqTm9hRXFENDltM05zeUxWNHhMWlZ1M1JxQVBpMThRVkJENUpFdFZWVWdWYXdNYlZDREtObTlSNE5HQStPN1AvMnZhUzZYdk9RM0xOSjFPbDYxUDkvT1VUQnJVZGJxZ2d3KythSnlMeGVZb2RLNklUQ1VKMVJ4QlZaSVdlVGRVZ0VWQnFnZU1wZnExQXA2eGFXMzl5c0VBczB2UUFKQkVxdDVtMHRQZDdDOHR2ek0rWnR6bjIxczJSeUREN3RDUW1yOVZLdWdWWWdJYnEwTFUzcXdRZVpMZWYyK0wzYkxvK1VMYzAyRjlGaVRmNVpYbUhsWUZCLzNkUnljcmVhMVFyNFRZaVVvSDlaR0NTZ0lsc0dqSGJRY3c5QnMwY2pPMnJNKzhrcC9ON256ZjNRVU5BRW9pdFN3UHpzME45OFVxYStibXdVRUlhTUhpbFA2QVBFeEtKWlNlWUJDRWxTQUo3OXBlQXpHZjlJOHR1ZWZjeHRJcERRQjQ5N2l2bEVra2xwbE1DU2pqSnlXcksyMXNGcjErbk5TelJJS1FQb0xYeUJlNkRrelhZMXg2ekwwSGpGVnlrOWRveHRhMzYxL2VGV0NHQUpvOE9NbGtuYW1ybStNdnZubjVEMk1WTlZkbVd6WkhRTkhpOUFZTlM2NENlcEt3MWxwajQ0aXl6UkhKZWlIbnE0YUxudnJPMlJ0NkFMUjNXU0FCVXBKSXdHUXk2UzRuOHBBcDE1MnM2aTRuT051SU9ZUWsxT2RBVlFmU0VNekRncDdIdU9DV3ZNQllWZDFLdXJNMnJYbm1oVjBGWm9pZ3lUZHhwZVpCZ0hsNE9Uci9mOFA0bUF1enJWc2lBT0hPb0NueHU0cDhFU0V3UVFVQXdHZGJOeEd5Vk1ISGJkUmV2L1I3Y3phWFRNZWJCS2FaQ1kwYk9mcXNVTW9nMlNqWXNFRktYUThBSFBxaGY1aEM5UmNDbkUzaWVCRUwxUWowemhjU0RFUFZqb1NES0J4RGRNS0NMakdNYnZmZW5iWDU3YWVmSHdwZ2hnNmF3a25FdkhtYzlabkZzWXFhL1JjR3Nhb1p1WmF0RG9LZzk2dWdsNnNqLzhPcHBGSVZ4dVN0RDZud3ViYjFBT3FwK29RRE1wa0hMbDNUZldaK3c0YnhNbUhDaUlOSWdKUWtrNDJ5WWNNa3lXVFNIa0RIZDVzNmRXNjRHZkloSVdhQjdueVNKeGdUaXFxRDk3bThHeGMxSUUySDVkYVNpdzBGUzZNbE1hUjZGVEdHWkxPNjZMeDMxanoxcTZFQ1ptaWhLZW5GU1h5NnZucmMyS3FuZ3JEaWxGenJOZ2RCVUhvVmRMYzBIZmRSR3UwWEFZS0NoSWl4MXNaQUtseXVkYnNTTDRqbzA1NW1XVHpYdnVLcFI2NXQ2UkZ2SmVaWkFKZ3dZVExySnIxS3BOTXNQV0hEQWtncUpjbkd5YkpodzZ1U21kQkkxUFhNVGc0LzZZYUpFRDBacW1kUy9UUUFSNGtKb1Q0Q05RSlZYZDcxMFBScVJiVEV2YVB6b2l2QW80QVlndTFlbzNNM3JWcGFQNVRBRERrMHBlQ2M5YmtsKzFiRzk2bTNRV3hLMUw3ZEFReDJhbWtLOVoxT2FMb0VkZ1RwbFJRQnJOZ1lqQmk0cUEzcW83Y0FMS2ZpMXdMLzJ3RDQ0ek0vK05pbXZpeGk4YVFXSDVvd1lUSW5UWHFWNmVJRDZYbTlnRFZQa0FMUTJDaEpKTkgxOVkyc3E4dTNIUFRtaW83OFNQUEJKdExqRlA0MFVrOG5lWXd4dGpyL3N5T29qMGhsSWFpbElTbGRqczlPb0NrK2grb1ZFQUdSVStZdTJ2am1rMDhPTlREREFrMXBFOWZzR3pNSGFrVThZMHh3UkpSdDlnRHNZS0FwM2k4SjhLaFVGWklrclJncnhvVDVPTWkxUTExdUU4bVZKRmFRZkprR2pZRTNiMnpTNnZXTmRYTnl3MlZtampydEN6VkJJQk1CT1p4MFJ5dDVISlRIRUR6TW1DQU9BSG0zRXdIZWU2VlNPaXdLdWxuYi9rQlRFdFBrNDBFQjRlbmN4ZXRYTDFxSVJDTG9Iak9OV0doS3dibmdwc3loRW9hL01yQVRvMXlyRjlCcUgxblZUaXhORjRoSzZ4RDVJNmFFa3FCYU1WWkVMQ0FHcEVKZER1cHpiVlQ5RzhrMXBLNEd1SnJLdHdHLzNudHVncm9tTVdpaHNzMm95VVVhZVJ2RUdXVzNHMHNFYWhFejNsYXE4VFZVM1VjcCsxTjVvRURmQitINzZYa3doTytqNmdGaUFoRVJxR3JCa2poUXZjOWJTd2loQmdWcjB2a2IrZ3ROejVpbUFFeSs2UzdLWGJaaDFlS2ZZdXJVRUEwTjBUQUZhY000alZiby9wdDEwOU9UWXJacW1RRGpYZFRtQWRpK0ErRytvTm1CYSt0UkV5b0UwL2tCVVJvSWpZZ0JZQ0FpSmRWcUIvVytFRTg0SlRVQzZaVDB5TDllcUF3RURBQ05BUVlRVXpoMEhZRW5WQjNvQzdlcXZ2RHhFS2hoZmtKWFNrdjZYU0RvQlJxUTBINUI0d3R4bWdqcEwvL2JYMzVlTjV6QUREczBwZE1ONTl5NDlJUXdOdVlacU5aR0xxdlNveUMxTTB2VE96UTluNi9keXVkZFlxTDhYR3JoY09kTnZVcmg2cGVPZGV5Rlo1UlVWRXVDZUU5b2ZscTJ5L2RYTlFBbC83SkNTb3llY1BTRXBuamJpNldCQWxycWdrcCtvK1ovRTBFVk1kYTUzSlViL3ZxTCtjUGxrdEIxK2NMd2preDZ1a3VrNm9QRmQ1KzEzUG4yQ3lEU2JtMGdKSHYybmtxQmd3R1ZpRGlRQzhTSXdJb2dFQ0FRU0NBaUZvSU8wNUVmV3FnNWVoWU5WdkV2Z0FoRWpFQ0NMdjlFVFA0WERQUkM3T3ZwTEFtcnBjZWZnTHdaRXhOWVQzZmRoci8rWWo2bVRnMkhHNWpkQWswcE9JdnVuUEdyS05kK2laakFpN0VvRkJsS0FCaWtzZVJnVHhLN1B5NmQvMFJLSUJCSS9uWkFSSEJYWElEczVKMk5pb1NXM245eS9Xcy8rLzV3dTZUZERrMFJuS2x6N3dzWGYzUG00aWpYZXFVTlFpUEdzcnVwRU5tZFRsYjZmNFlKaUl5RXhhVWtJRjVNWU1uYy8xdjNsNTk4YjNjQ3MxdWhBWUNHK3o4VlRaMTdYN2prbTJmVnVXemJKMnhZWWNVWVh6QzFnenp0ZzdpY0IxbmlLMFJDL1RjaXU4QVkrMGJYR3hzRzN1Yyt1L2JQLzN2djdnWm10ME5UQ3M3aWI1MzFZSzZ0K2JOQmJFd2dJaDRjcERFZjhOWFBnZnNQR1NRRUhOSU1oUUNLd1B6THV0Y2UveFlTaVdCM0F3TUFlMFM4YUYzREV6cDE3bjNocy85eitYT0huWkNNd25qdG1kN25IRWl6b3lDRnZaMXc3Z2lFdnV3Q0MyZUYvYnkrODg4WDlPZXpkdVUrdXozQ1RodEhlR05qZ2Rmc2w5YitxZTVydXlOTEdsSFFGTUZKcE9xRHA3OStadWFRcWNtS1dFVk53cnVzeTM4bjlzTVZzZVNTSE5vVDFpdEk3T3M1SEJab3Vud282VzBRRDlSbjU3M2QrTmhYOWlRd2U4UTlkUXVPZlNKVkh6eDV6em4vRnJWdiszYXNvallrR08yT2VlZkJQYjhUVzlsVi85UC9zTmZaSUI1NDEvN1ZOWTJQcGd2QWVPeFptWWs5bXdwazB0Tjhjc0VDdStTZWMyK0lzdHUvSDZzWUc1S0loalI4N0xQKzBVK1N1Q2RLcHdTQXlBYngwUHZzTjlZMFBucExDVEI4TjBNRFFGZzNKNm5KNUFLNzVKNXpyNHZhdC84NFZsa2JncDBXaHp0SlFBZDJsbVJ3Tk1nZzZPRXVNUlBab0NKVW43MzdyVmQrOUM4akJaZzlHdE4wSFdrMHZyb0FLY0Q4cGVxSW41anRyU2NGOGVxanZHdVBTcjlqYjRHd0RDYW1FUTRnazJLSmdXSS9NN0ZkakduSXlJWVZvZnIyLzE3OWgwYytPNUtBR1NHV3BpTjFaaHBBSmozTk44VmFMb2x5cmMrRzhlb1FWTGZEakpkRDVjSmtwNWFtcDQyU1lZaGg4c0I0MS83ZFZTdCtjRDJTU1R1U2dCbFowT1JsdFRTVm1pZlAzelduamE3MUFoOWxHNEo0VFVEUzdia3AxMTZTdGVFS2hNbklCaFdoOTlrSFY2MTRlQzZTU1lzK203dkswSlJ3azlaVWl1YnArK2MwVVRlZnExSDdINE5ZVlFDcUc1aWg0UUNORFFkUlNKWWh0akNWb1hmWkg3MzUrKzkvQXFtVUdZbkFqRWhvaWpwK3llUUMrOVIzcnQyQTlwYXp2WS9ldEdGbFFORDMzOURzWUdKU0J1ZWVlazRqY21neXB3NlhsSHZzelpjZnZCcXBsTmtOL2N3anQ1OEdROUQ5TitPVDg0OFVXNVVSd1h0YzFPWkJzVjA2OThEKzlOTjB2VVgzSGhmdHBYK25lKytPZG1rLzdkY3FDK3k0bjRiMGtiVVZvWXZhZi9yR1MrKzdOUC9MNTNFa0w4a1owWUxTZFhWemZDS1JDcDU1NElvLysxemJMQ3EzV0J1M3BSWkhCbCtwUTcvN1dycDBUZ3pwaUd4UUdYcWYvY1VidGE4bDg3QjBTZTlHNUJqeEcyZXNXcFhSUktvK1dIYjNCZXNPUHVhaVo4VUdIeldRdU5KNzZZQitzS1g2Z2FYY1BaUHV3YWZaQkNNYnhFUDYzSlB4dGkyek55NWZWTkRxSGZuaUI2TkN1cjdZeEZYLy9TdCs0NkxXaXlFbWEyMW9DZlY5WC96c1IrNHNnL2JVdTlJYWtRZW1JdlF1OTB5MHNmM2l4c2E2Q0VpTkNtQkdEVFNsNEdRZXZPcHBuMnM1RDVCdE5xaXdxdW9HNVc0R2tUS3p4Qm5LNE1naWdTZ0lLa1B2YzVreHVlYUxWcTE2cUgwMEFUT3FvQ2tGWjlsRDF6empzaTNUUUw0ZXE2Z0psSFRvZDdQd2pxMkw3S1RoaTRPc0taTDBnQ0RJMTJIbVo4M0djMWFzZUtRbEw2bzR1dlI0UnVYbUdJbEVLc2hrMHU3VXF4K2VFQS9qRDlnZ2RvSExOa1BWRlJia2RjOVVkcjVjcHVleWtwN0xhWURPSmNYOXpwN29xYVEzSmd4VVhZN3F2L1RhYjc5OUp6cFVPRWVmZ05PbzNFRnUxYXFNSnBNTDdKT1BYdG44NXU5L1BQLzl4MXpVSkdKT0QyS1ZGZXB5U2xEemk1UDYzYk95ODJCWUJ2SmFGcHREdlJoamJSQTM2dDF6UUhiT2E4L2YrMk9rVWdhWkRJRE1xSlJMR2JYYkRqWTIxaEdrcEFEejBEYy84OXpFS1JjK0x1U0J4Z1NUalEyTnVxZ0FUM0YxQWJzQjBGOW91azVZN2p4N3lxOS9NV0t0RGVJRzNxOVQ3MjVaK2R5YWY5cTA1cUUxaVVRcVdQVlEybzl5UVozUlA0cnVDZ0FTMXp3MGs4Qy9BakpEaklYTHRVTFZPMUpGQ0VOU09ndHVwUzVsSis2cElPZlJleUZSdFNpNUtoSUlqSVdQMnRkVDlZR1k0bHNybnJ0encyaDJSM3NsTkVVMWlCVG1kV3dsZFBwVkQwNHo0S2U4NnZsQkVLOVc3NkN1SGQ1N24rKzVWU2tzdmdjTFMyWjdyd2gzaldsWVhQQmJXR0VwUkFDeE1HSUxLbFgrWmFVKzNCNzVSLzVhZ0tWWTJjYmVJOTIxZDQxa2NvRXRsVmM3OWNvSERoYkZoWUJlUk5XVGpRMnJwYURlb0w2NE9GOVY2Vm5zNE80REdnSFZGaFpZRmhKUHdrZnRJSFVsaVNlRitwTlhFckZuVVZBbnpjT3k5MmtGN3JWYkMzWUtQSFplNFNkZGRmL0VJT0xKVkhlNlVvOEg5WEFsRHpER0JoQURLVFphNWUxSXA4SVV0UUJaRHFxK0NjUXFVRjhCOFR3cHY5N1hZMFdwWGw3ZVhjN2JheVg5OS83OUtGTXBrMWdHazVrR1JUZDk0aWxYZjJOTVZiYnlRQmY1OTRIUmV3RHVSODlhQWVLZWF2SXRwOXBDbGMwUTNRQ3ZhMkhzMnQ4dnVYbGpyM0ZWWHZsS1IrcnNkQm1hUVFMVUlXM1dDMFFEdFdRbDc4TzlIWlIzTHpTOXlOa2lOVSs2eTZuMU5qcDErMFoyMndMSzB3amxVYlkwWmZkVWhtYjBCOElQajZuS2J0dEJJT3dqQUMxVTJTd0c2K25jdW5JZy9LNVB1WG00VWc4d3hnWlNtS3Jxa25JWDZqUktCVHRTYnQwS2NqV2dyMER6S1hlc2FkMGZHaHJ1ajhvcDkxNVUzRE0wRjVEdTRoMFY5d3I2ZFdTWFdleXV4VDJCV2lKZjNCTVlzS1M0SjhxbGhIMzhsV1htMmVKVXdkNEt6MTQ3alpDNDZzRnBLcGhMMWZPTmpkWDBPbzFRRUdqczd6UkNRWDYxUktpUkVES0FXSWdZVUNONDcxOUdlUm9CbzIvQ1V1U0xJR1lPK1lSbHIxS3V2VTFZR25pWFhRL0YvVm12My83clhqWmhhVWYxdHkrMlJqeVU5aCsrNXFFakR6bnVzdnVNQ1c0WFl3N3pVUnU5enlrSWtmenY3QlJNNnVJc2lIN0lEQlE2S3Zyc3A1RkNrN3VRWHIyTHZFQnFUUkFtTFAzVit4MThTclJwOVVITGdYczFrVWdGcTFabHRHeHA5dUNhS0FCSWZPeEhONHJneThhR05ibjI1cUw0cnUxTFgzaFFuWHU5Q21QdnFITlBxVW92UmdKalF2Z285eHhjN2pNclgvanY1U045TWR4ZUNVMFJtQjIzZS9abnNWeGZMWnJsZHMrOXlqMGxVdlhCb252UDkzOS96VU1maXNlcm5yUkI3SlJjZHJzREtTS2xMWjU5dXBKdXlVdy9PL2U2aVoyd1ArdWJwT08vaHVvOHdNQUc4YlBIdmZmNG82b08rdkNpYld2K004cURNN3JhUHUxb0F5YVRudTZtZi94SFo5aFk1UktJSEJobFc1d1JDVHF0NW1BWHkrMGNHcFlJcVBWTHRKRmRSRWtNUUhoMXp0cjRzY1puUHh6Yjc2aTZsdlgzNUVZYk9IYTBBWk80N29jemJWaTVFTkF4M21XOUVSTU1wVENpN0FBYUdhaWw2WGxmQUZpdlVXUnQvTEJRek1tMTRlUUZUVTNmZEtNSkhEdTZMTXo4MDJ5c2NpR29sZDVIWGlDV0hKQlNaaSthYSt4VGRIWkhmOTlGZVZpckdrVTJpQjJPU3B4NDRMakRGbXpjZUs4ZkxlRFlVVkdEZWVnNk4vMjZSNCsxc2NxbEF0WjZuL01Dc1lPVFQ5dGRTMWgyTEZjcm9GVjFrYlh4SXlNYkhEZmx5SnE2VmFzT0lUQk5Sam80WnFSblNabE0yczM0NVB3amJheHlpUmpaeDN2bkJjWU9ZaGVXUWVhTXBVdFloanhIRHIxcmk2eU5YN0I2MjVFTHVybXhzcVVaYkZwOTFzZm5IeVN4TWI4MHhrNTBVYnVYanUvY1AzY3plS3ZUdTF1VGdWaWFmcWlwQzhTcXowVTJpRThlTzJIelVWdi9kdGZqU0VIeWkrbkswR0FnbTZmZWUrL1JldWJWRDA5QVZlMHp4b1pIK0Z5YkUwRXcrQlI2RnhYTEI2c2syajlwazd5ckN1TEgxazQ0K3ZDdGo5MzllT2NxekRJMC9RQW1aZExwNlRwejdvS3hwckoycVExaVUxeTIyVUVrNlAxS0hZUk1Ld2NIVGM5ZFdBWWYwM1MvWDJKeGpoczc0WmozYjMzczdwOGhtYlJvYkN4RHM3T1o2a3g2SGsvNTNPVEtPS3NXQldIOEZOZmU3Q1JmaDlubEU5Ti8xOUZMRU16ZUJLcDIzVDMxbmxWVm5GQTdmdko3bStwLzlQT1JDSTRkVVpPUHk1WUpwc0ZXYmVmUHd0aVlHVkYyZXdSSU9ISjJZUms2SmF5K3ZxY0lyUG9vc2tIOHBOcnhrL1p2cXArZjN5cDUxU3FXb2VsNjhDWFpXR2Z1dmZkNi9lRFJjeDRMNDlVWFJ1MU5rWlFBTXp5N3NQUlg0SWk3ZXhjV3F6NktUQkEvdFhiOHBOcW0zLzFpeVVnQ3g0NElZQmJVbWJyMEhILzI5UXUvSDFiVVhKbHJiNG9BaFAxWHNScXN6SDAvWXhvcE5Xd2NpdUplZnlDMnFpNHlKdjdobXZHVHFyYTk4SXVsSXdXY1BRMk5KRkxUN0tMcnovZXpibGg4VDZ5aVptNnV2U21TWG9FWnFzSmRYLzAwTzdBazNNbEdaVU1kYjNYcytrMUw3NXdKWWgrcDNmK0RkdHNMQzU4cGdLUHZXbWlLMHdObjM3RDQ5bmhGemVkejdkc0t3UFFWT2ZRODBPU1FiOHFGdmlWaEJ4alRjRWgybGhPcTg4YkdwdGZzOTBGdVc3NndmaytEczhlZ21UcjN2dkM1LzdyTW5YUDk0aS9GS210VHVmYnRFY2hneDNzbUQrY3VMUDBUTmRvdHU3QjBmVndnRkhydmpZM05xTjczeVBidERZdWUzWlBnMkQwRlRNUDluNHBtM2JEa2hsaGw3UjFSKzNiWENReDJzQVBCMEY3TkE5SVJsZzZYMFlmMUd6Wm9pcHVQQzlWN2EyTm5qZG5ueU9idERZdC92YWZBc1hzS21ITStzL1M2c0tMNk96N1g0a2kxWGNYSCsyOXBJQmpDakduSGxxWjd6TEdiTEUzcGZKUlF2VGNtbkRWbTNPR2JtMTljOGp5bVRnMnhicDN1dGRCMFdKalBMazJHc2NwSG5NdDZxTGQ1SnpPQXE3NUxUTU4rcE1COUJjSUQrMHp1c0hWaTJLRXBzVGlxMXNUT3F4NTMrUHJ0cjliL2JuZURZM2RuMFB2Y2YxM21abjFtNmJsaHZPckg2aU5RdlVBS00rM1MxOGtjSVRHTjdLQlcxTnQ5MlZYWDJlZnpCZmwxV2lvbXZLQm1ueVBlMnY1cWZjUHVCTWZ1eml6cDNKdWUrZnN3clB3RjFZWHFIVHFBS2FtNkRwMmxHV2pLM2YwTXM4Zi9TbytXaFIxOEZvZkYwblJVendFVlFoVW11SGpNUGtlKzN2eHEvZTkzRnpoMmR3Rnp6bzMxSjRSaGZBbkpNZW9qZG0wQ0g3aXJ3TUNMYkVWTlBRV2dKTFFnMzhvU1hrUkVSQ0FDRkc5UitnK0U1bGZ2Z2o0dk9kdnhIdXpzZ3ltRmF4ZnFOSDFaWDdMRTRsREZtRXZIakQxaVpVdmpzaFc3SXpnZTFtYWY1QUxhdWpuaUw3enA2VWxpcTVZQkdPOXliUXFCNmJLUFVyZWxKZXgxL1ZIdnkwUTZsOHVXdm84V05UaEpFcUkwRUJvUkE0aUJGSjFNaDVhZVI5NWRPaVUxQXVsSStzTHJoY3BBd0FEUUdBdnJ1RHY4RHdtcUx3Z0VlS2c2VU5VWFBoNENOZXgwS1gyc3NkTENXM1ZLenJLUDVUYWdsb2dURUlUWFl1T0c4OW5MTnY1MTBVOHdkV3FJaG9abzFFRlRiS0s2NEtiTW9SS0V2ekppSjBhNVZpL29YTVMyc3dWcy9ZYUdxbHF3QUZDMVlxeUlXRUJNL2lHWGhYZTVOa0QvUm5JTlZWY0RYRTNsMjRCZjd6MDNRVjJUQ1d5ek90ZHUxT1FpamJ3TjRveXlOSmJOZ1ZyRWpMZVZhbndOVmZkUjVYaFMzaVBnK3dnZURPajdxVG9SNUFReGdRaWtvRFpSRkJud25sUWl2MzdjRkt6RUxrS2p4WXRNQ3daTzFVZVhibmh6NGMrSEV4d1pUbUJtMzVnNVVDdmlHV09DSTZKc2MyRWhXMStMeWtyWFRHdTNuZDJLQzlRNllLTlNWZktXd0lxeFlreCs1c0c3ZHFqTGJTSzVrc1FLa2kvVG9ESHc1bzFOV3IyK3NXNU9icmd1bEtOTyswSk5FTWhFZ2tkUWNUVGhqd041dEZJL1lFMFlBd0QxRGw0andIdXZWQmEwak0zZ0xVM25ldkw4c21BNDllN0NqYXNXTFFFU0FaQnhJeDZhVklvbW5SWTk2M08vMmJjeWJ1dHRFRTZKMnBvZGhFSHhSK3NPVmlpaVQvZWtaRUgyV1NCV2JBZ2pCaTVxZy9yb0xRRExxZmkxd1A4MkFQNzR6QTgrdG1sbmFsam9ycWRYSE9sNXZRUlY4d1FwQUkyTmtrUVNYVi9meUxxK3hJeFNLWFBFTTAySFdQSTQ5VGlOZEtlVFBNYVlZRXorWjBkUUg1RktEMmhoUFhqZUN2VU9UVUU1dlRzMElLaGVBUkVRT2ZyYytSdFdQL24wY0lBand3Rk04dFAxMWJteFZVOEZZZVVwdWRZbUIwSFE1VXJweTlMMGNFLzUyQVFFUkl5MU5nWlM0WEt0MjBHOFFOR25QYzJ5ZUs1OXhWT1BYTnZTZmZZOGtaaG51NG9zRHZ2NmFVRXExU0g4V0ZERzZpRXg4b0VUL3VrZ01mWVUwTStrNmpRQVI0b0pDbkZWQktvNmRsaWdma0JUcW1paHFvQVlRbHVWdVhQZmVmUHB6RkNESTBQWmRZZDU4empyTTR0amxUWDdMN1N4cWhtNWxxME9ncUIvYTU0N0RrcCs2VHdWeGxocmJCeWt3dWZhMWdPb3Arb1REc2hrSHJoMFRVOE52UEV5WWNKR2pqQ1ZjQUZTa2t3MnlvWU5reVNUU1hmWm1IM3ExTG5oTnVCNHB6d0gxUE1BVGpVbUZOVUkza2VFMGxQVWdIbEovZzRMcloweFRmZDlHNmlxQWpFa20wbDM5c2JWUzM4emxPRElrSFhkellNQTgvQnlkUDcvaHZIcUM3T3RtL005TWIzQW9iM3ZiS3VGWHg3WW9BSVV3R2RiTjVHeWxDSS9Ocm5XWlV1L04yZHpWeTI5YVdZRVF0S2ZLOHdnMlNoSkFIWGRMTkVoeDExM0xCUVhRamlid0ljRUJxb1I2SjB2dUc5RFZTbk5ORHZqb0M3Q0F4NHdscXBidmViTzNyem1sNzhiS25Ca1NKcW9rbldtcm02T3Yvam01VCtNVmRSY21XM1pIQUVNKzVMazBGN2lGR3NDYTRJWW9teHpCTEllNUh6VjdLS252blBwaGg0NmVubFhNK3JGZ1RyUFFkSWtFcE9rVkNvZkFBNCsrcHBUQ1Z4TzZHd2o5djBrQzV0MnFBUFZrcFFPUzlOTEdrK3FGeGlyMU0xd2J1WTdhNTk1YVNqQWtWMEZKcEZhWmpQcDZXNzJ6UTMzeFNwcjVtWmJOa2NrUXFCdkhSZk5TNUI1Z2tFUVZvSWt2R3Q3amNwSEFYMTB5VDNuTnZZVVhOejdOcWJveXdvbEVzdE1KdE41WXZjNzZoTTFWVUg3dVFBL1R1Vk1FUnZRUi9BYStVSWhzZSs2VjhIaUtIV2pWejl6Njl1L1hMR3I0TWl1ZGQzVkY0RzVJMTQxOXFiMmxzMFJ5TEQzZ2h0QlZZTHFLU1lJWWxXSTJwc1ZnaWZwOVh0YjdKWkZ6OTgxcDYwMHd5a1ZYSHgzanBSQllwbEJDVUFUajBvZVF6RWZnK29WTVBhOVZBZlZxSGl3YlcvaVRPeDBWWCtEUnRNM3JjdjhDVWhhb0dlUVBxelFGS2NIWnQvYU1DOWVPVGFWYldtS1NCLzJtZzBWMURPTkRhd05LaEJsbTdkQThTam9IbmppN3BrdmxyN25OQ3pUOU43amVvYk9oU1dUQm5XVFdCUkJtamdwdWE4NlhFNzR1UUp6SEtsUW55c1NZN3VMTXBIcUFXUGhkWTFJZHNZN2EvL3Z6NE1GUndiWDRyQThiTGovaE9pU1cxNjhLVlkxOW81Y2E1TUR2ZTJzTHhSVW8xUVZKRzBRV21OamNOblcxYVIvSURMNjRKS3ZUMTlUWEJ6WDJEaFozajN1WjZpdFQ5SWVlS1MvZ0tyWEE1Z0JBUFE1NWhPTDB1cDczdUlJcktXNlZWNzk5S2Ixejc0eEdIQmtzTURNdnUybFQ4VXJhcjRUdFRVNzBsa1FuWE1yQmN0aXc3ZzFKb1RMdGE0VTh0dWh0UHlnN210bk5oWG5wU2E5Q2hZbFhNdGpFTllua2JDbHJ1dUFEMXcwRGVTTmdGNEVtQUk4WGtuWWtqcU9GN0dXNmwrblJHZHNXZmZyMVFNRlJ3WUR6R1czdlhSVkVLOStKTXExZWZySUZHWmNvZXBKVW0wUXM4YUdjTG0yVjZtOE81YnpQNnk3NjdTMkRyYzJiNXAvZDhjcVE1OTlBWjBWNlFrSG4zOHFoUDhNOEpMODFFWEVvbVJ0d1cwNXdBU3FicVYxN294Tm0zNnpkaURnU1A5akdBYVp0TGhMYjMzeG9pQmUvWk84NW1CVTBKUHpKT25GQmtFUVZpREt0cTZrdWp2Ym16Yzl2T1NlYzdPZE1kQTBYM1pCd3ptU0Z1aU1leVljZlBhcEpMNEFZRFlob005cFlXN1RrT29FTmxEMWpSR3laN1JzK08zNi9vSWpBd2w2TDczMTVSbGh2R3FSMXloUWw4dnIyNmc2R0JPRXNTcmtzaTJyNmYyZDBUdHJIM2ppL2d0Yk85c2pVSTVYZG5mY0E2QUl6LzRUWnlZSWZBbVFzL0tKU2VSSkdGQTl4QVpVOTN0bjdabk42ekx2OUFjYzZTOHd5VnRYbkdvcnFwYlN1ekhPWllzYXFUWldVWU5jdG1VTFZlL09SdHZ2V2ZpZkg5bFMwa3VqNzZZdGJVWThQTytkY1Q2Qld5RnlFdFhuSlhSSkZUR2hxbXRBcm1WbVU5UExXM2NtVlN2OUFlYWpxUlZUSkY1VlQzSmZsMjF6QkUxWVVXMTgxT1pKZmxlWXZiMHVmY0xxc2hzYXlXNnJMcC9TQW1iZjkwNy9PSlUzaTVqRFZDTlFmYnVJclZCMXoxdWZtN1ZsUzBOVFFTVk5Cd1JOc2V2dWtpKy9la1E4cU1nQU9ORGxXck0ycUlpTHNmQXV1OWo3NkxiSDAxT1dsMkVaVmZCNEFOaG5uNWxqRVlzK1IvRHpBcW54UHBjVHNURlY5MzlWUWV1czlldFh0UFFGanV5b2llcnlmLy9EUVNhb3lnamwwQ2hxMDNqVk9CTzFONitFOHRiSFVoK3M2NEFyQ1MxblE2TVRucHI5Ly80SVkzMGFsQ3M2R2dEVi8zSjdsWnlQTmMrMzlRYU85TmtUODlVL2p3L0UxaHRySitjblRWMGIxZC9oM2RxdjE2V25ONmRTTkFCUXJyT001bFE5WVl0elVMWGpUejJiS3Y4aGd1TUJnYnJjNHVhdExSY0RqVkdCRSswVm1pSXdWNlgrWE1zS3V6U3NxRDNaNVZyaDFTM1M5dXdYRjZRbnZWTHF1c3JISFh2SjVyZEp5VnVlcVdITmZ1R05wUDZybGRpK1h0dWVhTjdTY0hFQkdPbnBxbElwQTFKbTNiQW9mdVh0cnkvN3gvOXA1eFgvOGZycUs3N3kycldsZ2ZGSWx5c3RqMTF4V2ZsUld6djFBelhqVG55MFp0L1RPR2JzMUNkSzVJT2xVMGVZQlJCRXVQOUJSeStzR250Z29ubkwyOThsY2VMOFc0NTRPSldpU2FWb011bnByaHpvN3EyanpoZGNWckJ0VzhQcjI3ZSs4Rkg2N0d5S09iRnk3UEZQRmF3TTg4emtnUkVBdU9ycmJ5MzkyTjN2ckwzOEszODVwNnQxS1k5M29jdXkrU3hyNnRpcXNjZlByNm81OXFjNGNHcFZSMHd6OXo2R0xWdFhQV3BNNkpzMnZQRVBQLy9HaDdlWHM2THlLTTJ5S21xUHVjSW9EZ3N0N3BWUGYzdDk5ZGJXdGsrTDZ2b2YvdXRoRDVVRDNmTG9ZMExVanhrelpRTEFBM0ROMTFhZGNPWHRxdzRyd3RJUjM1UkhlZlFSS1A5L2xNUVltQnpUZzk4QUFBQUFTVVZPUks1Q1lJST0iIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxhYmVsIiBpZD0ia2luZCI+Q3VybGVzcyB3YWxsZXQ8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9Im1lcmNoYW50IiBpZD0ibWVyY2hhbnQiPjwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9ImVtcHR5Ij5Mb2FkaW5n4oCmPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==', 'base64').toString('utf8');
4
+ export const MERCHANT_CARD_HTML = Buffer.from('PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+CiAgICA8c3R5bGU+CiAgICAgIC8qIFRoZW1lIG9mZiB0aGUgaG9zdCdzIG93biBkZXNpZ24gdG9rZW5zICh0aGUgU0RLIGluamVjdHMgdGhlbSkgc28gdGhlCiAgICAgICAgIGNhcmQgc2l0cyBuYXRpdmVseSBpbnNpZGUgQ2xhdWRlIOKAlCBsaWdodC9kYXJrLCBmb250cywgcmFkaWkgYWxsIG1hdGNoLgogICAgICAgICBGYWxsYmFja3Mga2VlcCBpdCB0YXN0ZWZ1bCBhbnl3aGVyZS4gKi8KICAgICAgOnJvb3QgewogICAgICAgIC0tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtcHJpbWFyeSwgI2ZmZmZmZik7CiAgICAgICAgLS1iZy1zb2Z0OiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXNlY29uZGFyeSwgI2Y2ZjhmYSk7CiAgICAgICAgLS1mZzogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMWExZjM2KTsKICAgICAgICAtLWZnLXNvZnQ6IHZhcigtLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjk3Mzg2KTsKICAgICAgICAtLWZnLWZhaW50OiB2YXIoLS1jb2xvci10ZXh0LXRlcnRpYXJ5LCAjODc5MmEyKTsKICAgICAgICAtLWxpbmU6IHZhcigtLWNvbG9yLWJvcmRlci1wcmltYXJ5LCAjZTNlOGVlKTsKICAgICAgICAtLWdvb2Q6IHZhcigtLWNvbG9yLXRleHQtc3VjY2VzcywgIzFhN2Y1YSk7CiAgICAgICAgLS1nb29kLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLXN1Y2Nlc3MsICNkZGYzZTQpOwogICAgICAgIC0td2FybjogdmFyKC0tY29sb3ItdGV4dC13YXJuaW5nLCAjOWE2NzAwKTsKICAgICAgICAtLXdhcm4tYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtd2FybmluZywgI2ZkZjNkOCk7CiAgICAgICAgLS1iYWQ6IHZhcigtLWNvbG9yLXRleHQtZGFuZ2VyLCAjYjMyNjFlKTsKICAgICAgICAtLWJhZC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIsICNmYmU2ZTQpOwogICAgICAgIC0tbmV1dHJhbDogdmFyKC0tY29sb3ItdGV4dC1zZWNvbmRhcnksICM1YjY0NzIpOwogICAgICAgIC0tbmV1dHJhbC1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC1zZWNvbmRhcnksICNlZWYxZjQpOwogICAgICAgIC0tcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLWxnLCAxNHB4KTsKICAgICAgICAtLXJhZGl1cy1zbTogdmFyKC0tYm9yZGVyLXJhZGl1cy1zbSwgOHB4KTsKICAgICAgICAtLWZvbnQ6IHZhcigtLWZvbnQtc2Fucywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWYpOwogICAgICAgIC0tbW9ubzogdmFyKC0tZm9udC1tb25vLCB1aS1tb25vc3BhY2UsICdTRiBNb25vJywgTWVubG8sIG1vbm9zcGFjZSk7CiAgICAgIH0KICAgICAgKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgfQogICAgICBib2R5IHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQpOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAgIH0KICAgICAgLmNhcmQgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cyk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmcpOwogICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDEwLCAyMCwgNDAsIDAuMDQpLCAwIDJweCA1cHggcmdiYSgxMCwgMjAsIDQwLCAwLjA0KTsKICAgICAgICBtYXgtd2lkdGg6IDU2MHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIH0KICAgICAgLmhlYWQgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDlweDsKICAgICAgICBwYWRkaW5nOiAxNHB4IDIwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5oZWFkIC5sb2dvIHsKICAgICAgICBoZWlnaHQ6IDE3cHg7CiAgICAgICAgd2lkdGg6IGF1dG87CiAgICAgICAgZmxleDogbm9uZTsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAuaGVhZCAubGFiZWwgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB9CiAgICAgIC5oZWFkIC5tZXJjaGFudCB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgIH0KICAgICAgI2NvbnRlbnQgewogICAgICAgIHBhZGRpbmc6IDhweCAyMHB4IDE2cHg7CiAgICAgIH0KCiAgICAgIC8qIFN0YXR1cyBiYWRnZSDigJQgYSBjb2xvcmVkIGRvdCArIHRoZSBzdGF0dXMgKi8KICAgICAgLmJhZGdlIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogNXB4OwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIHBhZGRpbmc6IDNweCA4cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmV1dHJhbC1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLW5ldXRyYWwpOwogICAgICB9CiAgICAgIC5iYWRnZSAuZG90IHsKICAgICAgICB3aWR0aDogNnB4OwogICAgICAgIGhlaWdodDogNnB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBmbGV4OiBub25lOwogICAgICAgIGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsKICAgICAgfQogICAgICAuYmFkZ2UuaXMtcGFpZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29vZC1iZyk7CiAgICAgICAgY29sb3I6IHZhcigtLWdvb2QpOwogICAgICB9CiAgICAgIC5iYWRnZS5pcy1wZW5kaW5nX3BheW1lbnQgewogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdhcm4tYmcpOwogICAgICAgIGNvbG9yOiB2YXIoLS13YXJuKTsKICAgICAgfQogICAgICAuYmFkZ2UuaXMtY2FuY2VsZWQsCiAgICAgIC5iYWRnZS5pcy1kaXNwdXRlZCB7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFkLWJnKTsKICAgICAgICBjb2xvcjogdmFyKC0tYmFkKTsKICAgICAgfQoKICAgICAgLyogQ3VybGVzcyB3YWxsZXQg4oCUIHRva2VuICsgaWRlbnRpdHkgKyBhbW91bnQgcGVyIGN1cnJlbmN5ICovCiAgICAgIC53YWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQogICAgICAud3JvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTNweDsKICAgICAgICBwYWRkaW5nOiAxNHB4IDA7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC53cm93OmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICB9CiAgICAgIC50b2sgewogICAgICAgIHdpZHRoOiAzNnB4OwogICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICBmbGV4OiBub25lOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBmb250LXNpemU6IDE3cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmctc29mdCk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGluZSk7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLXNvZnQpOwogICAgICB9CiAgICAgIC50b2subG9nbyB7CiAgICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgIH0KICAgICAgLnRvay5sb2dvIHN2ZyB7CiAgICAgICAgd2lkdGg6IDM2cHg7CiAgICAgICAgaGVpZ2h0OiAzNnB4OwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICB9CiAgICAgIC50b2suY29kZSB7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICB9CiAgICAgIC53cm93IC5jY3kgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAxZW07CiAgICAgIH0KICAgICAgLm51bXMgewogICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgICB9CiAgICAgIC5udW1zIC5hdiB7CiAgICAgICAgZm9udC1zaXplOiAxOHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWdvb2QpOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KICAgICAgLm51bXMgLmZ6IHsKICAgICAgICBmb250LXNpemU6IDExLjVweDsKICAgICAgICBjb2xvcjogdmFyKC0tZmctc29mdCk7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgICBtYXJnaW4tdG9wOiAycHg7CiAgICAgIH0KCiAgICAgIC8qIE9yZGVycyDigJQgYW1vdW50LWZvcndhcmQgcm93cywgc3RhdHVzIGJhZGdlLCBjbGljayDihpIgZGV0YWlsICovCiAgICAgIC5vcmRlcnMgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQogICAgICAub3JkZXIgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0bzsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogM3B4IDEycHg7CiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgIH0KICAgICAgLm9yZGVyOmZpcnN0LWNoaWxkIHsKICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICB9CiAgICAgIC5vcmRlciAudGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZyk7CiAgICAgIH0KICAgICAgLm9yZGVyIC5iYWRnZSB7CiAgICAgICAgZ3JpZC1yb3c6IDE7CiAgICAgICAgZ3JpZC1jb2x1bW46IDI7CiAgICAgICAganVzdGlmeS1zZWxmOiBlbmQ7CiAgICAgIH0KICAgICAgLm9yZGVyIC5hbXQgewogICAgICAgIGdyaWQtcm93OiAyOwogICAgICAgIGdyaWQtY29sdW1uOiAxOwogICAgICAgIGZvbnQtc2l6ZTogMTMuNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLXNvZnQpOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KICAgICAgLm9yZGVyIC5hbXQgLmNjeSB7CiAgICAgICAgZm9udC1zaXplOiAxMXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBtYXJnaW4tbGVmdDogNHB4OwogICAgICB9CiAgICAgIC5vcmRlciAud2hlbiB7CiAgICAgICAgZ3JpZC1yb3c6IDI7CiAgICAgICAgZ3JpZC1jb2x1bW46IDI7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgZm9udC1zaXplOiAxMS41cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgIH0KCiAgICAgIC8qIE9yZGVycyBwYWdlciDigJQgcXVpZXQgcHJldi9uZXh0ICsgcGFnZSBpbmRpY2F0b3IgKi8KICAgICAgLnBhZ2VyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGdhcDogMTBweDsKICAgICAgICBtYXJnaW4tdG9wOiAxNHB4OwogICAgICAgIHBhZGRpbmctdG9wOiAxMnB4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgfQogICAgICAucGFnZXIgYnV0dG9uIHsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tZm9udCk7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLXNvZnQpOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLXNvZnQpOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgICAgcGFkZGluZzogNXB4IDEycHg7CiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICB9CiAgICAgIC5wYWdlciBidXR0b246ZGlzYWJsZWQgewogICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICAgIH0KICAgICAgLnBhZ2VyIC5wYWdlaW5mbyB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgfQoKICAgICAgLyogQ2xpY2thYmxlIG9yZGVyIHJvd3Mg4oaSIGRldGFpbCAqLwogICAgICAub3JkZXIuY2xpY2thYmxlIHsKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcmFkaXVzLXNtKTsKICAgICAgfQogICAgICAub3JkZXIuY2xpY2thYmxlOmhvdmVyIHsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsKICAgICAgfQoKICAgICAgLyogT3JkZXIgZGV0YWlsICovCiAgICAgIC5kZXRhaWwgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgIH0KICAgICAgLmJhY2sgewogICAgICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTJweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1zb2Z0KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yYWRpdXMtc20pOwogICAgICAgIHBhZGRpbmc6IDRweCAxMHB4OwogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgfQogICAgICAvKiBIZXJvOiBiaWcgdG90YWwgKyBzdGF0dXMgYmFkZ2UgKi8KICAgICAgLm9kLWhlcm8gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICB9CiAgICAgIC5vZC10b3RhbCB7CiAgICAgICAgZm9udC1zaXplOiAyN3B4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA2NTA7CiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtczsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsKICAgICAgfQogICAgICAub2QtdG90YWwgLmNjeSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICBtYXJnaW4tbGVmdDogMnB4OwogICAgICB9CiAgICAgIC5vZC1zdWIgewogICAgICAgIGZvbnQtc2l6ZTogMTEuNXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICAgIG1hcmdpbi10b3A6IC04cHg7CiAgICAgIH0KICAgICAgLm9kLXN1YiAubW9ubyB7CiAgICAgICAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogICAgICB9CiAgICAgIC8qIFNlY3Rpb25zOiBhIHF1aWV0IGhlYWRlciArIGEgc29mdC1ib3JkZXJlZCBjYXJkICovCiAgICAgIC5vZC1zZWMgewogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJhZGl1cy1zbSk7CiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4OwogICAgICB9CiAgICAgIC5vZC1zZWMtaCB7CiAgICAgICAgZm9udC1zaXplOiAxMC41cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDZlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgIH0KICAgICAgLmxpIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgICAgICBnYXA6IDAgMTJweDsKICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7CiAgICAgICAgcGFkZGluZzogN3B4IDA7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5saTpmaXJzdC1jaGlsZCB7CiAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICBwYWRkaW5nLXRvcDogMDsKICAgICAgfQogICAgICAubGktbmFtZSB7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA1NTA7CiAgICAgIH0KICAgICAgLmxpLXF0eSB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1zb2Z0KTsKICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICB9CiAgICAgIC5saS1hbXQgewogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7CiAgICAgIH0KICAgICAgLyogS2V5L3ZhbHVlIHJvd3MgKHBheW1lbnQsIGJ1eWVyLCBkZXRhaWxzKSAqLwogICAgICAua3YgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgcGFkZGluZzogNXB4IDA7CiAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICB9CiAgICAgIC5rdiArIC5rdiB7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWxpbmUpOwogICAgICB9CiAgICAgIC5rdiAuayB7CiAgICAgICAgY29sb3I6IHZhcigtLWZnLWZhaW50KTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgICAgICBmbGV4OiBub25lOwogICAgICB9CiAgICAgIC5rdiAudiB7CiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICAgICAgY29sb3I6IHZhcigtLWZnKTsKICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7CiAgICAgIH0KICAgICAgLmt2IC52IC5tb25vIHsKICAgICAgICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICB9CiAgICAgIC5icmFuZCB7CiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTsKICAgICAgfQogICAgICAubXV0ZWQgewogICAgICAgIGNvbG9yOiB2YXIoLS1mZy1mYWludCk7CiAgICAgIH0KICAgICAgLm1vbm8gewogICAgICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICAgICAgfQoKICAgICAgLmVtcHR5IHsKICAgICAgICBjb2xvcjogdmFyKC0tZmctZmFpbnQpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBwYWRkaW5nOiA2cHggMDsKICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbj4oZnVuY3Rpb24oKXtjb25zdCBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKS5yZWxMaXN0O2lmKG4mJm4uc3VwcG9ydHMmJm4uc3VwcG9ydHMoIm1vZHVsZXByZWxvYWQiKSlyZXR1cm47Zm9yKGNvbnN0IGUgb2YgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9Im1vZHVsZXByZWxvYWQiXScpKW8oZSk7bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZT0+e2Zvcihjb25zdCBpIG9mIGUpaWYoaS50eXBlPT09ImNoaWxkTGlzdCIpZm9yKGNvbnN0IGEgb2YgaS5hZGRlZE5vZGVzKWEudGFnTmFtZT09PSJMSU5LIiYmYS5yZWw9PT0ibW9kdWxlcHJlbG9hZCImJm8oYSl9KS5vYnNlcnZlKGRvY3VtZW50LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pO2Z1bmN0aW9uIHIoZSl7Y29uc3QgaT17fTtyZXR1cm4gZS5pbnRlZ3JpdHkmJihpLmludGVncml0eT1lLmludGVncml0eSksZS5yZWZlcnJlclBvbGljeSYmKGkucmVmZXJyZXJQb2xpY3k9ZS5yZWZlcnJlclBvbGljeSksZS5jcm9zc09yaWdpbj09PSJ1c2UtY3JlZGVudGlhbHMiP2kuY3JlZGVudGlhbHM9ImluY2x1ZGUiOmUuY3Jvc3NPcmlnaW49PT0iYW5vbnltb3VzIj9pLmNyZWRlbnRpYWxzPSJvbWl0IjppLmNyZWRlbnRpYWxzPSJzYW1lLW9yaWdpbiIsaX1mdW5jdGlvbiBvKGUpe2lmKGUuZXApcmV0dXJuO2UuZXA9ITA7Y29uc3QgaT1yKGUpO2ZldGNoKGUuaHJlZixpKX19KSgpO2NvbnN0IEltPSJtb2R1bGVwcmVsb2FkIix6bT1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcgVVJMKHQsbikuaHJlZn0sZXM9e30seG09ZnVuY3Rpb24obixyLG8pe2xldCBlPVByb21pc2UucmVzb2x2ZSgpO2lmKHImJnIubGVuZ3RoPjApe2xldCBhPWZ1bmN0aW9uKGwpe3JldHVybiBQcm9taXNlLmFsbChsLm1hcChnPT5Qcm9taXNlLnJlc29sdmUoZykudGhlbih2PT4oe3N0YXR1czoiZnVsZmlsbGVkIix2YWx1ZTp2fSksdj0+KHtzdGF0dXM6InJlamVjdGVkIixyZWFzb246dn0pKSkpfTtjb25zdCBzPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksYz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJtZXRhW3Byb3BlcnR5PWNzcC1ub25jZV0iKSx1PWM/Lm5vbmNlfHxjPy5nZXRBdHRyaWJ1dGUoIm5vbmNlIik7ZT1hKHIubWFwKGw9PntpZihsPXptKGwsbyksbCBpbiBlcylyZXR1cm47ZXNbbF09ITA7Y29uc3QgZz1sLmVuZHNXaXRoKCIuY3NzIiksdj1nPydbcmVsPSJzdHlsZXNoZWV0Il0nOiIiO2lmKCEhbylmb3IobGV0IEY9cy5sZW5ndGgtMTtGPj0wO0YtLSl7Y29uc3QgUj1zW0ZdO2lmKFIuaHJlZj09PWwmJighZ3x8Ui5yZWw9PT0ic3R5bGVzaGVldCIpKXJldHVybn1lbHNlIGlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGxpbmtbaHJlZj0iJHtsfSJdJHt2fWApKXJldHVybjtjb25zdCB5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtpZih5LnJlbD1nPyJzdHlsZXNoZWV0IjpJbSxnfHwoeS5hcz0ic2NyaXB0IikseS5jcm9zc09yaWdpbj0iIix5LmhyZWY9bCx1JiZ5LnNldEF0dHJpYnV0ZSgibm9uY2UiLHUpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoeSksZylyZXR1cm4gbmV3IFByb21pc2UoKEYsUik9Pnt5LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEYpLHkuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLCgpPT5SKG5ldyBFcnJvcihgVW5hYmxlIHRvIHByZWxvYWQgQ1NTIGZvciAke2x9YCkpKX0pfSkpfWZ1bmN0aW9uIGkoYSl7Y29uc3Qgcz1uZXcgRXZlbnQoInZpdGU6cHJlbG9hZEVycm9yIix7Y2FuY2VsYWJsZTohMH0pO2lmKHMucGF5bG9hZD1hLHdpbmRvdy5kaXNwYXRjaEV2ZW50KHMpLCFzLmRlZmF1bHRQcmV2ZW50ZWQpdGhyb3cgYX1yZXR1cm4gZS50aGVuKGE9Pntmb3IoY29uc3QgcyBvZiBhfHxbXSlzLnN0YXR1cz09PSJyZWplY3RlZCImJmkocy5yZWFzb24pO3JldHVybiBuKCkuY2F0Y2goaSl9KX07dmFyIHRzO2NvbnN0IHJpPU9iamVjdC5mcmVlemUoe3N0YXR1czoiYWJvcnRlZCJ9KTtmdW5jdGlvbiBkKHQsbixyKXtmdW5jdGlvbiBvKHMsYyl7aWYocy5fem9kfHxPYmplY3QuZGVmaW5lUHJvcGVydHkocywiX3pvZCIse3ZhbHVlOntkZWY6Yyxjb25zdHI6YSx0cmFpdHM6bmV3IFNldH0sZW51bWVyYWJsZTohMX0pLHMuX3pvZC50cmFpdHMuaGFzKHQpKXJldHVybjtzLl96b2QudHJhaXRzLmFkZCh0KSxuKHMsYyk7Y29uc3QgdT1hLnByb3RvdHlwZSxsPU9iamVjdC5rZXlzKHUpO2ZvcihsZXQgZz0wO2c8bC5sZW5ndGg7ZysrKXtjb25zdCB2PWxbZ107diBpbiBzfHwoc1t2XT11W3ZdLmJpbmQocykpfX1jb25zdCBlPXI/LlBhcmVudD8/T2JqZWN0O2NsYXNzIGkgZXh0ZW5kcyBle31PYmplY3QuZGVmaW5lUHJvcGVydHkoaSwibmFtZSIse3ZhbHVlOnR9KTtmdW5jdGlvbiBhKHMpe3ZhciBjO2NvbnN0IHU9cj8uUGFyZW50P25ldyBpOnRoaXM7byh1LHMpLChjPXUuX3pvZCkuZGVmZXJyZWQ/PyhjLmRlZmVycmVkPVtdKTtmb3IoY29uc3QgbCBvZiB1Ll96b2QuZGVmZXJyZWQpbCgpO3JldHVybiB1fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoYSwiaW5pdCIse3ZhbHVlOm99KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOnM9PnI/LlBhcmVudCYmcyBpbnN0YW5jZW9mIHIuUGFyZW50PyEwOnM/Ll96b2Q/LnRyYWl0cz8uaGFzKHQpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsIm5hbWUiLHt2YWx1ZTp0fSksYX1jb25zdCBpaT1TeW1ib2woInpvZF9icmFuZCIpO2NsYXNzIHhlIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcigiRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuIil9fWNsYXNzIENuIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3Iobil7c3VwZXIoYEVuY291bnRlcmVkIHVuaWRpcmVjdGlvbmFsIHRyYW5zZm9ybSBkdXJpbmcgZW5jb2RlOiAke259YCksdGhpcy5uYW1lPSJab2RFbmNvZGVFcnJvciJ9fSh0cz1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxDb25maWc/Pyh0cy5fX3pvZF9nbG9iYWxDb25maWc9e30pO2NvbnN0IGd0PWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsQ29uZmlnO2Z1bmN0aW9uIFYodCl7cmV0dXJuIHQmJk9iamVjdC5hc3NpZ24oZ3QsdCksZ3R9ZnVuY3Rpb24gVG0odCl7cmV0dXJuIHR9ZnVuY3Rpb24gam0odCl7cmV0dXJuIHR9ZnVuY3Rpb24gVW0odCl7fWZ1bmN0aW9uIFBtKHQpe3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSBpbiBleGhhdXN0aXZlIGNoZWNrIil9ZnVuY3Rpb24gT20odCl7fWZ1bmN0aW9uIG9pKHQpe2NvbnN0IG49T2JqZWN0LnZhbHVlcyh0KS5maWx0ZXIobz0+dHlwZW9mIG89PSJudW1iZXIiKTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbbyxlXSk9Pm4uaW5kZXhPZigrbyk9PT0tMSkubWFwKChbbyxlXSk9PmUpfWZ1bmN0aW9uIF8odCxuPSJ8Iil7cmV0dXJuIHQubWFwKHI9PmsocikpLmpvaW4obil9ZnVuY3Rpb24gVW4odCxuKXtyZXR1cm4gdHlwZW9mIG49PSJiaWdpbnQiP24udG9TdHJpbmcoKTpufWZ1bmN0aW9uIGJ0KHQpe3JldHVybntnZXQgdmFsdWUoKXt7Y29uc3Qgbj10KCk7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCJ2YWx1ZSIse3ZhbHVlOm59KSxufX19fWZ1bmN0aW9uIE5lKHQpe3JldHVybiB0PT1udWxsfWZ1bmN0aW9uIEFuKHQpe2NvbnN0IG49dC5zdGFydHNXaXRoKCJeIik/MTowLHI9dC5lbmRzV2l0aCgiJCIpP3QubGVuZ3RoLTE6dC5sZW5ndGg7cmV0dXJuIHQuc2xpY2UobixyKX1mdW5jdGlvbiBFcyh0LG4pe2NvbnN0IHI9dC9uLG89TWF0aC5yb3VuZChyKSxlPU51bWJlci5FUFNJTE9OKk1hdGgubWF4KE1hdGguYWJzKHIpLDEpO3JldHVybiBNYXRoLmFicyhyLW8pPGU/MDpyLW99Y29uc3QgbnM9U3ltYm9sKCJldmFsdWF0aW5nIik7ZnVuY3Rpb24gVCh0LG4scil7bGV0IG87T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7Z2V0KCl7aWYobyE9PW5zKXJldHVybiBvPT09dm9pZCAwJiYobz1ucyxvPXIoKSksb30sc2V0KGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se3ZhbHVlOmV9KX0sY29uZmlndXJhYmxlOiEwfSl9ZnVuY3Rpb24gRG0odCl7cmV0dXJuIE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKX1mdW5jdGlvbiB5ZSh0LG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6cix3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfWZ1bmN0aW9uIGZlKC4uLnQpe2NvbnN0IG49e307Zm9yKGNvbnN0IHIgb2YgdCl7Y29uc3Qgbz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKTtPYmplY3QuYXNzaWduKG4sbyl9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHt9LG4pfWZ1bmN0aW9uIE5tKHQpe3JldHVybiBmZSh0Ll96b2QuZGVmKX1mdW5jdGlvbiBFbSh0LG4pe3JldHVybiBuP24ucmVkdWNlKChyLG8pPT5yPy5bb10sdCk6dH1mdW5jdGlvbiBabSh0KXtjb25zdCBuPU9iamVjdC5rZXlzKHQpLHI9bi5tYXAobz0+dFtvXSk7cmV0dXJuIFByb21pc2UuYWxsKHIpLnRoZW4obz0+e2NvbnN0IGU9e307Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspZVtuW2ldXT1vW2ldO3JldHVybiBlfSl9ZnVuY3Rpb24gUm0odD0xMCl7Y29uc3Qgbj0iYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiO2xldCByPSIiO2ZvcihsZXQgbz0wO288dDtvKyspcis9bltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbi5sZW5ndGgpXTtyZXR1cm4gcn1mdW5jdGlvbiBYcih0KXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCl9ZnVuY3Rpb24gWnModCl7cmV0dXJuIHQudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZSgvW15cd1xzLV0vZywiIikucmVwbGFjZSgvW1xzXy1dKy9nLCItIikucmVwbGFjZSgvXi0rfC0rJC9nLCIiKX1jb25zdCBhaT0iY2FwdHVyZVN0YWNrVHJhY2UiaW4gRXJyb3I/RXJyb3IuY2FwdHVyZVN0YWNrVHJhY2U6KC4uLnQpPT57fTtmdW5jdGlvbiBMZSh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiZ0IT09bnVsbCYmIUFycmF5LmlzQXJyYXkodCl9Y29uc3QgUnM9YnQoKCk9PntpZihndC5qaXRsZXNzfHx0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yPy51c2VyQWdlbnQ/LmluY2x1ZGVzKCJDbG91ZGZsYXJlIikpcmV0dXJuITE7dHJ5e2NvbnN0IHQ9RnVuY3Rpb247cmV0dXJuIG5ldyB0KCIiKSwhMH1jYXRjaHtyZXR1cm4hMX19KTtmdW5jdGlvbiBUZSh0KXtpZihMZSh0KT09PSExKXJldHVybiExO2NvbnN0IG49dC5jb25zdHJ1Y3RvcjtpZihuPT09dm9pZCAwfHx0eXBlb2YgbiE9ImZ1bmN0aW9uIilyZXR1cm4hMDtjb25zdCByPW4ucHJvdG90eXBlO3JldHVybiEoTGUocik9PT0hMXx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsImlzUHJvdG90eXBlT2YiKT09PSExKX1mdW5jdGlvbiBMbih0KXtyZXR1cm4gVGUodCk/ey4uLnR9OkFycmF5LmlzQXJyYXkodCk/Wy4uLnRdOnQgaW5zdGFuY2VvZiBNYXA/bmV3IE1hcCh0KTp0IGluc3RhbmNlb2YgU2V0P25ldyBTZXQodCk6dH1mdW5jdGlvbiBDbSh0KXtsZXQgbj0wO2Zvcihjb25zdCByIGluIHQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQscikmJm4rKztyZXR1cm4gbn1jb25zdCBBbT10PT57Y29uc3Qgbj10eXBlb2YgdDtzd2l0Y2gobil7Y2FzZSJ1bmRlZmluZWQiOnJldHVybiJ1bmRlZmluZWQiO2Nhc2Uic3RyaW5nIjpyZXR1cm4ic3RyaW5nIjtjYXNlIm51bWJlciI6cmV0dXJuIE51bWJlci5pc05hTih0KT8ibmFuIjoibnVtYmVyIjtjYXNlImJvb2xlYW4iOnJldHVybiJib29sZWFuIjtjYXNlImZ1bmN0aW9uIjpyZXR1cm4iZnVuY3Rpb24iO2Nhc2UiYmlnaW50IjpyZXR1cm4iYmlnaW50IjtjYXNlInN5bWJvbCI6cmV0dXJuInN5bWJvbCI7Y2FzZSJvYmplY3QiOnJldHVybiBBcnJheS5pc0FycmF5KHQpPyJhcnJheSI6dD09PW51bGw/Im51bGwiOnQudGhlbiYmdHlwZW9mIHQudGhlbj09ImZ1bmN0aW9uIiYmdC5jYXRjaCYmdHlwZW9mIHQuY2F0Y2g9PSJmdW5jdGlvbiI/InByb21pc2UiOnR5cGVvZiBNYXA8InUiJiZ0IGluc3RhbmNlb2YgTWFwPyJtYXAiOnR5cGVvZiBTZXQ8InUiJiZ0IGluc3RhbmNlb2YgU2V0PyJzZXQiOnR5cGVvZiBEYXRlPCJ1IiYmdCBpbnN0YW5jZW9mIERhdGU/ImRhdGUiOnR5cGVvZiBGaWxlPCJ1IiYmdCBpbnN0YW5jZW9mIEZpbGU/ImZpbGUiOiJvYmplY3QiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRhdGEgdHlwZTogJHtufWApfX0sUG49bmV3IFNldChbInN0cmluZyIsIm51bWJlciIsInN5bWJvbCJdKSxDcz1uZXcgU2V0KFsic3RyaW5nIiwibnVtYmVyIiwiYmlnaW50IiwiYm9vbGVhbiIsInN5bWJvbCIsInVuZGVmaW5lZCJdKTtmdW5jdGlvbiB2ZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpfWZ1bmN0aW9uIGFlKHQsbixyKXtjb25zdCBvPW5ldyB0Ll96b2QuY29uc3RyKG4/P3QuX3pvZC5kZWYpO3JldHVybighbnx8cj8ucGFyZW50KSYmKG8uX3pvZC5wYXJlbnQ9dCksb31mdW5jdGlvbiBoKHQpe2NvbnN0IG49dDtpZighbilyZXR1cm57fTtpZih0eXBlb2Ygbj09InN0cmluZyIpcmV0dXJue2Vycm9yOigpPT5ufTtpZihuPy5tZXNzYWdlIT09dm9pZCAwKXtpZihuPy5lcnJvciE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBzcGVjaWZ5IGJvdGggYG1lc3NhZ2VgIGFuZCBgZXJyb3JgIHBhcmFtcyIpO24uZXJyb3I9bi5tZXNzYWdlfXJldHVybiBkZWxldGUgbi5tZXNzYWdlLHR5cGVvZiBuLmVycm9yPT0ic3RyaW5nIj97Li4ubixlcnJvcjooKT0+bi5lcnJvcn06bn1mdW5jdGlvbiBMbSh0KXtsZXQgbjtyZXR1cm4gbmV3IFByb3h5KHt9LHtnZXQocixvLGUpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZ2V0KG4sbyxlKX0sc2V0KHIsbyxlLGkpe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3Quc2V0KG4sbyxlLGkpfSxoYXMocixvKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmhhcyhuLG8pfSxkZWxldGVQcm9wZXJ0eShyLG8pe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZGVsZXRlUHJvcGVydHkobixvKX0sb3duS2V5cyhyKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0Lm93bktleXMobil9LGdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLG8pe3JldHVybiBuPz8obj10KCkpLFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sbyl9LGRlZmluZVByb3BlcnR5KHIsbyxlKXtyZXR1cm4gbj8/KG49dCgpKSxSZWZsZWN0LmRlZmluZVByb3BlcnR5KG4sbyxlKX19KX1mdW5jdGlvbiBrKHQpe3JldHVybiB0eXBlb2YgdD09ImJpZ2ludCI/dC50b1N0cmluZygpKyJuIjp0eXBlb2YgdD09InN0cmluZyI/YCIke3R9ImA6YCR7dH1gfWZ1bmN0aW9uIEFzKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5maWx0ZXIobj0+dFtuXS5fem9kLm9wdGluPT09Im9wdGlvbmFsIiYmdFtuXS5fem9kLm9wdG91dD09PSJvcHRpb25hbCIpfWNvbnN0IExzPXtzYWZlaW50OltOdW1iZXIuTUlOX1NBRkVfSU5URUdFUixOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl0saW50MzI6Wy0yMTQ3NDgzNjQ4LDIxNDc0ODM2NDddLHVpbnQzMjpbMCw0Mjk0OTY3Mjk1XSxmbG9hdDMyOlstMzQwMjgyMzQ2NjM4NTI4ODZlMjIsMzQwMjgyMzQ2NjM4NTI4ODZlMjJdLGZsb2F0NjQ6Wy1OdW1iZXIuTUFYX1ZBTFVFLE51bWJlci5NQVhfVkFMVUVdfSxNcz17aW50NjQ6W0JpZ0ludCgiLTkyMjMzNzIwMzY4NTQ3NzU4MDgiKSxCaWdJbnQoIjkyMjMzNzIwMzY4NTQ3NzU4MDciKV0sdWludDY0OltCaWdJbnQoMCksQmlnSW50KCIxODQ0Njc0NDA3MzcwOTU1MTYxNSIpXX07ZnVuY3Rpb24gcXModCxuKXtjb25zdCByPXQuX3pvZC5kZWYsbz1yLmNoZWNrcztpZihvJiZvLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLnBpY2soKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3QgaT1mZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBhPXt9O2Zvcihjb25zdCBzIGluIG4pe2lmKCEocyBpbiByLnNoYXBlKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke3N9ImApO25bc10mJihhW3NdPXIuc2hhcGVbc10pfXJldHVybiB5ZSh0aGlzLCJzaGFwZSIsYSksYX0sY2hlY2tzOltdfSk7cmV0dXJuIGFlKHQsaSl9ZnVuY3Rpb24gRnModCxuKXtjb25zdCByPXQuX3pvZC5kZWYsbz1yLmNoZWNrcztpZihvJiZvLmxlbmd0aD4wKXRocm93IG5ldyBFcnJvcigiLm9taXQoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzIik7Y29uc3QgaT1mZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBhPXsuLi50Ll96b2QuZGVmLnNoYXBlfTtmb3IoY29uc3QgcyBpbiBuKXtpZighKHMgaW4gci5zaGFwZSkpdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiAiJHtzfSJgKTtuW3NdJiZkZWxldGUgYVtzXX1yZXR1cm4geWUodGhpcywic2hhcGUiLGEpLGF9LGNoZWNrczpbXX0pO3JldHVybiBhZSh0LGkpfWZ1bmN0aW9uIEpzKHQsbil7aWYoIVRlKG4pKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBpbnB1dCB0byBleHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0Iik7Y29uc3Qgcj10Ll96b2QuZGVmLmNoZWNrcztpZihyJiZyLmxlbmd0aD4wKXtjb25zdCBpPXQuX3pvZC5kZWYuc2hhcGU7Zm9yKGNvbnN0IGEgaW4gbilpZihPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksYSkhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgb3ZlcndyaXRlIGtleXMgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cy4gVXNlIGAuc2FmZUV4dGVuZCgpYCBpbnN0ZWFkLiIpfWNvbnN0IGU9ZmUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3QgaT17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5ufTtyZXR1cm4geWUodGhpcywic2hhcGUiLGkpLGl9fSk7cmV0dXJuIGFlKHQsZSl9ZnVuY3Rpb24gSHModCxuKXtpZighVGUobikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGlucHV0IHRvIHNhZmVFeHRlbmQ6IGV4cGVjdGVkIGEgcGxhaW4gb2JqZWN0Iik7Y29uc3Qgcj1mZSh0Ll96b2QuZGVmLHtnZXQgc2hhcGUoKXtjb25zdCBvPXsuLi50Ll96b2QuZGVmLnNoYXBlLC4uLm59O3JldHVybiB5ZSh0aGlzLCJzaGFwZSIsbyksb319KTtyZXR1cm4gYWUodCxyKX1mdW5jdGlvbiBWcyh0LG4pe2lmKHQuX3pvZC5kZWYuY2hlY2tzPy5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCIubWVyZ2UoKSBjYW5ub3QgYmUgdXNlZCBvbiBvYmplY3Qgc2NoZW1hcyBjb250YWluaW5nIHJlZmluZW1lbnRzLiBVc2UgLnNhZmVFeHRlbmQoKSBpbnN0ZWFkLiIpO2NvbnN0IHI9ZmUodC5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgbz17Li4udC5fem9kLmRlZi5zaGFwZSwuLi5uLl96b2QuZGVmLnNoYXBlfTtyZXR1cm4geWUodGhpcywic2hhcGUiLG8pLG99LGdldCBjYXRjaGFsbCgpe3JldHVybiBuLl96b2QuZGVmLmNhdGNoYWxsfSxjaGVja3M6bi5fem9kLmRlZi5jaGVja3M/P1tdfSk7cmV0dXJuIGFlKHQscil9ZnVuY3Rpb24gS3ModCxuLHIpe2NvbnN0IGU9bi5fem9kLmRlZi5jaGVja3M7aWYoZSYmZS5sZW5ndGg+MCl0aHJvdyBuZXcgRXJyb3IoIi5wYXJ0aWFsKCkgY2Fubm90IGJlIHVzZWQgb24gb2JqZWN0IHNjaGVtYXMgY29udGFpbmluZyByZWZpbmVtZW50cyIpO2NvbnN0IGE9ZmUobi5fem9kLmRlZix7Z2V0IHNoYXBlKCl7Y29uc3Qgcz1uLl96b2QuZGVmLnNoYXBlLGM9ey4uLnN9O2lmKHIpZm9yKGNvbnN0IHUgaW4gcil7aWYoISh1IGluIHMpKXRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogIiR7dX0iYCk7clt1XSYmKGNbdV09dD9uZXcgdCh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTpzW3VdfSk6c1t1XSl9ZWxzZSBmb3IoY29uc3QgdSBpbiBzKWNbdV09dD9uZXcgdCh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTpzW3VdfSk6c1t1XTtyZXR1cm4geWUodGhpcywic2hhcGUiLGMpLGN9LGNoZWNrczpbXX0pO3JldHVybiBhZShuLGEpfWZ1bmN0aW9uIEJzKHQsbixyKXtjb25zdCBvPWZlKG4uX3pvZC5kZWYse2dldCBzaGFwZSgpe2NvbnN0IGU9bi5fem9kLmRlZi5zaGFwZSxpPXsuLi5lfTtpZihyKWZvcihjb25zdCBhIGluIHIpe2lmKCEoYSBpbiBpKSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6ICIke2F9ImApO3JbYV0mJihpW2FdPW5ldyB0KHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOmVbYV19KSl9ZWxzZSBmb3IoY29uc3QgYSBpbiBlKWlbYV09bmV3IHQoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6ZVthXX0pO3JldHVybiB5ZSh0aGlzLCJzaGFwZSIsaSksaX19KTtyZXR1cm4gYWUobixvKX1mdW5jdGlvbiB6ZSh0LG49MCl7aWYodC5hYm9ydGVkPT09ITApcmV0dXJuITA7Zm9yKGxldCByPW47cjx0Lmlzc3Vlcy5sZW5ndGg7cisrKWlmKHQuaXNzdWVzW3JdPy5jb250aW51ZSE9PSEwKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFdzKHQsbj0wKXtpZih0LmFib3J0ZWQ9PT0hMClyZXR1cm4hMDtmb3IobGV0IHI9bjtyPHQuaXNzdWVzLmxlbmd0aDtyKyspaWYodC5pc3N1ZXNbcl0/LmNvbnRpbnVlPT09ITEpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gdWUodCxuKXtyZXR1cm4gbi5tYXAocj0+e3ZhciBvO3JldHVybihvPXIpLnBhdGg/PyhvLnBhdGg9W10pLHIucGF0aC51bnNoaWZ0KHQpLHJ9KX1mdW5jdGlvbiBwdCh0KXtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciP3Q6dD8ubWVzc2FnZX1mdW5jdGlvbiBvZSh0LG4scil7Y29uc3Qgbz10Lm1lc3NhZ2U/dC5tZXNzYWdlOnB0KHQuaW5zdD8uX3pvZC5kZWY/LmVycm9yPy4odCkpPz9wdChuPy5lcnJvcj8uKHQpKT8/cHQoci5jdXN0b21FcnJvcj8uKHQpKT8/cHQoci5sb2NhbGVFcnJvcj8uKHQpKT8/IkludmFsaWQgaW5wdXQiLHtpbnN0OmUsY29udGludWU6aSxpbnB1dDphLC4uLnN9PXQ7cmV0dXJuIHMucGF0aD8/KHMucGF0aD1bXSkscy5tZXNzYWdlPW8sbj8ucmVwb3J0SW5wdXQmJihzLmlucHV0PWEpLHN9ZnVuY3Rpb24gTW4odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTZXQ/InNldCI6dCBpbnN0YW5jZW9mIE1hcD8ibWFwIjp0IGluc3RhbmNlb2YgRmlsZT8iZmlsZSI6InVua25vd24ifWZ1bmN0aW9uIHFuKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpPyJhcnJheSI6dHlwZW9mIHQ9PSJzdHJpbmciPyJzdHJpbmciOiJ1bmtub3duIn1mdW5jdGlvbiBTKHQpe2NvbnN0IG49dHlwZW9mIHQ7c3dpdGNoKG4pe2Nhc2UibnVtYmVyIjpyZXR1cm4gTnVtYmVyLmlzTmFOKHQpPyJuYW4iOiJudW1iZXIiO2Nhc2Uib2JqZWN0Ijp7aWYodD09PW51bGwpcmV0dXJuIm51bGwiO2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuImFycmF5Ijtjb25zdCByPXQ7aWYociYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHIpIT09T2JqZWN0LnByb3RvdHlwZSYmImNvbnN0cnVjdG9yImluIHImJnIuY29uc3RydWN0b3IpcmV0dXJuIHIuY29uc3RydWN0b3IubmFtZX19cmV0dXJuIG59ZnVuY3Rpb24gTWUoLi4udCl7Y29uc3RbbixyLG9dPXQ7cmV0dXJuIHR5cGVvZiBuPT0ic3RyaW5nIj97bWVzc2FnZTpuLGNvZGU6ImN1c3RvbSIsaW5wdXQ6cixpbnN0Om99OnsuLi5ufX1mdW5jdGlvbiBNbSh0KXtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZmlsdGVyKChbbixyXSk9Pk51bWJlci5pc05hTihOdW1iZXIucGFyc2VJbnQobiwxMCkpKS5tYXAobj0+blsxXSl9ZnVuY3Rpb24gR3ModCl7Y29uc3Qgbj1hdG9iKHQpLHI9bmV3IFVpbnQ4QXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXJbb109bi5jaGFyQ29kZUF0KG8pO3JldHVybiByfWZ1bmN0aW9uIFhzKHQpe2xldCBuPSIiO2ZvcihsZXQgcj0wO3I8dC5sZW5ndGg7cisrKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUodFtyXSk7cmV0dXJuIGJ0b2Eobil9ZnVuY3Rpb24gcW0odCl7Y29uc3Qgbj10LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpLHI9Ij0iLnJlcGVhdCgoNC1uLmxlbmd0aCU0KSU0KTtyZXR1cm4gR3MobityKX1mdW5jdGlvbiBGbSh0KXtyZXR1cm4gWHModCkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89L2csIiIpfWZ1bmN0aW9uIEptKHQpe2NvbnN0IG49dC5yZXBsYWNlKC9eMHgvLCIiKTtpZihuLmxlbmd0aCUyIT09MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyBsZW5ndGgiKTtjb25zdCByPW5ldyBVaW50OEFycmF5KG4ubGVuZ3RoLzIpO2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bys9MilyW28vMl09TnVtYmVyLnBhcnNlSW50KG4uc2xpY2UobyxvKzIpLDE2KTtyZXR1cm4gcn1mdW5jdGlvbiBIbSh0KXtyZXR1cm4gQXJyYXkuZnJvbSh0KS5tYXAobj0+bi50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1jbGFzcyBWbXtjb25zdHJ1Y3RvciguLi5uKXt9fWNvbnN0IHNpPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxCSUdJTlRfRk9STUFUX1JBTkdFUzpNcyxDbGFzczpWbSxOVU1CRVJfRk9STUFUX1JBTkdFUzpMcyxhYm9ydGVkOnplLGFsbG93c0V2YWw6UnMsYXNzZXJ0Ok9tLGFzc2VydEVxdWFsOlRtLGFzc2VydElzOlVtLGFzc2VydE5ldmVyOlBtLGFzc2VydE5vdEVxdWFsOmptLGFzc2lnblByb3A6eWUsYmFzZTY0VG9VaW50OEFycmF5OkdzLGJhc2U2NHVybFRvVWludDhBcnJheTpxbSxjYWNoZWQ6YnQsY2FwdHVyZVN0YWNrVHJhY2U6YWksY2xlYW5FbnVtOk1tLGNsZWFuUmVnZXg6QW4sY2xvbmU6YWUsY2xvbmVEZWY6Tm0sY3JlYXRlVHJhbnNwYXJlbnRQcm94eTpMbSxkZWZpbmVMYXp5OlQsZXNjOlhyLGVzY2FwZVJlZ2V4OnZlLGV4cGxpY2l0bHlBYm9ydGVkOldzLGV4dGVuZDpKcyxmaW5hbGl6ZUlzc3VlOm9lLGZsb2F0U2FmZVJlbWFpbmRlcjpFcyxnZXRFbGVtZW50QXRQYXRoOkVtLGdldEVudW1WYWx1ZXM6b2ksZ2V0TGVuZ3RoYWJsZU9yaWdpbjpxbixnZXRQYXJzZWRUeXBlOkFtLGdldFNpemFibGVPcmlnaW46TW4saGV4VG9VaW50OEFycmF5OkptLGlzT2JqZWN0OkxlLGlzUGxhaW5PYmplY3Q6VGUsaXNzdWU6TWUsam9pblZhbHVlczpfLGpzb25TdHJpbmdpZnlSZXBsYWNlcjpVbixtZXJnZTpWcyxtZXJnZURlZnM6ZmUsbm9ybWFsaXplUGFyYW1zOmgsbnVsbGlzaDpOZSxudW1LZXlzOkNtLG9iamVjdENsb25lOkRtLG9taXQ6RnMsb3B0aW9uYWxLZXlzOkFzLHBhcnNlZFR5cGU6UyxwYXJ0aWFsOktzLHBpY2s6cXMscHJlZml4SXNzdWVzOnVlLHByaW1pdGl2ZVR5cGVzOkNzLHByb21pc2VBbGxPYmplY3Q6Wm0scHJvcGVydHlLZXlUeXBlczpQbixyYW5kb21TdHJpbmc6Um0scmVxdWlyZWQ6QnMsc2FmZUV4dGVuZDpIcyxzaGFsbG93Q2xvbmU6TG4sc2x1Z2lmeTpacyxzdHJpbmdpZnlQcmltaXRpdmU6ayx1aW50OEFycmF5VG9CYXNlNjQ6WHMsdWludDhBcnJheVRvQmFzZTY0dXJsOkZtLHVpbnQ4QXJyYXlUb0hleDpIbSx1bndyYXBNZXNzYWdlOnB0fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLFlzPSh0LG4pPT57dC5uYW1lPSIkWm9kRXJyb3IiLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfem9kIix7dmFsdWU6dC5fem9kLGVudW1lcmFibGU6ITF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNzdWVzIix7dmFsdWU6bixlbnVtZXJhYmxlOiExfSksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KG4sVW4sMiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInRvU3RyaW5nIix7dmFsdWU6KCk9PnQubWVzc2FnZSxlbnVtZXJhYmxlOiExfSl9LGNpPWQoIiRab2RFcnJvciIsWXMpLHNlPWQoIiRab2RFcnJvciIsWXMse1BhcmVudDpFcnJvcn0pO2Z1bmN0aW9uIEZuKHQsbj1yPT5yLm1lc3NhZ2Upe2NvbnN0IHI9e30sbz1bXTtmb3IoY29uc3QgZSBvZiB0Lmlzc3VlcyllLnBhdGgubGVuZ3RoPjA/KHJbZS5wYXRoWzBdXT1yW2UucGF0aFswXV18fFtdLHJbZS5wYXRoWzBdXS5wdXNoKG4oZSkpKTpvLnB1c2gobihlKSk7cmV0dXJue2Zvcm1FcnJvcnM6byxmaWVsZEVycm9yczpyfX1mdW5jdGlvbiBKbih0LG49cj0+ci5tZXNzYWdlKXtjb25zdCByPXtfZXJyb3JzOltdfSxvPShlLGk9W10pPT57Zm9yKGNvbnN0IGEgb2YgZS5pc3N1ZXMpaWYoYS5jb2RlPT09ImludmFsaWRfdW5pb24iJiZhLmVycm9ycy5sZW5ndGgpYS5lcnJvcnMubWFwKHM9Pm8oe2lzc3VlczpzfSxbLi4uaSwuLi5hLnBhdGhdKSk7ZWxzZSBpZihhLmNvZGU9PT0iaW52YWxpZF9rZXkiKW8oe2lzc3VlczphLmlzc3Vlc30sWy4uLmksLi4uYS5wYXRoXSk7ZWxzZSBpZihhLmNvZGU9PT0iaW52YWxpZF9lbGVtZW50IilvKHtpc3N1ZXM6YS5pc3N1ZXN9LFsuLi5pLC4uLmEucGF0aF0pO2Vsc2V7Y29uc3Qgcz1bLi4uaSwuLi5hLnBhdGhdO2lmKHMubGVuZ3RoPT09MClyLl9lcnJvcnMucHVzaChuKGEpKTtlbHNle2xldCBjPXIsdT0wO2Zvcig7dTxzLmxlbmd0aDspe2NvbnN0IGw9c1t1XTt1PT09cy5sZW5ndGgtMT8oY1tsXT1jW2xdfHx7X2Vycm9yczpbXX0sY1tsXS5fZXJyb3JzLnB1c2gobihhKSkpOmNbbF09Y1tsXXx8e19lcnJvcnM6W119LGM9Y1tsXSx1Kyt9fX19O3JldHVybiBvKHQpLHJ9ZnVuY3Rpb24gdWkodCxuPXI9PnIubWVzc2FnZSl7Y29uc3Qgcj17ZXJyb3JzOltdfSxvPShlLGk9W10pPT57dmFyIGEscztmb3IoY29uc3QgYyBvZiBlLmlzc3VlcylpZihjLmNvZGU9PT0iaW52YWxpZF91bmlvbiImJmMuZXJyb3JzLmxlbmd0aCljLmVycm9ycy5tYXAodT0+byh7aXNzdWVzOnV9LFsuLi5pLC4uLmMucGF0aF0pKTtlbHNlIGlmKGMuY29kZT09PSJpbnZhbGlkX2tleSIpbyh7aXNzdWVzOmMuaXNzdWVzfSxbLi4uaSwuLi5jLnBhdGhdKTtlbHNlIGlmKGMuY29kZT09PSJpbnZhbGlkX2VsZW1lbnQiKW8oe2lzc3VlczpjLmlzc3Vlc30sWy4uLmksLi4uYy5wYXRoXSk7ZWxzZXtjb25zdCB1PVsuLi5pLC4uLmMucGF0aF07aWYodS5sZW5ndGg9PT0wKXtyLmVycm9ycy5wdXNoKG4oYykpO2NvbnRpbnVlfWxldCBsPXIsZz0wO2Zvcig7Zzx1Lmxlbmd0aDspe2NvbnN0IHY9dVtnXSwkPWc9PT11Lmxlbmd0aC0xO3R5cGVvZiB2PT0ic3RyaW5nIj8obC5wcm9wZXJ0aWVzPz8obC5wcm9wZXJ0aWVzPXt9KSwoYT1sLnByb3BlcnRpZXMpW3ZdPz8oYVt2XT17ZXJyb3JzOltdfSksbD1sLnByb3BlcnRpZXNbdl0pOihsLml0ZW1zPz8obC5pdGVtcz1bXSksKHM9bC5pdGVtcylbdl0/PyhzW3ZdPXtlcnJvcnM6W119KSxsPWwuaXRlbXNbdl0pLCQmJmwuZXJyb3JzLnB1c2gobihjKSksZysrfX19O3JldHVybiBvKHQpLHJ9ZnVuY3Rpb24gUXModCl7Y29uc3Qgbj1bXSxyPXQubWFwKG89PnR5cGVvZiBvPT0ib2JqZWN0Ij9vLmtleTpvKTtmb3IoY29uc3QgbyBvZiByKXR5cGVvZiBvPT0ibnVtYmVyIj9uLnB1c2goYFske299XWApOnR5cGVvZiBvPT0ic3ltYm9sIj9uLnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhvKSl9XWApOi9bXlx3JF0vLnRlc3Qobyk/bi5wdXNoKGBbJHtKU09OLnN0cmluZ2lmeShvKX1dYCk6KG4ubGVuZ3RoJiZuLnB1c2goIi4iKSxuLnB1c2gobykpO3JldHVybiBuLmpvaW4oIiIpfWZ1bmN0aW9uIGxpKHQpe2NvbnN0IG49W10scj1bLi4udC5pc3N1ZXNdLnNvcnQoKG8sZSk9PihvLnBhdGg/P1tdKS5sZW5ndGgtKGUucGF0aD8/W10pLmxlbmd0aCk7Zm9yKGNvbnN0IG8gb2YgciluLnB1c2goYOKcliAke28ubWVzc2FnZX1gKSxvLnBhdGg/Lmxlbmd0aCYmbi5wdXNoKGAgIOKGkiBhdCAke1FzKG8ucGF0aCl9YCk7cmV0dXJuIG4uam9pbihgCmApfWNvbnN0IHl0PXQ9PihuLHIsbyxlKT0+e2NvbnN0IGk9bz97Li4ubyxhc3luYzohMX06e2FzeW5jOiExfSxhPW4uX3pvZC5ydW4oe3ZhbHVlOnIsaXNzdWVzOltdfSxpKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgeGU7aWYoYS5pc3N1ZXMubGVuZ3RoKXtjb25zdCBzPW5ldyhlPy5FcnI/P3QpKGEuaXNzdWVzLm1hcChjPT5vZShjLGksVigpKSkpO3Rocm93IGFpKHMsZT8uY2FsbGVlKSxzfXJldHVybiBhLnZhbHVlfSxZcj15dChzZSksa3Q9dD0+YXN5bmMobixyLG8sZSk9Pntjb25zdCBpPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IGE9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGkpO2lmKGEgaW5zdGFuY2VvZiBQcm9taXNlJiYoYT1hd2FpdCBhKSxhLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IHM9bmV3KGU/LkVycj8/dCkoYS5pc3N1ZXMubWFwKGM9Pm9lKGMsaSxWKCkpKSk7dGhyb3cgYWkocyxlPy5jYWxsZWUpLHN9cmV0dXJuIGEudmFsdWV9LFFyPWt0KHNlKSxTdD10PT4obixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGFzeW5jOiExfTp7YXN5bmM6ITF9LGk9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGUpO2lmKGkgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB4ZTtyZXR1cm4gaS5pc3N1ZXMubGVuZ3RoP3tzdWNjZXNzOiExLGVycm9yOm5ldyh0Pz9jaSkoaS5pc3N1ZXMubWFwKGE9Pm9lKGEsZSxWKCkpKSl9OntzdWNjZXNzOiEwLGRhdGE6aS52YWx1ZX19LGRpPVN0KHNlKSx3dD10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sYXN5bmM6ITB9Onthc3luYzohMH07bGV0IGk9bi5fem9kLnJ1bih7dmFsdWU6cixpc3N1ZXM6W119LGUpO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZSYmKGk9YXdhaXQgaSksaS5pc3N1ZXMubGVuZ3RoP3tzdWNjZXNzOiExLGVycm9yOm5ldyB0KGkuaXNzdWVzLm1hcChhPT5vZShhLGUsVigpKSkpfTp7c3VjY2VzczohMCxkYXRhOmkudmFsdWV9fSxlYz13dChzZSksbWk9dD0+KG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4geXQodCkobixyLGUpfSxLbT1taShzZSkscGk9dD0+KG4scixvKT0+eXQodCkobixyLG8pLEJtPXBpKHNlKSxmaT10PT5hc3luYyhuLHIsbyk9Pntjb25zdCBlPW8/ey4uLm8sZGlyZWN0aW9uOiJiYWNrd2FyZCJ9OntkaXJlY3Rpb246ImJhY2t3YXJkIn07cmV0dXJuIGt0KHQpKG4scixlKX0sV209Zmkoc2UpLGdpPXQ9PmFzeW5jKG4scixvKT0+a3QodCkobixyLG8pLEdtPWdpKHNlKSx2aT10PT4obixyLG8pPT57Y29uc3QgZT1vP3suLi5vLGRpcmVjdGlvbjoiYmFja3dhcmQifTp7ZGlyZWN0aW9uOiJiYWNrd2FyZCJ9O3JldHVybiBTdCh0KShuLHIsZSl9LFhtPXZpKHNlKSxoaT10PT4obixyLG8pPT5TdCh0KShuLHIsbyksWW09aGkoc2UpLCRpPXQ9PmFzeW5jKG4scixvKT0+e2NvbnN0IGU9bz97Li4ubyxkaXJlY3Rpb246ImJhY2t3YXJkIn06e2RpcmVjdGlvbjoiYmFja3dhcmQifTtyZXR1cm4gd3QodCkobixyLGUpfSxRbT0kaShzZSksX2k9dD0+YXN5bmMobixyLG8pPT53dCh0KShuLHIsbyksZXA9X2koc2UpLHRjPS9eW2NDXVswLTlhLXpdezYsfSQvLG5jPS9eWzAtOWEtel0rJC8scmM9L15bMC05QS1ISktNTlAtVFYtWmEtaGprbW5wLXR2LXpdezI2fSQvLGljPS9eWzAtOWEtdkEtVl17MjB9JC8sb2M9L15bQS1aYS16MC05XXsyN30kLyxhYz0vXlthLXpBLVowLTlfLV17MjF9JC8sc2M9L15QKD86KFxkK1cpfCg/IS4qVykoPz1cZHxUXGQpKFxkK1kpPyhcZCtNKT8oXGQrRCk/KFQoPz1cZCkoXGQrSCk/KFxkK00pPyhcZCsoWy4sXVxkKyk/Uyk/KT8pJC8sdHA9L15bLStdP1AoPyEkKSg/Oig/OlstK10/XGQrWSl8KD86Wy0rXT9cZCtbLixdXGQrWSQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86KD86Wy0rXT9cZCtXKXwoPzpbLStdP1xkK1suLF1cZCtXJCkpPyg/Oig/OlstK10/XGQrRCl8KD86Wy0rXT9cZCtbLixdXGQrRCQpKT8oPzpUKD89W1xkKy1dKSg/Oig/OlstK10/XGQrSCl8KD86Wy0rXT9cZCtbLixdXGQrSCQpKT8oPzooPzpbLStdP1xkK00pfCg/OlstK10/XGQrWy4sXVxkK00kKSk/KD86Wy0rXT9cZCsoPzpbLixdXGQrKT9TKT8pPz8kLyxjYz0vXihbMC05YS1mQS1GXXs4fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXs0fS1bMC05YS1mQS1GXXsxMn0pJC8scWU9dD0+dD9uZXcgUmVnRXhwKGBeKFswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LSR7dH1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfSkkYCk6L14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzEtOF1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDB8ZmZmZmZmZmYtZmZmZi1mZmZmLWZmZmYtZmZmZmZmZmZmZmZmKSQvLG5wPXFlKDQpLHJwPXFlKDYpLGlwPXFlKDcpLHVjPS9eKD8hXC4pKD8hLipcLlwuKShbQS1aYS16MC05XycrXC1cLl0qKVtBLVphLXowLTlfKy1dQChbQS1aYS16MC05XVtBLVphLXowLTlcLV0qXC4pK1tBLVphLXpdezIsfSQvLG9wPS9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLGFwPS9eKChbXjw+KClcW1xdXFwuLDs6XHNAIl0rKFwuW148PigpXFtcXVxcLiw7OlxzQCJdKykqKXwoIi4rIikpQCgoXFtbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XSl8KChbYS16QS1aXC0wLTldK1wuKStbYS16QS1aXXsyLH0pKSQvLGxjPS9eW15cc0AiXXsxLDY0fUBbXlxzQF17MSwyNTV9JC91LHNwPWxjLGNwPS9eW2EtekEtWjAtOS4hIyQlJicqKy89P15fYHt8fX4tXStAW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KD86XC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLHVwPSJeKFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxccHtFbW9qaV9Db21wb25lbnR9KSskIjtmdW5jdGlvbiBkYygpe3JldHVybiBuZXcgUmVnRXhwKHVwLCJ1Iil9Y29uc3QgbWM9L14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvLHBjPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw3fTp8KFswLTlhLWZBLUZdezEsNH06KXsxLDZ9OlswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDV9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDJ9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwzfXwoWzAtOWEtZkEtRl17MSw0fTopezEsM30oOlswLTlhLWZBLUZdezEsNH0pezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDJ9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDV9fFswLTlhLWZBLUZdezEsNH06KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw2fSl8OigoOlswLTlhLWZBLUZdezEsNH0pezEsN318OikpJC8sZmM9dD0+e2NvbnN0IG49dmUodD8/IjoiKTtyZXR1cm4gbmV3IFJlZ0V4cChgXig/OlswLTlBLUZdezJ9JHtufSl7NX1bMC05QS1GXXsyfSR8Xig/OlswLTlhLWZdezJ9JHtufSl7NX1bMC05YS1mXXsyfSRgKX0sZ2M9L14oKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcLil7M30oMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVwvKFswLTldfFsxLTJdWzAtOV18M1swLTJdKSQvLHZjPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fDo6fChbMC05YS1mQS1GXXsxLDR9KT86OihbMC05YS1mQS1GXXsxLDR9Oj8pezAsNn0pXC8oMTJbMC04XXwxWzAxXVswLTldfFsxLTldP1swLTldKSQvLGhjPS9eJHxeKD86WzAtOWEtekEtWisvXXs0fSkqKD86KD86WzAtOWEtekEtWisvXXsyfT09KXwoPzpbMC05YS16QS1aKy9dezN9PSkpPyQvLGJpPS9eW0EtWmEtejAtOV8tXSokLywkYz0vXig/PS57MSwyNTN9XC4/JClbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTldKD86Wy0wLTlhLXpBLVpdezAsNjF9WzAtOWEtekEtWl0pPykqXC4/JC8sX2M9L14oW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/XC4pK1thLXpBLVpdezIsfSQvLHlpPS9eaHR0cHM/JC8sYmM9L15cK1sxLTldXGR7NiwxNH0kLyx5Yz0iKD86KD86XFxkXFxkWzI0NjhdWzA0OF18XFxkXFxkWzEzNTc5XVsyNl18XFxkXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxkezR9LSg/Oig/OjBbMTM1NzhdfDFbMDJdKS0oPzowWzEtOV18WzEyXVxcZHwzWzAxXSl8KD86MFs0NjldfDExKS0oPzowWzEtOV18WzEyXVxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxkfDJbMC04XSkpKSIsa2M9bmV3IFJlZ0V4cChgXiR7eWN9JGApO2Z1bmN0aW9uIFNjKHQpe2NvbnN0IG49Iig/OlswMV1cXGR8MlswLTNdKTpbMC01XVxcZCI7cmV0dXJuIHR5cGVvZiB0LnByZWNpc2lvbj09Im51bWJlciI/dC5wcmVjaXNpb249PT0tMT9gJHtufWA6dC5wcmVjaXNpb249PT0wP2Ake259OlswLTVdXFxkYDpgJHtufTpbMC01XVxcZFxcLlxcZHske3QucHJlY2lzaW9ufX1gOmAke259KD86OlswLTVdXFxkKD86XFwuXFxkKyk/KT9gfWZ1bmN0aW9uIHdjKHQpe3JldHVybiBuZXcgUmVnRXhwKGBeJHtTYyh0KX0kYCl9ZnVuY3Rpb24gSWModCl7Y29uc3Qgbj1TYyh7cHJlY2lzaW9uOnQucHJlY2lzaW9ufSkscj1bIloiXTt0LmxvY2FsJiZyLnB1c2goIiIpLHQub2Zmc2V0JiZyLnB1c2goIihbKy1dKD86WzAxXVxcZHwyWzAtM10pOlswLTVdXFxkKSIpO2NvbnN0IG89YCR7bn0oPzoke3Iuam9pbigifCIpfSlgO3JldHVybiBuZXcgUmVnRXhwKGBeJHt5Y31UKD86JHtvfSkkYCl9Y29uc3QgemM9dD0+e2NvbnN0IG49dD9gW1xcc1xcU117JHt0Py5taW5pbXVtPz8wfSwke3Q/Lm1heGltdW0/PyIifX1gOiJbXFxzXFxTXSoiO3JldHVybiBuZXcgUmVnRXhwKGBeJHtufSRgKX0seGM9L14tP1xkK24/JC8sVGM9L14tP1xkKyQvLGtpPS9eLT9cZCsoPzpcLlxkKyk/JC8samM9L14oPzp0cnVlfGZhbHNlKSQvaSxVYz0vXm51bGwkL2ksUGM9L151bmRlZmluZWQkL2ksT2M9L15bXkEtWl0qJC8sRGM9L15bXmEtel0qJC8sTmM9L15bMC05YS1mQS1GXSokLztmdW5jdGlvbiBJdCh0LG4pe3JldHVybiBuZXcgUmVnRXhwKGBeW0EtWmEtejAtOSsvXXske3R9fSR7bn0kYCl9ZnVuY3Rpb24genQodCl7cmV0dXJuIG5ldyBSZWdFeHAoYF5bQS1aYS16MC05Xy1deyR7dH19JGApfWNvbnN0IGxwPS9eWzAtOWEtZkEtRl17MzJ9JC8sZHA9SXQoMjIsIj09IiksbXA9enQoMjIpLHBwPS9eWzAtOWEtZkEtRl17NDB9JC8sZnA9SXQoMjcsIj0iKSxncD16dCgyNyksdnA9L15bMC05YS1mQS1GXXs2NH0kLyxocD1JdCg0MywiPSIpLCRwPXp0KDQzKSxfcD0vXlswLTlhLWZBLUZdezk2fSQvLGJwPUl0KDY0LCIiKSx5cD16dCg2NCksa3A9L15bMC05YS1mQS1GXXsxMjh9JC8sU3A9SXQoODYsIj09Iiksd3A9enQoODYpLEhuPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiYXNlNjQ6aGMsYmFzZTY0dXJsOmJpLGJpZ2ludDp4Yyxib29sZWFuOmpjLGJyb3dzZXJFbWFpbDpjcCxjaWRydjQ6Z2MsY2lkcnY2OnZjLGN1aWQ6dGMsY3VpZDI6bmMsZGF0ZTprYyxkYXRldGltZTpJYyxkb21haW46X2MsZHVyYXRpb246c2MsZTE2NDpiYyxlbWFpbDp1YyxlbW9qaTpkYyxleHRlbmRlZER1cmF0aW9uOnRwLGd1aWQ6Y2MsaGV4Ok5jLGhvc3RuYW1lOiRjLGh0bWw1RW1haWw6b3AsaHR0cFByb3RvY29sOnlpLGlkbkVtYWlsOnNwLGludGVnZXI6VGMsaXB2NDptYyxpcHY2OnBjLGtzdWlkOm9jLGxvd2VyY2FzZTpPYyxtYWM6ZmMsbWQ1X2Jhc2U2NDpkcCxtZDVfYmFzZTY0dXJsOm1wLG1kNV9oZXg6bHAsbmFub2lkOmFjLG51bGw6VWMsbnVtYmVyOmtpLHJmYzUzMjJFbWFpbDphcCxzaGExX2Jhc2U2NDpmcCxzaGExX2Jhc2U2NHVybDpncCxzaGExX2hleDpwcCxzaGEyNTZfYmFzZTY0OmhwLHNoYTI1Nl9iYXNlNjR1cmw6JHAsc2hhMjU2X2hleDp2cCxzaGEzODRfYmFzZTY0OmJwLHNoYTM4NF9iYXNlNjR1cmw6eXAsc2hhMzg0X2hleDpfcCxzaGE1MTJfYmFzZTY0OlNwLHNoYTUxMl9iYXNlNjR1cmw6d3Asc2hhNTEyX2hleDprcCxzdHJpbmc6emMsdGltZTp3Yyx1bGlkOnJjLHVuZGVmaW5lZDpQYyx1bmljb2RlRW1haWw6bGMsdXBwZXJjYXNlOkRjLHV1aWQ6cWUsdXVpZDQ6bnAsdXVpZDY6cnAsdXVpZDc6aXAseGlkOmljfSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLHE9ZCgiJFpvZENoZWNrIiwodCxuKT0+e3ZhciByO3QuX3pvZD8/KHQuX3pvZD17fSksdC5fem9kLmRlZj1uLChyPXQuX3pvZCkub25hdHRhY2g/PyhyLm9uYXR0YWNoPVtdKX0pLEVjPXtudW1iZXI6Im51bWJlciIsYmlnaW50OiJiaWdpbnQiLG9iamVjdDoiZGF0ZSJ9LFNpPWQoIiRab2RDaGVja0xlc3NUaGFuIiwodCxuKT0+e3EuaW5pdCh0LG4pO2NvbnN0IHI9RWNbdHlwZW9mIG4udmFsdWVdO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcsaT0obi5pbmNsdXNpdmU/ZS5tYXhpbXVtOmUuZXhjbHVzaXZlTWF4aW11bSk/P051bWJlci5QT1NJVElWRV9JTkZJTklUWTtuLnZhbHVlPGkmJihuLmluY2x1c2l2ZT9lLm1heGltdW09bi52YWx1ZTplLmV4Y2x1c2l2ZU1heGltdW09bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9bz0+eyhuLmluY2x1c2l2ZT9vLnZhbHVlPD1uLnZhbHVlOm8udmFsdWU8bi52YWx1ZSl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjpyLGNvZGU6InRvb19iaWciLG1heGltdW06dHlwZW9mIG4udmFsdWU9PSJvYmplY3QiP24udmFsdWUuZ2V0VGltZSgpOm4udmFsdWUsaW5wdXQ6by52YWx1ZSxpbmNsdXNpdmU6bi5pbmNsdXNpdmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksd2k9ZCgiJFpvZENoZWNrR3JlYXRlclRoYW4iLCh0LG4pPT57cS5pbml0KHQsbik7Y29uc3Qgcj1FY1t0eXBlb2Ygbi52YWx1ZV07dC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZyxpPShuLmluY2x1c2l2ZT9lLm1pbmltdW06ZS5leGNsdXNpdmVNaW5pbXVtKT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24udmFsdWU+aSYmKG4uaW5jbHVzaXZlP2UubWluaW11bT1uLnZhbHVlOmUuZXhjbHVzaXZlTWluaW11bT1uLnZhbHVlKX0pLHQuX3pvZC5jaGVjaz1vPT57KG4uaW5jbHVzaXZlP28udmFsdWU+PW4udmFsdWU6by52YWx1ZT5uLnZhbHVlKXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOnIsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnR5cGVvZiBuLnZhbHVlPT0ib2JqZWN0Ij9uLnZhbHVlLmdldFRpbWUoKTpuLnZhbHVlLGlucHV0Om8udmFsdWUsaW5jbHVzaXZlOm4uaW5jbHVzaXZlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLFpjPWQoIiRab2RDaGVja011bHRpcGxlT2YiLCh0LG4pPT57cS5pbml0KHQsbiksdC5fem9kLm9uYXR0YWNoLnB1c2gocj0+e3ZhciBvOyhvPXIuX3pvZC5iYWcpLm11bHRpcGxlT2Y/PyhvLm11bHRpcGxlT2Y9bi52YWx1ZSl9KSx0Ll96b2QuY2hlY2s9cj0+e2lmKHR5cGVvZiByLnZhbHVlIT10eXBlb2Ygbi52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBtaXggbnVtYmVyIGFuZCBiaWdpbnQgaW4gbXVsdGlwbGVfb2YgY2hlY2suIik7KHR5cGVvZiByLnZhbHVlPT0iYmlnaW50Ij9yLnZhbHVlJW4udmFsdWU9PT1CaWdJbnQoMCk6RXMoci52YWx1ZSxuLnZhbHVlKT09PTApfHxyLmlzc3Vlcy5wdXNoKHtvcmlnaW46dHlwZW9mIHIudmFsdWUsY29kZToibm90X211bHRpcGxlX29mIixkaXZpc29yOm4udmFsdWUsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxSYz1kKCIkWm9kQ2hlY2tOdW1iZXJGb3JtYXQiLCh0LG4pPT57cS5pbml0KHQsbiksbi5mb3JtYXQ9bi5mb3JtYXR8fCJmbG9hdDY0Ijtjb25zdCByPW4uZm9ybWF0Py5pbmNsdWRlcygiaW50Iiksbz1yPyJpbnQiOiJudW1iZXIiLFtlLGldPUxzW24uZm9ybWF0XTt0Ll96b2Qub25hdHRhY2gucHVzaChhPT57Y29uc3Qgcz1hLl96b2QuYmFnO3MuZm9ybWF0PW4uZm9ybWF0LHMubWluaW11bT1lLHMubWF4aW11bT1pLHImJihzLnBhdHRlcm49VGMpfSksdC5fem9kLmNoZWNrPWE9Pntjb25zdCBzPWEudmFsdWU7aWYocil7aWYoIU51bWJlci5pc0ludGVnZXIocykpe2EuaXNzdWVzLnB1c2goe2V4cGVjdGVkOm8sZm9ybWF0Om4uZm9ybWF0LGNvZGU6ImludmFsaWRfdHlwZSIsY29udGludWU6ITEsaW5wdXQ6cyxpbnN0OnR9KTtyZXR1cm59aWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHMpKXtzPjA/YS5pc3N1ZXMucHVzaCh7aW5wdXQ6cyxjb2RlOiJ0b29fYmlnIixtYXhpbXVtOk51bWJlci5NQVhfU0FGRV9JTlRFR0VSLG5vdGU6IkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuIixpbnN0OnQsb3JpZ2luOm8saW5jbHVzaXZlOiEwLGNvbnRpbnVlOiFuLmFib3J0fSk6YS5pc3N1ZXMucHVzaCh7aW5wdXQ6cyxjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsbm90ZToiSW50ZWdlcnMgbXVzdCBiZSB3aXRoaW4gdGhlIHNhZmUgaW50ZWdlciByYW5nZS4iLGluc3Q6dCxvcmlnaW46byxpbmNsdXNpdmU6ITAsY29udGludWU6IW4uYWJvcnR9KTtyZXR1cm59fXM8ZSYmYS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJudW1iZXIiLGlucHV0OnMsY29kZToidG9vX3NtYWxsIixtaW5pbXVtOmUsaW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pLHM+aSYmYS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJudW1iZXIiLGlucHV0OnMsY29kZToidG9vX2JpZyIsbWF4aW11bTppLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxDYz1kKCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXQiLCh0LG4pPT57cS5pbml0KHQsbik7Y29uc3RbcixvXT1Nc1tuLmZvcm1hdF07dC5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGk9ZS5fem9kLmJhZztpLmZvcm1hdD1uLmZvcm1hdCxpLm1pbmltdW09cixpLm1heGltdW09b30pLHQuX3pvZC5jaGVjaz1lPT57Y29uc3QgaT1lLnZhbHVlO2k8ciYmZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJiaWdpbnQiLGlucHV0OmksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOnIsaW5jbHVzaXZlOiEwLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pLGk+byYmZS5pc3N1ZXMucHVzaCh7b3JpZ2luOiJiaWdpbnQiLGlucHV0OmksY29kZToidG9vX2JpZyIsbWF4aW11bTpvLGluY2x1c2l2ZTohMCxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxBYz1kKCIkWm9kQ2hlY2tNYXhTaXplIiwodCxuKT0+e3ZhciByO3EuaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hTmUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO24ubWF4aW11bTxlJiYoby5fem9kLmJhZy5tYXhpbXVtPW4ubWF4aW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtlLnNpemU8PW4ubWF4aW11bXx8by5pc3N1ZXMucHVzaCh7b3JpZ2luOk1uKGUpLGNvZGU6InRvb19iaWciLG1heGltdW06bi5tYXhpbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLExjPWQoIiRab2RDaGVja01pblNpemUiLCh0LG4pPT57dmFyIHI7cS5pbml0KHQsbiksKHI9dC5fem9kLmRlZikud2hlbj8/KHIud2hlbj1vPT57Y29uc3QgZT1vLnZhbHVlO3JldHVybiFOZShlKSYmZS5zaXplIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZy5taW5pbXVtPz9OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bi5taW5pbXVtPmUmJihvLl96b2QuYmFnLm1pbmltdW09bi5taW5pbXVtKX0pLHQuX3pvZC5jaGVjaz1vPT57Y29uc3QgZT1vLnZhbHVlO2Uuc2l6ZT49bi5taW5pbXVtfHxvLmlzc3Vlcy5wdXNoKHtvcmlnaW46TW4oZSksY29kZToidG9vX3NtYWxsIixtaW5pbXVtOm4ubWluaW11bSxpbmNsdXNpdmU6ITAsaW5wdXQ6ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxNYz1kKCIkWm9kQ2hlY2tTaXplRXF1YWxzIiwodCxuKT0+e3ZhciByO3EuaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hTmUoZSkmJmUuc2l6ZSE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5taW5pbXVtPW4uc2l6ZSxlLm1heGltdW09bi5zaXplLGUuc2l6ZT1uLnNpemV9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZSxpPWUuc2l6ZTtpZihpPT09bi5zaXplKXJldHVybjtjb25zdCBhPWk+bi5zaXplO28uaXNzdWVzLnB1c2goe29yaWdpbjpNbihlKSwuLi5hP3tjb2RlOiJ0b29fYmlnIixtYXhpbXVtOm4uc2l6ZX06e2NvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLnNpemV9LGluY2x1c2l2ZTohMCxleGFjdDohMCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHFjPWQoIiRab2RDaGVja01heExlbmd0aCIsKHQsbik9Pnt2YXIgcjtxLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWF4aW11bT8/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO24ubWF4aW11bTxlJiYoby5fem9kLmJhZy5tYXhpbXVtPW4ubWF4aW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtpZihlLmxlbmd0aDw9bi5tYXhpbXVtKXJldHVybjtjb25zdCBhPXFuKGUpO28uaXNzdWVzLnB1c2goe29yaWdpbjphLGNvZGU6InRvb19iaWciLG1heGltdW06bi5tYXhpbXVtLGluY2x1c2l2ZTohMCxpbnB1dDplLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLEZjPWQoIiRab2RDaGVja01pbkxlbmd0aCIsKHQsbik9Pnt2YXIgcjtxLmluaXQodCxuKSwocj10Ll96b2QuZGVmKS53aGVuPz8oci53aGVuPW89Pntjb25zdCBlPW8udmFsdWU7cmV0dXJuIU5lKGUpJiZlLmxlbmd0aCE9PXZvaWQgMH0pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWcubWluaW11bT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO24ubWluaW11bT5lJiYoby5fem9kLmJhZy5taW5pbXVtPW4ubWluaW11bSl9KSx0Ll96b2QuY2hlY2s9bz0+e2NvbnN0IGU9by52YWx1ZTtpZihlLmxlbmd0aD49bi5taW5pbXVtKXJldHVybjtjb25zdCBhPXFuKGUpO28uaXNzdWVzLnB1c2goe29yaWdpbjphLGNvZGU6InRvb19zbWFsbCIsbWluaW11bTpuLm1pbmltdW0saW5jbHVzaXZlOiEwLGlucHV0OmUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksSmM9ZCgiJFpvZENoZWNrTGVuZ3RoRXF1YWxzIiwodCxuKT0+e3ZhciByO3EuaW5pdCh0LG4pLChyPXQuX3pvZC5kZWYpLndoZW4/PyhyLndoZW49bz0+e2NvbnN0IGU9by52YWx1ZTtyZXR1cm4hTmUoZSkmJmUubGVuZ3RoIT09dm9pZCAwfSksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLm1pbmltdW09bi5sZW5ndGgsZS5tYXhpbXVtPW4ubGVuZ3RoLGUubGVuZ3RoPW4ubGVuZ3RofSksdC5fem9kLmNoZWNrPW89Pntjb25zdCBlPW8udmFsdWUsaT1lLmxlbmd0aDtpZihpPT09bi5sZW5ndGgpcmV0dXJuO2NvbnN0IGE9cW4oZSkscz1pPm4ubGVuZ3RoO28uaXNzdWVzLnB1c2goe29yaWdpbjphLC4uLnM/e2NvZGU6InRvb19iaWciLG1heGltdW06bi5sZW5ndGh9Ontjb2RlOiJ0b29fc21hbGwiLG1pbmltdW06bi5sZW5ndGh9LGluY2x1c2l2ZTohMCxleGFjdDohMCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pLHh0PWQoIiRab2RDaGVja1N0cmluZ0Zvcm1hdCIsKHQsbik9Pnt2YXIgcixvO3EuaW5pdCh0LG4pLHQuX3pvZC5vbmF0dGFjaC5wdXNoKGU9Pntjb25zdCBpPWUuX3pvZC5iYWc7aS5mb3JtYXQ9bi5mb3JtYXQsbi5wYXR0ZXJuJiYoaS5wYXR0ZXJucz8/KGkucGF0dGVybnM9bmV3IFNldCksaS5wYXR0ZXJucy5hZGQobi5wYXR0ZXJuKSl9KSxuLnBhdHRlcm4/KHI9dC5fem9kKS5jaGVjaz8/KHIuY2hlY2s9ZT0+e24ucGF0dGVybi5sYXN0SW5kZXg9MCwhbi5wYXR0ZXJuLnRlc3QoZS52YWx1ZSkmJmUuaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0LGlucHV0OmUudmFsdWUsLi4ubi5wYXR0ZXJuP3twYXR0ZXJuOm4ucGF0dGVybi50b1N0cmluZygpfTp7fSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX0pOihvPXQuX3pvZCkuY2hlY2s/PyhvLmNoZWNrPSgpPT57fSl9KSxIYz1kKCIkWm9kQ2hlY2tSZWdleCIsKHQsbik9Pnt4dC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntuLnBhdHRlcm4ubGFzdEluZGV4PTAsIW4ucGF0dGVybi50ZXN0KHIudmFsdWUpJiZyLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoicmVnZXgiLGlucHV0OnIudmFsdWUscGF0dGVybjpuLnBhdHRlcm4udG9TdHJpbmcoKSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxWYz1kKCIkWm9kQ2hlY2tMb3dlckNhc2UiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPU9jKSx4dC5pbml0KHQsbil9KSxLYz1kKCIkWm9kQ2hlY2tVcHBlckNhc2UiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPURjKSx4dC5pbml0KHQsbil9KSxCYz1kKCIkWm9kQ2hlY2tJbmNsdWRlcyIsKHQsbik9PntxLmluaXQodCxuKTtjb25zdCByPXZlKG4uaW5jbHVkZXMpLG89bmV3IFJlZ0V4cCh0eXBlb2Ygbi5wb3NpdGlvbj09Im51bWJlciI/YF4ueyR7bi5wb3NpdGlvbn19JHtyfWA6cik7bi5wYXR0ZXJuPW8sdC5fem9kLm9uYXR0YWNoLnB1c2goZT0+e2NvbnN0IGk9ZS5fem9kLmJhZztpLnBhdHRlcm5zPz8oaS5wYXR0ZXJucz1uZXcgU2V0KSxpLnBhdHRlcm5zLmFkZChvKX0pLHQuX3pvZC5jaGVjaz1lPT57ZS52YWx1ZS5pbmNsdWRlcyhuLmluY2x1ZGVzLG4ucG9zaXRpb24pfHxlLmlzc3Vlcy5wdXNoKHtvcmlnaW46InN0cmluZyIsY29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaW5jbHVkZXMiLGluY2x1ZGVzOm4uaW5jbHVkZXMsaW5wdXQ6ZS52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxXYz1kKCIkWm9kQ2hlY2tTdGFydHNXaXRoIiwodCxuKT0+e3EuaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFJlZ0V4cChgXiR7dmUobi5wcmVmaXgpfS4qYCk7bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXIpLHQuX3pvZC5vbmF0dGFjaC5wdXNoKG89Pntjb25zdCBlPW8uX3pvZC5iYWc7ZS5wYXR0ZXJucz8/KGUucGF0dGVybnM9bmV3IFNldCksZS5wYXR0ZXJucy5hZGQocil9KSx0Ll96b2QuY2hlY2s9bz0+e28udmFsdWUuc3RhcnRzV2l0aChuLnByZWZpeCl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJzdGFydHNfd2l0aCIscHJlZml4Om4ucHJlZml4LGlucHV0Om8udmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksR2M9ZCgiJFpvZENoZWNrRW5kc1dpdGgiLCh0LG4pPT57cS5pbml0KHQsbik7Y29uc3Qgcj1uZXcgUmVnRXhwKGAuKiR7dmUobi5zdWZmaXgpfSRgKTtuLnBhdHRlcm4/PyhuLnBhdHRlcm49ciksdC5fem9kLm9uYXR0YWNoLnB1c2gobz0+e2NvbnN0IGU9by5fem9kLmJhZztlLnBhdHRlcm5zPz8oZS5wYXR0ZXJucz1uZXcgU2V0KSxlLnBhdHRlcm5zLmFkZChyKX0pLHQuX3pvZC5jaGVjaz1vPT57by52YWx1ZS5lbmRzV2l0aChuLnN1ZmZpeCl8fG8uaXNzdWVzLnB1c2goe29yaWdpbjoic3RyaW5nIixjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJlbmRzX3dpdGgiLHN1ZmZpeDpuLnN1ZmZpeCxpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pO2Z1bmN0aW9uIHJzKHQsbixyKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4udWUocix0Lmlzc3VlcykpfWNvbnN0IFhjPWQoIiRab2RDaGVja1Byb3BlcnR5IiwodCxuKT0+e3EuaW5pdCh0LG4pLHQuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1uLnNjaGVtYS5fem9kLnJ1bih7dmFsdWU6ci52YWx1ZVtuLnByb3BlcnR5XSxpc3N1ZXM6W119LHt9KTtpZihvIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gby50aGVuKGU9PnJzKGUscixuLnByb3BlcnR5KSk7cnMobyxyLG4ucHJvcGVydHkpfX0pLFljPWQoIiRab2RDaGVja01pbWVUeXBlIiwodCxuKT0+e3EuaW5pdCh0LG4pO2NvbnN0IHI9bmV3IFNldChuLm1pbWUpO3QuX3pvZC5vbmF0dGFjaC5wdXNoKG89PntvLl96b2QuYmFnLm1pbWU9bi5taW1lfSksdC5fem9kLmNoZWNrPW89PntyLmhhcyhvLnZhbHVlLnR5cGUpfHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIix2YWx1ZXM6bi5taW1lLGlucHV0Om8udmFsdWUudHlwZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSxRYz1kKCIkWm9kQ2hlY2tPdmVyd3JpdGUiLCh0LG4pPT57cS5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9PntyLnZhbHVlPW4udHgoci52YWx1ZSl9fSk7Y2xhc3MgZXV7Y29uc3RydWN0b3Iobj1bXSl7dGhpcy5jb250ZW50PVtdLHRoaXMuaW5kZW50PTAsdGhpcyYmKHRoaXMuYXJncz1uKX1pbmRlbnRlZChuKXt0aGlzLmluZGVudCs9MSxuKHRoaXMpLHRoaXMuaW5kZW50LT0xfXdyaXRlKG4pe2lmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXtuKHRoaXMse2V4ZWN1dGlvbjoic3luYyJ9KSxuKHRoaXMse2V4ZWN1dGlvbjoiYXN5bmMifSk7cmV0dXJufWNvbnN0IG89bi5zcGxpdChgCmApLmZpbHRlcihhPT5hKSxlPU1hdGgubWluKC4uLm8ubWFwKGE9PmEubGVuZ3RoLWEudHJpbVN0YXJ0KCkubGVuZ3RoKSksaT1vLm1hcChhPT5hLnNsaWNlKGUpKS5tYXAoYT0+IiAiLnJlcGVhdCh0aGlzLmluZGVudCoyKSthKTtmb3IoY29uc3QgYSBvZiBpKXRoaXMuY29udGVudC5wdXNoKGEpfWNvbXBpbGUoKXtjb25zdCBuPUZ1bmN0aW9uLHI9dGhpcz8uYXJncyxlPVsuLi4odGhpcz8uY29udGVudD8/WyIiXSkubWFwKGk9PmAgICR7aX1gKV07cmV0dXJuIG5ldyBuKC4uLnIsZS5qb2luKGAKYCkpfX1jb25zdCB0dT17bWFqb3I6NCxtaW5vcjo0LHBhdGNoOjN9LEk9ZCgiJFpvZFR5cGUiLCh0LG4pPT57dmFyIHI7dD8/KHQ9e30pLHQuX3pvZC5kZWY9bix0Ll96b2QuYmFnPXQuX3pvZC5iYWd8fHt9LHQuX3pvZC52ZXJzaW9uPXR1O2NvbnN0IG89Wy4uLnQuX3pvZC5kZWYuY2hlY2tzPz9bXV07dC5fem9kLnRyYWl0cy5oYXMoIiRab2RDaGVjayIpJiZvLnVuc2hpZnQodCk7Zm9yKGNvbnN0IGUgb2Ygbylmb3IoY29uc3QgaSBvZiBlLl96b2Qub25hdHRhY2gpaSh0KTtpZihvLmxlbmd0aD09PTApKHI9dC5fem9kKS5kZWZlcnJlZD8/KHIuZGVmZXJyZWQ9W10pLHQuX3pvZC5kZWZlcnJlZD8ucHVzaCgoKT0+e3QuX3pvZC5ydW49dC5fem9kLnBhcnNlfSk7ZWxzZXtjb25zdCBlPShhLHMsYyk9PntsZXQgdT16ZShhKSxsO2Zvcihjb25zdCBnIG9mIHMpe2lmKGcuX3pvZC5kZWYud2hlbil7aWYoV3MoYSl8fCFnLl96b2QuZGVmLndoZW4oYSkpY29udGludWV9ZWxzZSBpZih1KWNvbnRpbnVlO2NvbnN0IHY9YS5pc3N1ZXMubGVuZ3RoLCQ9Zy5fem9kLmNoZWNrKGEpO2lmKCQgaW5zdGFuY2VvZiBQcm9taXNlJiZjPy5hc3luYz09PSExKXRocm93IG5ldyB4ZTtpZihsfHwkIGluc3RhbmNlb2YgUHJvbWlzZSlsPShsPz9Qcm9taXNlLnJlc29sdmUoKSkudGhlbihhc3luYygpPT57YXdhaXQgJCxhLmlzc3Vlcy5sZW5ndGghPT12JiYodXx8KHU9emUoYSx2KSkpfSk7ZWxzZXtpZihhLmlzc3Vlcy5sZW5ndGg9PT12KWNvbnRpbnVlO3V8fCh1PXplKGEsdikpfX1yZXR1cm4gbD9sLnRoZW4oKCk9PmEpOmF9LGk9KGEscyxjKT0+e2lmKHplKGEpKXJldHVybiBhLmFib3J0ZWQ9ITAsYTtjb25zdCB1PWUocyxvLGMpO2lmKHUgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihjLmFzeW5jPT09ITEpdGhyb3cgbmV3IHhlO3JldHVybiB1LnRoZW4obD0+dC5fem9kLnBhcnNlKGwsYykpfXJldHVybiB0Ll96b2QucGFyc2UodSxjKX07dC5fem9kLnJ1bj0oYSxzKT0+e2lmKHMuc2tpcENoZWNrcylyZXR1cm4gdC5fem9kLnBhcnNlKGEscyk7aWYocy5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXtjb25zdCB1PXQuX3pvZC5wYXJzZSh7dmFsdWU6YS52YWx1ZSxpc3N1ZXM6W119LHsuLi5zLHNraXBDaGVja3M6ITB9KTtyZXR1cm4gdSBpbnN0YW5jZW9mIFByb21pc2U/dS50aGVuKGw9PmkobCxhLHMpKTppKHUsYSxzKX1jb25zdCBjPXQuX3pvZC5wYXJzZShhLHMpO2lmKGMgaW5zdGFuY2VvZiBQcm9taXNlKXtpZihzLmFzeW5jPT09ITEpdGhyb3cgbmV3IHhlO3JldHVybiBjLnRoZW4odT0+ZSh1LG8scykpfXJldHVybiBlKGMsbyxzKX19VCh0LCJ+c3RhbmRhcmQiLCgpPT4oe3ZhbGlkYXRlOmU9Pnt0cnl7Y29uc3QgaT1kaSh0LGUpO3JldHVybiBpLnN1Y2Nlc3M/e3ZhbHVlOmkuZGF0YX06e2lzc3VlczppLmVycm9yPy5pc3N1ZXN9fWNhdGNoe3JldHVybiBlYyh0LGUpLnRoZW4oYT0+YS5zdWNjZXNzP3t2YWx1ZTphLmRhdGF9Ontpc3N1ZXM6YS5lcnJvcj8uaXNzdWVzfSl9fSx2ZW5kb3I6InpvZCIsdmVyc2lvbjoxfSkpfSksVHQ9ZCgiJFpvZFN0cmluZyIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj1bLi4udD8uX3pvZC5iYWc/LnBhdHRlcm5zPz9bXV0ucG9wKCk/P3pjKHQuX3pvZC5iYWcpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPVN0cmluZyhyLnZhbHVlKX1jYXRjaHt9cmV0dXJuIHR5cGVvZiByLnZhbHVlPT0ic3RyaW5nInx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHJ9fSksTD1kKCIkWm9kU3RyaW5nRm9ybWF0IiwodCxuKT0+e3h0LmluaXQodCxuKSxUdC5pbml0KHQsbil9KSxudT1kKCIkWm9kR1VJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49Y2MpLEwuaW5pdCh0LG4pfSkscnU9ZCgiJFpvZFVVSUQiLCh0LG4pPT57aWYobi52ZXJzaW9uKXtjb25zdCBvPXt2MToxLHYyOjIsdjM6Myx2NDo0LHY1OjUsdjY6Nix2Nzo3LHY4Ojh9W24udmVyc2lvbl07aWYobz09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVVVJRCB2ZXJzaW9uOiAiJHtuLnZlcnNpb259ImApO24ucGF0dGVybj8/KG4ucGF0dGVybj1xZShvKSl9ZWxzZSBuLnBhdHRlcm4/PyhuLnBhdHRlcm49cWUoKSk7TC5pbml0KHQsbil9KSxpdT1kKCIkWm9kRW1haWwiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXVjKSxMLmluaXQodCxuKX0pLG91PWQoIiRab2RVUkwiLCh0LG4pPT57TC5pbml0KHQsbiksdC5fem9kLmNoZWNrPXI9Pnt0cnl7Y29uc3Qgbz1yLnZhbHVlLnRyaW0oKTtpZighbi5ub3JtYWxpemUmJm4ucHJvdG9jb2w/LnNvdXJjZT09PXlpLnNvdXJjZSYmIS9eaHR0cHM/OlwvXC8vaS50ZXN0KG8pKXtyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJ1cmwiLG5vdGU6IkludmFsaWQgVVJMIGZvcm1hdCIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KTtyZXR1cm59Y29uc3QgZT1uZXcgVVJMKG8pO24uaG9zdG5hbWUmJihuLmhvc3RuYW1lLmxhc3RJbmRleD0wLG4uaG9zdG5hbWUudGVzdChlLmhvc3RuYW1lKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIGhvc3RuYW1lIixwYXR0ZXJuOm4uaG9zdG5hbWUuc291cmNlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSkpLG4ucHJvdG9jb2wmJihuLnByb3RvY29sLmxhc3RJbmRleD0wLG4ucHJvdG9jb2wudGVzdChlLnByb3RvY29sLmVuZHNXaXRoKCI6Iik/ZS5wcm90b2NvbC5zbGljZSgwLC0xKTplLnByb3RvY29sKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixub3RlOiJJbnZhbGlkIHByb3RvY29sIixwYXR0ZXJuOm4ucHJvdG9jb2wuc291cmNlLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSkpLG4ubm9ybWFsaXplP3IudmFsdWU9ZS5ocmVmOnIudmFsdWU9bztyZXR1cm59Y2F0Y2h7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoidXJsIixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX19KSxhdT1kKCIkWm9kRW1vamkiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWRjKCkpLEwuaW5pdCh0LG4pfSksc3U9ZCgiJFpvZE5hbm9JRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49YWMpLEwuaW5pdCh0LG4pfSksY3U9ZCgiJFpvZENVSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXRjKSxMLmluaXQodCxuKX0pLHV1PWQoIiRab2RDVUlEMiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49bmMpLEwuaW5pdCh0LG4pfSksbHU9ZCgiJFpvZFVMSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXJjKSxMLmluaXQodCxuKX0pLGR1PWQoIiRab2RYSUQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWljKSxMLmluaXQodCxuKX0pLG11PWQoIiRab2RLU1VJRCIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49b2MpLEwuaW5pdCh0LG4pfSkscHU9ZCgiJFpvZElTT0RhdGVUaW1lIiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1JYyhuKSksTC5pbml0KHQsbil9KSxmdT1kKCIkWm9kSVNPRGF0ZSIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49a2MpLEwuaW5pdCh0LG4pfSksZ3U9ZCgiJFpvZElTT1RpbWUiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXdjKG4pKSxMLmluaXQodCxuKX0pLHZ1PWQoIiRab2RJU09EdXJhdGlvbiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49c2MpLEwuaW5pdCh0LG4pfSksaHU9ZCgiJFpvZElQdjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPW1jKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0iaXB2NCJ9KSwkdT1kKCIkWm9kSVB2NiIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49cGMpLEwuaW5pdCh0LG4pLHQuX3pvZC5iYWcuZm9ybWF0PSJpcHY2Iix0Ll96b2QuY2hlY2s9cj0+e3RyeXtuZXcgVVJMKGBodHRwOi8vWyR7ci52YWx1ZX1dYCl9Y2F0Y2h7ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiaXB2NiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSksX3U9ZCgiJFpvZE1BQyIsKHQsbik9PntuLnBhdHRlcm4/PyhuLnBhdHRlcm49ZmMobi5kZWxpbWl0ZXIpKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmZvcm1hdD0ibWFjIn0pLGJ1PWQoIiRab2RDSURSdjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWdjKSxMLmluaXQodCxuKX0pLHl1PWQoIiRab2RDSURSdjYiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPXZjKSxMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e2NvbnN0IG89ci52YWx1ZS5zcGxpdCgiLyIpO3RyeXtpZihvLmxlbmd0aCE9PTIpdGhyb3cgbmV3IEVycm9yO2NvbnN0W2UsaV09bztpZighaSl0aHJvdyBuZXcgRXJyb3I7Y29uc3QgYT1OdW1iZXIoaSk7aWYoYCR7YX1gIT09aSl0aHJvdyBuZXcgRXJyb3I7aWYoYTwwfHxhPjEyOCl0aHJvdyBuZXcgRXJyb3I7bmV3IFVSTChgaHR0cDovL1ske2V9XWApfWNhdGNoe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6ImNpZHJ2NiIsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19fSk7ZnVuY3Rpb24gSWkodCl7aWYodD09PSIiKXJldHVybiEwO2lmKC9ccy8udGVzdCh0KXx8dC5sZW5ndGglNCE9PTApcmV0dXJuITE7dHJ5e3JldHVybiBhdG9iKHQpLCEwfWNhdGNoe3JldHVybiExfX1jb25zdCBrdT1kKCIkWm9kQmFzZTY0IiwodCxuKT0+e24ucGF0dGVybj8/KG4ucGF0dGVybj1oYyksTC5pbml0KHQsbiksdC5fem9kLmJhZy5jb250ZW50RW5jb2Rpbmc9ImJhc2U2NCIsdC5fem9kLmNoZWNrPXI9PntJaShyLnZhbHVlKXx8ci5pc3N1ZXMucHVzaCh7Y29kZToiaW52YWxpZF9mb3JtYXQiLGZvcm1hdDoiYmFzZTY0IixpbnB1dDpyLnZhbHVlLGluc3Q6dCxjb250aW51ZTohbi5hYm9ydH0pfX0pO2Z1bmN0aW9uIFN1KHQpe2lmKCFiaS50ZXN0KHQpKXJldHVybiExO2NvbnN0IG49dC5yZXBsYWNlKC9bLV9dL2csbz0+bz09PSItIj8iKyI6Ii8iKSxyPW4ucGFkRW5kKE1hdGguY2VpbChuLmxlbmd0aC80KSo0LCI9Iik7cmV0dXJuIElpKHIpfWNvbnN0IHd1PWQoIiRab2RCYXNlNjRVUkwiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWJpKSxMLmluaXQodCxuKSx0Ll96b2QuYmFnLmNvbnRlbnRFbmNvZGluZz0iYmFzZTY0dXJsIix0Ll96b2QuY2hlY2s9cj0+e1N1KHIudmFsdWUpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJiYXNlNjR1cmwiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksSXU9ZCgiJFpvZEUxNjQiLCh0LG4pPT57bi5wYXR0ZXJuPz8obi5wYXR0ZXJuPWJjKSxMLmluaXQodCxuKX0pO2Z1bmN0aW9uIHp1KHQsbj1udWxsKXt0cnl7Y29uc3Qgcj10LnNwbGl0KCIuIik7aWYoci5sZW5ndGghPT0zKXJldHVybiExO2NvbnN0W29dPXI7aWYoIW8pcmV0dXJuITE7Y29uc3QgZT1KU09OLnBhcnNlKGF0b2IobykpO3JldHVybiEoInR5cCJpbiBlJiZlPy50eXAhPT0iSldUInx8IWUuYWxnfHxuJiYoISgiYWxnImluIGUpfHxlLmFsZyE9PW4pKX1jYXRjaHtyZXR1cm4hMX19Y29uc3QgeHU9ZCgiJFpvZEpXVCIsKHQsbik9PntMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e3p1KHIudmFsdWUsbi5hbGcpfHxyLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0OiJqd3QiLGlucHV0OnIudmFsdWUsaW5zdDp0LGNvbnRpbnVlOiFuLmFib3J0fSl9fSksVHU9ZCgiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsKHQsbik9PntMLmluaXQodCxuKSx0Ll96b2QuY2hlY2s9cj0+e24uZm4oci52YWx1ZSl8fHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfZm9ybWF0Iixmb3JtYXQ6bi5mb3JtYXQsaW5wdXQ6ci52YWx1ZSxpbnN0OnQsY29udGludWU6IW4uYWJvcnR9KX19KSx6aT1kKCIkWm9kTnVtYmVyIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPXQuX3pvZC5iYWcucGF0dGVybj8/a2ksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9TnVtYmVyKHIudmFsdWUpfWNhdGNoe31jb25zdCBlPXIudmFsdWU7aWYodHlwZW9mIGU9PSJudW1iZXIiJiYhTnVtYmVyLmlzTmFOKGUpJiZOdW1iZXIuaXNGaW5pdGUoZSkpcmV0dXJuIHI7Y29uc3QgaT10eXBlb2YgZT09Im51bWJlciI/TnVtYmVyLmlzTmFOKGUpPyJOYU4iOk51bWJlci5pc0Zpbml0ZShlKT92b2lkIDA6IkluZmluaXR5Ijp2b2lkIDA7cmV0dXJuIHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJudW1iZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnQsLi4uaT97cmVjZWl2ZWQ6aX06e319KSxyfX0pLGp1PWQoIiRab2ROdW1iZXJGb3JtYXQiLCh0LG4pPT57UmMuaW5pdCh0LG4pLHppLmluaXQodCxuKX0pLHhpPWQoIiRab2RCb29sZWFuIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXR0ZXJuPWpjLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG4uY29lcmNlKXRyeXtyLnZhbHVlPSEhci52YWx1ZX1jYXRjaHt9Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT09ImJvb2xlYW4ifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoiYm9vbGVhbiIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksVGk9ZCgiJFpvZEJpZ0ludCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGF0dGVybj14Yyx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihuLmNvZXJjZSl0cnl7ci52YWx1ZT1CaWdJbnQoci52YWx1ZSl9Y2F0Y2h7fXJldHVybiB0eXBlb2Ygci52YWx1ZT09ImJpZ2ludCJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJiaWdpbnQiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyfX0pLFV1PWQoIiRab2RCaWdJbnRGb3JtYXQiLCh0LG4pPT57Q2MuaW5pdCh0LG4pLFRpLmluaXQodCxuKX0pLFB1PWQoIiRab2RTeW1ib2wiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiB0eXBlb2YgZT09InN5bWJvbCJ8fHIuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJzeW1ib2wiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLE91PWQoIiRab2RVbmRlZmluZWQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49UGMsdC5fem9kLnZhbHVlcz1uZXcgU2V0KFt2b2lkIDBdKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7cmV0dXJuIHR5cGVvZiBlPiJ1Inx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InVuZGVmaW5lZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksRHU9ZCgiJFpvZE51bGwiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhdHRlcm49VWMsdC5fem9kLnZhbHVlcz1uZXcgU2V0KFtudWxsXSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiBlPT09bnVsbHx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im51bGwiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLE51PWQoIiRab2RBbnkiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPXI9PnJ9KSxFdT1kKCIkWm9kVW5rbm93biIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9cj0+cn0pLFp1PWQoIiRab2ROZXZlciIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PihyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoibmV2ZXIiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ci52YWx1ZSxpbnN0OnR9KSxyKX0pLFJ1PWQoIiRab2RWb2lkIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtyZXR1cm4gdHlwZW9mIGU+InUifHxyLmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoidm9pZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHJ9fSksQ3U9ZCgiJFpvZERhdGUiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5jb2VyY2UpdHJ5e3IudmFsdWU9bmV3IERhdGUoci52YWx1ZSl9Y2F0Y2h7fWNvbnN0IGU9ci52YWx1ZSxpPWUgaW5zdGFuY2VvZiBEYXRlO3JldHVybiBpJiYhTnVtYmVyLmlzTmFOKGUuZ2V0VGltZSgpKXx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImRhdGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSwuLi5pP3tyZWNlaXZlZDoiSW52YWxpZCBEYXRlIn06e30saW5zdDp0fSkscn19KTtmdW5jdGlvbiBpcyh0LG4scil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnVlKHIsdC5pc3N1ZXMpKSxuLnZhbHVlW3JdPXQudmFsdWV9Y29uc3QgQXU9ZCgiJFpvZEFycmF5IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+e2NvbnN0IGU9ci52YWx1ZTtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImFycmF5Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OmUsaW5zdDp0fSkscjtyLnZhbHVlPUFycmF5KGUubGVuZ3RoKTtjb25zdCBpPVtdO2ZvcihsZXQgYT0wO2E8ZS5sZW5ndGg7YSsrKXtjb25zdCBzPWVbYV0sYz1uLmVsZW1lbnQuX3pvZC5ydW4oe3ZhbHVlOnMsaXNzdWVzOltdfSxvKTtjIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2goYy50aGVuKHU9PmlzKHUscixhKSkpOmlzKGMscixhKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBPbih0LG4scixvLGUsaSl7Y29uc3QgYT1yIGluIG87aWYodC5pc3N1ZXMubGVuZ3RoKXtpZihlJiZpJiYhYSlyZXR1cm47bi5pc3N1ZXMucHVzaCguLi51ZShyLHQuaXNzdWVzKSl9aWYoIWEmJiFlKXt0Lmlzc3Vlcy5sZW5ndGh8fG4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDp2b2lkIDAscGF0aDpbcl19KTtyZXR1cm59dC52YWx1ZT09PXZvaWQgMD9hJiYobi52YWx1ZVtyXT12b2lkIDApOm4udmFsdWVbcl09dC52YWx1ZX1mdW5jdGlvbiBMdSh0KXtjb25zdCBuPU9iamVjdC5rZXlzKHQuc2hhcGUpO2Zvcihjb25zdCBvIG9mIG4paWYoIXQuc2hhcGU/LltvXT8uX3pvZD8udHJhaXRzPy5oYXMoIiRab2RUeXBlIikpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVsZW1lbnQgYXQga2V5ICIke299IjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7Y29uc3Qgcj1Bcyh0LnNoYXBlKTtyZXR1cm57Li4udCxrZXlzOm4sa2V5U2V0Om5ldyBTZXQobiksbnVtS2V5czpuLmxlbmd0aCxvcHRpb25hbEtleXM6bmV3IFNldChyKX19ZnVuY3Rpb24gTXUodCxuLHIsbyxlLGkpe2NvbnN0IGE9W10scz1lLmtleVNldCxjPWUuY2F0Y2hhbGwuX3pvZCx1PWMuZGVmLnR5cGUsbD1jLm9wdGluPT09Im9wdGlvbmFsIixnPWMub3B0b3V0PT09Im9wdGlvbmFsIjtmb3IoY29uc3QgdiBpbiBuKXtpZih2PT09Il9fcHJvdG9fXyJ8fHMuaGFzKHYpKWNvbnRpbnVlO2lmKHU9PT0ibmV2ZXIiKXthLnB1c2godik7Y29udGludWV9Y29uc3QgJD1jLnJ1bih7dmFsdWU6blt2XSxpc3N1ZXM6W119LG8pOyQgaW5zdGFuY2VvZiBQcm9taXNlP3QucHVzaCgkLnRoZW4oeT0+T24oeSxyLHYsbixsLGcpKSk6T24oJCxyLHYsbixsLGcpfXJldHVybiBhLmxlbmd0aCYmci5pc3N1ZXMucHVzaCh7Y29kZToidW5yZWNvZ25pemVkX2tleXMiLGtleXM6YSxpbnB1dDpuLGluc3Q6aX0pLHQubGVuZ3RoP1Byb21pc2UuYWxsKHQpLnRoZW4oKCk9PnIpOnJ9Y29uc3QgcXU9ZCgiJFpvZE9iamVjdCIsKHQsbik9PntpZihJLmluaXQodCxuKSwhT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLCJzaGFwZSIpPy5nZXQpe2NvbnN0IHM9bi5zaGFwZTtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwic2hhcGUiLHtnZXQ6KCk9Pntjb25zdCBjPXsuLi5zfTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sInNoYXBlIix7dmFsdWU6Y30pLGN9fSl9Y29uc3Qgbz1idCgoKT0+THUobikpO1QodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+e2NvbnN0IHM9bi5zaGFwZSxjPXt9O2Zvcihjb25zdCB1IGluIHMpe2NvbnN0IGw9c1t1XS5fem9kO2lmKGwudmFsdWVzKXtjW3VdPz8oY1t1XT1uZXcgU2V0KTtmb3IoY29uc3QgZyBvZiBsLnZhbHVlcyljW3VdLmFkZChnKX19cmV0dXJuIGN9KTtjb25zdCBlPUxlLGk9bi5jYXRjaGFsbDtsZXQgYTt0Ll96b2QucGFyc2U9KHMsYyk9PnthPz8oYT1vLnZhbHVlKTtjb25zdCB1PXMudmFsdWU7aWYoIWUodSkpcmV0dXJuIHMuaXNzdWVzLnB1c2goe2V4cGVjdGVkOiJvYmplY3QiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6dSxpbnN0OnR9KSxzO3MudmFsdWU9e307Y29uc3QgbD1bXSxnPWEuc2hhcGU7Zm9yKGNvbnN0IHYgb2YgYS5rZXlzKXtjb25zdCAkPWdbdl0seT0kLl96b2Qub3B0aW49PT0ib3B0aW9uYWwiLEY9JC5fem9kLm9wdG91dD09PSJvcHRpb25hbCIsUj0kLl96b2QucnVuKHt2YWx1ZTp1W3ZdLGlzc3VlczpbXX0sYyk7UiBpbnN0YW5jZW9mIFByb21pc2U/bC5wdXNoKFIudGhlbihSZT0+T24oUmUscyx2LHUseSxGKSkpOk9uKFIscyx2LHUseSxGKX1yZXR1cm4gaT9NdShsLHUscyxjLG8udmFsdWUsdCk6bC5sZW5ndGg/UHJvbWlzZS5hbGwobCkudGhlbigoKT0+cyk6c319KSxGdT1kKCIkWm9kT2JqZWN0SklUIiwodCxuKT0+e3F1LmluaXQodCxuKTtjb25zdCByPXQuX3pvZC5wYXJzZSxvPWJ0KCgpPT5MdShuKSksZT12PT57Y29uc3QgJD1uZXcgZXUoWyJzaGFwZSIsInBheWxvYWQiLCJjdHgiXSkseT1vLnZhbHVlLEY9Sj0+e2NvbnN0IEM9WHIoSik7cmV0dXJuYHNoYXBlWyR7Q31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7Q31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgfTskLndyaXRlKCJjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7Iik7Y29uc3QgUj1PYmplY3QuY3JlYXRlKG51bGwpO2xldCBSZT0wO2Zvcihjb25zdCBKIG9mIHkua2V5cylSW0pdPWBrZXlfJHtSZSsrfWA7JC53cml0ZSgiY29uc3QgbmV3UmVzdWx0ID0ge307Iik7Zm9yKGNvbnN0IEogb2YgeS5rZXlzKXtjb25zdCBDPVJbSl0sQj1YcihKKSxZYT12W0pdLFFhPVlhPy5fem9kPy5vcHRpbj09PSJvcHRpb25hbCIsd209WWE/Ll96b2Q/Lm9wdG91dD09PSJvcHRpb25hbCI7JC53cml0ZShgY29uc3QgJHtDfSA9ICR7RihKKX07YCksUWEmJndtPyQud3JpdGUoYAogICAgICAgIGlmICgke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIGlmICgke0J9IGluIGlucHV0KSB7CiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7Q30uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgICAuLi5pc3MsCiAgICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtCfSwgLi4uaXNzLnBhdGhdIDogWyR7Qn1dCiAgICAgICAgICAgIH0pKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgke0N9LnZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGlmICgke0J9IGluIGlucHV0KSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0J9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV3UmVzdWx0WyR7Qn1dID0gJHtDfS52YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIGApOlFhPyQud3JpdGUoYAogICAgICAgIGlmICgke0N9Lmlzc3Vlcy5sZW5ndGgpIHsKICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gcGF5bG9hZC5pc3N1ZXMuY29uY2F0KCR7Q30uaXNzdWVzLm1hcChpc3MgPT4gKHsKICAgICAgICAgICAgLi4uaXNzLAogICAgICAgICAgICBwYXRoOiBpc3MucGF0aCA/IFske0J9LCAuLi5pc3MucGF0aF0gOiBbJHtCfV0KICAgICAgICAgIH0pKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICgke0N9LnZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgIGlmICgke0J9IGluIGlucHV0KSB7CiAgICAgICAgICAgIG5ld1Jlc3VsdFske0J9XSA9IHVuZGVmaW5lZDsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgbmV3UmVzdWx0WyR7Qn1dID0gJHtDfS52YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgIGApOiQud3JpdGUoYAogICAgICAgIGNvbnN0ICR7Q31fcHJlc2VudCA9ICR7Qn0gaW4gaW5wdXQ7CiAgICAgICAgaWYgKCR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoJHtDfS5pc3N1ZXMubWFwKGlzcyA9PiAoewogICAgICAgICAgICAuLi5pc3MsCiAgICAgICAgICAgIHBhdGg6IGlzcy5wYXRoID8gWyR7Qn0sIC4uLmlzcy5wYXRoXSA6IFske0J9XQogICAgICAgICAgfSkpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEke0N9X3ByZXNlbnQgJiYgISR7Q30uaXNzdWVzLmxlbmd0aCkgewogICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7CiAgICAgICAgICAgIGNvZGU6ICJpbnZhbGlkX3R5cGUiLAogICAgICAgICAgICBleHBlY3RlZDogIm5vbm9wdGlvbmFsIiwKICAgICAgICAgICAgaW5wdXQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgcGF0aDogWyR7Qn1dCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGlmICgke0N9X3ByZXNlbnQpIHsKICAgICAgICAgIGlmICgke0N9LnZhbHVlID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7Qn1dID0gdW5kZWZpbmVkOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbmV3UmVzdWx0WyR7Qn1dID0gJHtDfS52YWx1ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICBgKX0kLndyaXRlKCJwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0OyIpLCQud3JpdGUoInJldHVybiBwYXlsb2FkOyIpO2NvbnN0IEs9JC5jb21waWxlKCk7cmV0dXJuKEosQyk9PksodixKLEMpfTtsZXQgaTtjb25zdCBhPUxlLHM9IWd0LmppdGxlc3MsdT1zJiZScy52YWx1ZSxsPW4uY2F0Y2hhbGw7bGV0IGc7dC5fem9kLnBhcnNlPSh2LCQpPT57Zz8/KGc9by52YWx1ZSk7Y29uc3QgeT12LnZhbHVlO3JldHVybiBhKHkpP3MmJnUmJiQ/LmFzeW5jPT09ITEmJiQuaml0bGVzcyE9PSEwPyhpfHwoaT1lKG4uc2hhcGUpKSx2PWkodiwkKSxsP011KFtdLHksdiwkLGcsdCk6dik6cih2LCQpOih2Lmlzc3Vlcy5wdXNoKHtleHBlY3RlZDoib2JqZWN0Iixjb2RlOiJpbnZhbGlkX3R5cGUiLGlucHV0OnksaW5zdDp0fSksdil9fSk7ZnVuY3Rpb24gb3ModCxuLHIsbyl7Zm9yKGNvbnN0IGkgb2YgdClpZihpLmlzc3Vlcy5sZW5ndGg9PT0wKXJldHVybiBuLnZhbHVlPWkudmFsdWUsbjtjb25zdCBlPXQuZmlsdGVyKGk9PiF6ZShpKSk7cmV0dXJuIGUubGVuZ3RoPT09MT8obi52YWx1ZT1lWzBdLnZhbHVlLGVbMF0pOihuLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixpbnB1dDpuLnZhbHVlLGluc3Q6cixlcnJvcnM6dC5tYXAoaT0+aS5pc3N1ZXMubWFwKGE9Pm9lKGEsbyxWKCkpKSl9KSxuKX1jb25zdCBWbj1kKCIkWm9kVW5pb24iLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5vcHRpb25zLnNvbWUobz0+by5fem9kLm9wdGluPT09Im9wdGlvbmFsIik/Im9wdGlvbmFsIjp2b2lkIDApLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLm9wdGlvbnMuc29tZShvPT5vLl96b2Qub3B0b3V0PT09Im9wdGlvbmFsIik/Im9wdGlvbmFsIjp2b2lkIDApLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT57aWYobi5vcHRpb25zLmV2ZXJ5KG89Pm8uX3pvZC52YWx1ZXMpKXJldHVybiBuZXcgU2V0KG4ub3B0aW9ucy5mbGF0TWFwKG89PkFycmF5LmZyb20oby5fem9kLnZhbHVlcykpKX0pLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2lmKG4ub3B0aW9ucy5ldmVyeShvPT5vLl96b2QucGF0dGVybikpe2NvbnN0IG89bi5vcHRpb25zLm1hcChlPT5lLl96b2QucGF0dGVybik7cmV0dXJuIG5ldyBSZWdFeHAoYF4oJHtvLm1hcChlPT5BbihlLnNvdXJjZSkpLmpvaW4oInwiKX0pJGApfX0pO2NvbnN0IHI9bi5vcHRpb25zLmxlbmd0aD09PTE/bi5vcHRpb25zWzBdLl96b2QucnVuOm51bGw7dC5fem9kLnBhcnNlPShvLGUpPT57aWYocilyZXR1cm4gcihvLGUpO2xldCBpPSExO2NvbnN0IGE9W107Zm9yKGNvbnN0IHMgb2Ygbi5vcHRpb25zKXtjb25zdCBjPXMuX3pvZC5ydW4oe3ZhbHVlOm8udmFsdWUsaXNzdWVzOltdfSxlKTtpZihjIGluc3RhbmNlb2YgUHJvbWlzZSlhLnB1c2goYyksaT0hMDtlbHNle2lmKGMuaXNzdWVzLmxlbmd0aD09PTApcmV0dXJuIGM7YS5wdXNoKGMpfX1yZXR1cm4gaT9Qcm9taXNlLmFsbChhKS50aGVuKHM9Pm9zKHMsbyx0LGUpKTpvcyhhLG8sdCxlKX19KTtmdW5jdGlvbiBhcyh0LG4scixvKXtjb25zdCBlPXQuZmlsdGVyKGk9PmkuaXNzdWVzLmxlbmd0aD09PTApO3JldHVybiBlLmxlbmd0aD09PTE/KG4udmFsdWU9ZVswXS52YWx1ZSxuKTooZS5sZW5ndGg9PT0wP24uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0Om4udmFsdWUsaW5zdDpyLGVycm9yczp0Lm1hcChpPT5pLmlzc3Vlcy5tYXAoYT0+b2UoYSxvLFYoKSkpKX0pOm4uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdW5pb24iLGlucHV0Om4udmFsdWUsaW5zdDpyLGVycm9yczpbXSxpbmNsdXNpdmU6ITF9KSxuKX1jb25zdCBKdT1kKCIkWm9kWG9yIiwodCxuKT0+e1ZuLmluaXQodCxuKSxuLmluY2x1c2l2ZT0hMTtjb25zdCByPW4ub3B0aW9ucy5sZW5ndGg9PT0xP24ub3B0aW9uc1swXS5fem9kLnJ1bjpudWxsO3QuX3pvZC5wYXJzZT0obyxlKT0+e2lmKHIpcmV0dXJuIHIobyxlKTtsZXQgaT0hMTtjb25zdCBhPVtdO2Zvcihjb25zdCBzIG9mIG4ub3B0aW9ucyl7Y29uc3QgYz1zLl96b2QucnVuKHt2YWx1ZTpvLnZhbHVlLGlzc3VlczpbXX0sZSk7YyBpbnN0YW5jZW9mIFByb21pc2U/KGEucHVzaChjKSxpPSEwKTphLnB1c2goYyl9cmV0dXJuIGk/UHJvbWlzZS5hbGwoYSkudGhlbihzPT5hcyhzLG8sdCxlKSk6YXMoYSxvLHQsZSl9fSksSHU9ZCgiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKHQsbik9PntuLmluY2x1c2l2ZT0hMSxWbi5pbml0KHQsbik7Y29uc3Qgcj10Ll96b2QucGFyc2U7VCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT57Y29uc3QgZT17fTtmb3IoY29uc3QgaSBvZiBuLm9wdGlvbnMpe2NvbnN0IGE9aS5fem9kLnByb3BWYWx1ZXM7aWYoIWF8fE9iamVjdC5rZXlzKGEpLmxlbmd0aD09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke24ub3B0aW9ucy5pbmRleE9mKGkpfSJgKTtmb3IoY29uc3RbcyxjXW9mIE9iamVjdC5lbnRyaWVzKGEpKXtlW3NdfHwoZVtzXT1uZXcgU2V0KTtmb3IoY29uc3QgdSBvZiBjKWVbc10uYWRkKHUpfX1yZXR1cm4gZX0pO2NvbnN0IG89YnQoKCk9Pntjb25zdCBlPW4ub3B0aW9ucyxpPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgZSl7Y29uc3Qgcz1hLl96b2QucHJvcFZhbHVlcz8uW24uZGlzY3JpbWluYXRvcl07aWYoIXN8fHMuc2l6ZT09PTApdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4ICIke24ub3B0aW9ucy5pbmRleE9mKGEpfSJgKTtmb3IoY29uc3QgYyBvZiBzKXtpZihpLmhhcyhjKSl0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZSBkaXNjcmltaW5hdG9yIHZhbHVlICIke1N0cmluZyhjKX0iYCk7aS5zZXQoYyxhKX19cmV0dXJuIGl9KTt0Ll96b2QucGFyc2U9KGUsaSk9Pntjb25zdCBhPWUudmFsdWU7aWYoIUxlKGEpKXJldHVybiBlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOiJvYmplY3QiLGlucHV0OmEsaW5zdDp0fSksZTtjb25zdCBzPW8udmFsdWUuZ2V0KGE/LltuLmRpc2NyaW1pbmF0b3JdKTtyZXR1cm4gcz9zLl96b2QucnVuKGUsaSk6bi51bmlvbkZhbGxiYWNrfHxpLmRpcmVjdGlvbj09PSJiYWNrd2FyZCI/cihlLGkpOihlLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3VuaW9uIixlcnJvcnM6W10sbm90ZToiTm8gbWF0Y2hpbmcgZGlzY3JpbWluYXRvciIsZGlzY3JpbWluYXRvcjpuLmRpc2NyaW1pbmF0b3Isb3B0aW9uczpBcnJheS5mcm9tKG8udmFsdWUua2V5cygpKSxpbnB1dDphLHBhdGg6W24uZGlzY3JpbWluYXRvcl0saW5zdDp0fSksZSl9fSksVnU9ZCgiJFpvZEludGVyc2VjdGlvbiIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWUsaT1uLmxlZnQuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxvKSxhPW4ucmlnaHQuX3pvZC5ydW4oe3ZhbHVlOmUsaXNzdWVzOltdfSxvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2V8fGEgaW5zdGFuY2VvZiBQcm9taXNlP1Byb21pc2UuYWxsKFtpLGFdKS50aGVuKChbYyx1XSk9PnNzKHIsYyx1KSk6c3MocixpLGEpfX0pO2Z1bmN0aW9uIGVpKHQsbil7aWYodD09PW4pcmV0dXJue3ZhbGlkOiEwLGRhdGE6dH07aWYodCBpbnN0YW5jZW9mIERhdGUmJm4gaW5zdGFuY2VvZiBEYXRlJiYrdD09K24pcmV0dXJue3ZhbGlkOiEwLGRhdGE6dH07aWYoVGUodCkmJlRlKG4pKXtjb25zdCByPU9iamVjdC5rZXlzKG4pLG89T2JqZWN0LmtleXModCkuZmlsdGVyKGk9PnIuaW5kZXhPZihpKSE9PS0xKSxlPXsuLi50LC4uLm59O2Zvcihjb25zdCBpIG9mIG8pe2NvbnN0IGE9ZWkodFtpXSxuW2ldKTtpZighYS52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W2ksLi4uYS5tZXJnZUVycm9yUGF0aF19O2VbaV09YS5kYXRhfXJldHVybnt2YWxpZDohMCxkYXRhOmV9fWlmKEFycmF5LmlzQXJyYXkodCkmJkFycmF5LmlzQXJyYXkobikpe2lmKHQubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJue3ZhbGlkOiExLG1lcmdlRXJyb3JQYXRoOltdfTtjb25zdCByPVtdO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXtjb25zdCBlPXRbb10saT1uW29dLGE9ZWkoZSxpKTtpZighYS52YWxpZClyZXR1cm57dmFsaWQ6ITEsbWVyZ2VFcnJvclBhdGg6W28sLi4uYS5tZXJnZUVycm9yUGF0aF19O3IucHVzaChhLmRhdGEpfXJldHVybnt2YWxpZDohMCxkYXRhOnJ9fXJldHVybnt2YWxpZDohMSxtZXJnZUVycm9yUGF0aDpbXX19ZnVuY3Rpb24gc3ModCxuLHIpe2NvbnN0IG89bmV3IE1hcDtsZXQgZTtmb3IoY29uc3QgcyBvZiBuLmlzc3VlcylpZihzLmNvZGU9PT0idW5yZWNvZ25pemVkX2tleXMiKXtlPz8oZT1zKTtmb3IoY29uc3QgYyBvZiBzLmtleXMpby5oYXMoYyl8fG8uc2V0KGMse30pLG8uZ2V0KGMpLmw9ITB9ZWxzZSB0Lmlzc3Vlcy5wdXNoKHMpO2Zvcihjb25zdCBzIG9mIHIuaXNzdWVzKWlmKHMuY29kZT09PSJ1bnJlY29nbml6ZWRfa2V5cyIpZm9yKGNvbnN0IGMgb2Ygcy5rZXlzKW8uaGFzKGMpfHxvLnNldChjLHt9KSxvLmdldChjKS5yPSEwO2Vsc2UgdC5pc3N1ZXMucHVzaChzKTtjb25zdCBpPVsuLi5vXS5maWx0ZXIoKFssc10pPT5zLmwmJnMucikubWFwKChbc10pPT5zKTtpZihpLmxlbmd0aCYmZSYmdC5pc3N1ZXMucHVzaCh7Li4uZSxrZXlzOml9KSx6ZSh0KSlyZXR1cm4gdDtjb25zdCBhPWVpKG4udmFsdWUsci52YWx1ZSk7aWYoIWEudmFsaWQpdGhyb3cgbmV3IEVycm9yKGBVbm1lcmdhYmxlIGludGVyc2VjdGlvbi4gRXJyb3IgcGF0aDogJHtKU09OLnN0cmluZ2lmeShhLm1lcmdlRXJyb3JQYXRoKX1gKTtyZXR1cm4gdC52YWx1ZT1hLmRhdGEsdH1jb25zdCBqaT1kKCIkWm9kVHVwbGUiLCh0LG4pPT57SS5pbml0KHQsbik7Y29uc3Qgcj1uLml0ZW1zO3QuX3pvZC5wYXJzZT0obyxlKT0+e2NvbnN0IGk9by52YWx1ZTtpZighQXJyYXkuaXNBcnJheShpKSlyZXR1cm4gby5pc3N1ZXMucHVzaCh7aW5wdXQ6aSxpbnN0OnQsZXhwZWN0ZWQ6InR1cGxlIixjb2RlOiJpbnZhbGlkX3R5cGUifSksbztvLnZhbHVlPVtdO2NvbnN0IGE9W10scz1jcyhyLCJvcHRpbiIpLGM9Y3Mociwib3B0b3V0Iik7aWYoIW4ucmVzdCl7aWYoaS5sZW5ndGg8cylyZXR1cm4gby5pc3N1ZXMucHVzaCh7Y29kZToidG9vX3NtYWxsIixtaW5pbXVtOnMsaW5jbHVzaXZlOiEwLGlucHV0OmksaW5zdDp0LG9yaWdpbjoiYXJyYXkifSksbztpLmxlbmd0aD5yLmxlbmd0aCYmby5pc3N1ZXMucHVzaCh7Y29kZToidG9vX2JpZyIsbWF4aW11bTpyLmxlbmd0aCxpbmNsdXNpdmU6ITAsaW5wdXQ6aSxpbnN0OnQsb3JpZ2luOiJhcnJheSJ9KX1jb25zdCB1PW5ldyBBcnJheShyLmxlbmd0aCk7Zm9yKGxldCBsPTA7bDxyLmxlbmd0aDtsKyspe2NvbnN0IGc9cltsXS5fem9kLnJ1bih7dmFsdWU6aVtsXSxpc3N1ZXM6W119LGUpO2cgaW5zdGFuY2VvZiBQcm9taXNlP2EucHVzaChnLnRoZW4odj0+e3VbbF09dn0pKTp1W2xdPWd9aWYobi5yZXN0KXtsZXQgbD1yLmxlbmd0aC0xO2NvbnN0IGc9aS5zbGljZShyLmxlbmd0aCk7Zm9yKGNvbnN0IHYgb2YgZyl7bCsrO2NvbnN0ICQ9bi5yZXN0Ll96b2QucnVuKHt2YWx1ZTp2LGlzc3VlczpbXX0sZSk7JCBpbnN0YW5jZW9mIFByb21pc2U/YS5wdXNoKCQudGhlbih5PT51cyh5LG8sbCkpKTp1cygkLG8sbCl9fXJldHVybiBhLmxlbmd0aD9Qcm9taXNlLmFsbChhKS50aGVuKCgpPT5scyh1LG8scixpLGMpKTpscyh1LG8scixpLGMpfX0pO2Z1bmN0aW9uIGNzKHQsbil7Zm9yKGxldCByPXQubGVuZ3RoLTE7cj49MDtyLS0paWYodFtyXS5fem9kW25dIT09Im9wdGlvbmFsIilyZXR1cm4gcisxO3JldHVybiAwfWZ1bmN0aW9uIHVzKHQsbixyKXt0Lmlzc3Vlcy5sZW5ndGgmJm4uaXNzdWVzLnB1c2goLi4udWUocix0Lmlzc3VlcykpLG4udmFsdWVbcl09dC52YWx1ZX1mdW5jdGlvbiBscyh0LG4scixvLGUpe2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKXtjb25zdCBhPXRbaV0scz1pPG8ubGVuZ3RoO2lmKGEuaXNzdWVzLmxlbmd0aCl7aWYoIXMmJmk+PWUpe24udmFsdWUubGVuZ3RoPWk7YnJlYWt9bi5pc3N1ZXMucHVzaCguLi51ZShpLGEuaXNzdWVzKSl9bi52YWx1ZVtpXT1hLnZhbHVlfWZvcihsZXQgaT1uLnZhbHVlLmxlbmd0aC0xO2k+PW8ubGVuZ3RoJiYocltpXS5fem9kLm9wdG91dD09PSJvcHRpb25hbCImJm4udmFsdWVbaV09PT12b2lkIDApO2ktLSluLnZhbHVlLmxlbmd0aD1pO3JldHVybiBufWNvbnN0IEt1PWQoIiRab2RSZWNvcmQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCFUZShlKSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6InJlY29yZCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7Y29uc3QgaT1bXSxhPW4ua2V5VHlwZS5fem9kLnZhbHVlcztpZihhKXtyLnZhbHVlPXt9O2NvbnN0IHM9bmV3IFNldDtmb3IoY29uc3QgdSBvZiBhKWlmKHR5cGVvZiB1PT0ic3RyaW5nInx8dHlwZW9mIHU9PSJudW1iZXIifHx0eXBlb2YgdT09InN5bWJvbCIpe3MuYWRkKHR5cGVvZiB1PT0ibnVtYmVyIj91LnRvU3RyaW5nKCk6dSk7Y29uc3QgbD1uLmtleVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnUsaXNzdWVzOltdfSxvKTtpZihsIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtpZihsLmlzc3Vlcy5sZW5ndGgpe3IuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46InJlY29yZCIsaXNzdWVzOmwuaXNzdWVzLm1hcCgkPT5vZSgkLG8sVigpKSksaW5wdXQ6dSxwYXRoOlt1XSxpbnN0OnR9KTtjb250aW51ZX1jb25zdCBnPWwudmFsdWUsdj1uLnZhbHVlVHlwZS5fem9kLnJ1bih7dmFsdWU6ZVt1XSxpc3N1ZXM6W119LG8pO3YgaW5zdGFuY2VvZiBQcm9taXNlP2kucHVzaCh2LnRoZW4oJD0+eyQuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi51ZSh1LCQuaXNzdWVzKSksci52YWx1ZVtnXT0kLnZhbHVlfSkpOih2Lmlzc3Vlcy5sZW5ndGgmJnIuaXNzdWVzLnB1c2goLi4udWUodSx2Lmlzc3VlcykpLHIudmFsdWVbZ109di52YWx1ZSl9bGV0IGM7Zm9yKGNvbnN0IHUgaW4gZSlzLmhhcyh1KXx8KGM9Yz8/W10sYy5wdXNoKHUpKTtjJiZjLmxlbmd0aD4wJiZyLmlzc3Vlcy5wdXNoKHtjb2RlOiJ1bnJlY29nbml6ZWRfa2V5cyIsaW5wdXQ6ZSxpbnN0OnQsa2V5czpjfSl9ZWxzZXtyLnZhbHVlPXt9O2Zvcihjb25zdCBzIG9mIFJlZmxlY3Qub3duS2V5cyhlKSl7aWYocz09PSJfX3Byb3RvX18ifHwhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUscykpY29udGludWU7bGV0IGM9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpzLGlzc3VlczpbXX0sbyk7aWYoYyBpbnN0YW5jZW9mIFByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5Iik7aWYodHlwZW9mIHM9PSJzdHJpbmciJiZraS50ZXN0KHMpJiZjLmlzc3Vlcy5sZW5ndGgpe2NvbnN0IGc9bi5rZXlUeXBlLl96b2QucnVuKHt2YWx1ZTpOdW1iZXIocyksaXNzdWVzOltdfSxvKTtpZihnIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBuZXcgRXJyb3IoIkFzeW5jIHNjaGVtYXMgbm90IHN1cHBvcnRlZCBpbiBvYmplY3Qga2V5cyBjdXJyZW50bHkiKTtnLmlzc3Vlcy5sZW5ndGg9PT0wJiYoYz1nKX1pZihjLmlzc3Vlcy5sZW5ndGgpe24ubW9kZT09PSJsb29zZSI/ci52YWx1ZVtzXT1lW3NdOnIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46InJlY29yZCIsaXNzdWVzOmMuaXNzdWVzLm1hcChnPT5vZShnLG8sVigpKSksaW5wdXQ6cyxwYXRoOltzXSxpbnN0OnR9KTtjb250aW51ZX1jb25zdCBsPW4udmFsdWVUeXBlLl96b2QucnVuKHt2YWx1ZTplW3NdLGlzc3VlczpbXX0sbyk7bCBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKGwudGhlbihnPT57Zy5pc3N1ZXMubGVuZ3RoJiZyLmlzc3Vlcy5wdXNoKC4uLnVlKHMsZy5pc3N1ZXMpKSxyLnZhbHVlW2MudmFsdWVdPWcudmFsdWV9KSk6KGwuaXNzdWVzLmxlbmd0aCYmci5pc3N1ZXMucHVzaCguLi51ZShzLGwuaXNzdWVzKSksci52YWx1ZVtjLnZhbHVlXT1sLnZhbHVlKX19cmV0dXJuIGkubGVuZ3RoP1Byb21pc2UuYWxsKGkpLnRoZW4oKCk9PnIpOnJ9fSksQnU9ZCgiJFpvZE1hcCIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9Pntjb25zdCBlPXIudmFsdWU7aWYoIShlIGluc3RhbmNlb2YgTWFwKSlyZXR1cm4gci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6Im1hcCIsY29kZToiaW52YWxpZF90eXBlIixpbnB1dDplLGluc3Q6dH0pLHI7Y29uc3QgaT1bXTtyLnZhbHVlPW5ldyBNYXA7Zm9yKGNvbnN0W2Esc11vZiBlKXtjb25zdCBjPW4ua2V5VHlwZS5fem9kLnJ1bih7dmFsdWU6YSxpc3N1ZXM6W119LG8pLHU9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOnMsaXNzdWVzOltdfSxvKTtjIGluc3RhbmNlb2YgUHJvbWlzZXx8dSBpbnN0YW5jZW9mIFByb21pc2U/aS5wdXNoKFByb21pc2UuYWxsKFtjLHVdKS50aGVuKChbbCxnXSk9PntkcyhsLGcscixhLGUsdCxvKX0pKTpkcyhjLHUscixhLGUsdCxvKX1yZXR1cm4gaS5sZW5ndGg/UHJvbWlzZS5hbGwoaSkudGhlbigoKT0+cik6cn19KTtmdW5jdGlvbiBkcyh0LG4scixvLGUsaSxhKXt0Lmlzc3Vlcy5sZW5ndGgmJihQbi5oYXModHlwZW9mIG8pP3IuaXNzdWVzLnB1c2goLi4udWUobyx0Lmlzc3VlcykpOnIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfa2V5IixvcmlnaW46Im1hcCIsaW5wdXQ6ZSxpbnN0OmksaXNzdWVzOnQuaXNzdWVzLm1hcChzPT5vZShzLGEsVigpKSl9KSksbi5pc3N1ZXMubGVuZ3RoJiYoUG4uaGFzKHR5cGVvZiBvKT9yLmlzc3Vlcy5wdXNoKC4uLnVlKG8sbi5pc3N1ZXMpKTpyLmlzc3Vlcy5wdXNoKHtvcmlnaW46Im1hcCIsY29kZToiaW52YWxpZF9lbGVtZW50IixpbnB1dDplLGluc3Q6aSxrZXk6byxpc3N1ZXM6bi5pc3N1ZXMubWFwKHM9Pm9lKHMsYSxWKCkpKX0pKSxyLnZhbHVlLnNldCh0LnZhbHVlLG4udmFsdWUpfWNvbnN0IFd1PWQoIiRab2RTZXQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO2lmKCEoZSBpbnN0YW5jZW9mIFNldCkpcmV0dXJuIHIuaXNzdWVzLnB1c2goe2lucHV0OmUsaW5zdDp0LGV4cGVjdGVkOiJzZXQiLGNvZGU6ImludmFsaWRfdHlwZSJ9KSxyO2NvbnN0IGk9W107ci52YWx1ZT1uZXcgU2V0O2Zvcihjb25zdCBhIG9mIGUpe2NvbnN0IHM9bi52YWx1ZVR5cGUuX3pvZC5ydW4oe3ZhbHVlOmEsaXNzdWVzOltdfSxvKTtzIGluc3RhbmNlb2YgUHJvbWlzZT9pLnB1c2gocy50aGVuKGM9Pm1zKGMscikpKTptcyhzLHIpfXJldHVybiBpLmxlbmd0aD9Qcm9taXNlLmFsbChpKS50aGVuKCgpPT5yKTpyfX0pO2Z1bmN0aW9uIG1zKHQsbil7dC5pc3N1ZXMubGVuZ3RoJiZuLmlzc3Vlcy5wdXNoKC4uLnQuaXNzdWVzKSxuLnZhbHVlLmFkZCh0LnZhbHVlKX1jb25zdCBHdT1kKCIkWm9kRW51bSIsKHQsbik9PntJLmluaXQodCxuKTtjb25zdCByPW9pKG4uZW50cmllcyksbz1uZXcgU2V0KHIpO3QuX3pvZC52YWx1ZXM9byx0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeKCR7ci5maWx0ZXIoZT0+UG4uaGFzKHR5cGVvZiBlKSkubWFwKGU9PnR5cGVvZiBlPT0ic3RyaW5nIj92ZShlKTplLnRvU3RyaW5nKCkpLmpvaW4oInwiKX0pJGApLHQuX3pvZC5wYXJzZT0oZSxpKT0+e2NvbnN0IGE9ZS52YWx1ZTtyZXR1cm4gby5oYXMoYSl8fGUuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpyLGlucHV0OmEsaW5zdDp0fSksZX19KSxYdT1kKCIkWm9kTGl0ZXJhbCIsKHQsbik9PntpZihJLmluaXQodCxuKSxuLnZhbHVlcy5sZW5ndGg9PT0wKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGNyZWF0ZSBsaXRlcmFsIHNjaGVtYSB3aXRoIG5vIHZhbGlkIHZhbHVlcyIpO2NvbnN0IHI9bmV3IFNldChuLnZhbHVlcyk7dC5fem9kLnZhbHVlcz1yLHQuX3pvZC5wYXR0ZXJuPW5ldyBSZWdFeHAoYF4oJHtuLnZhbHVlcy5tYXAobz0+dHlwZW9mIG89PSJzdHJpbmciP3ZlKG8pOm8/dmUoby50b1N0cmluZygpKTpTdHJpbmcobykpLmpvaW4oInwiKX0pJGApLHQuX3pvZC5wYXJzZT0obyxlKT0+e2NvbnN0IGk9by52YWx1ZTtyZXR1cm4gci5oYXMoaSl8fG8uaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdmFsdWUiLHZhbHVlczpuLnZhbHVlcyxpbnB1dDppLGluc3Q6dH0pLG99fSksWXU9ZCgiJFpvZEZpbGUiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1yLnZhbHVlO3JldHVybiBlIGluc3RhbmNlb2YgRmlsZXx8ci5pc3N1ZXMucHVzaCh7ZXhwZWN0ZWQ6ImZpbGUiLGNvZGU6ImludmFsaWRfdHlwZSIsaW5wdXQ6ZSxpbnN0OnR9KSxyfX0pLFF1PWQoIiRab2RUcmFuc2Zvcm0iLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBDbih0LmNvbnN0cnVjdG9yLm5hbWUpO2NvbnN0IGU9bi50cmFuc2Zvcm0oci52YWx1ZSxyKTtpZihvLmFzeW5jKXJldHVybihlIGluc3RhbmNlb2YgUHJvbWlzZT9lOlByb21pc2UucmVzb2x2ZShlKSkudGhlbihhPT4oci52YWx1ZT1hLHIuZmFsbGJhY2s9ITAscikpO2lmKGUgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IG5ldyB4ZTtyZXR1cm4gci52YWx1ZT1lLHIuZmFsbGJhY2s9ITAscn19KTtmdW5jdGlvbiBwcyh0LG4pe3JldHVybiBuPT09dm9pZCAwJiYodC5pc3N1ZXMubGVuZ3RofHx0LmZhbGxiYWNrKT97aXNzdWVzOltdLHZhbHVlOnZvaWQgMH06dH1jb25zdCBVaT1kKCIkWm9kT3B0aW9uYWwiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsdC5fem9kLm9wdG91dD0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcz9uZXcgU2V0KFsuLi5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyx2b2lkIDBdKTp2b2lkIDApLFQodC5fem9kLCJwYXR0ZXJuIiwoKT0+e2NvbnN0IHI9bi5pbm5lclR5cGUuX3pvZC5wYXR0ZXJuO3JldHVybiByP25ldyBSZWdFeHAoYF4oJHtBbihyLnNvdXJjZSl9KT8kYCk6dm9pZCAwfSksdC5fem9kLnBhcnNlPShyLG8pPT57aWYobi5pbm5lclR5cGUuX3pvZC5vcHRpbj09PSJvcHRpb25hbCIpe2NvbnN0IGU9ci52YWx1ZSxpPW4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7cmV0dXJuIGkgaW5zdGFuY2VvZiBQcm9taXNlP2kudGhlbihhPT5wcyhhLGUpKTpwcyhpLGUpfXJldHVybiByLnZhbHVlPT09dm9pZCAwP3I6bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX19KSxlbD1kKCIkWm9kRXhhY3RPcHRpb25hbCIsKHQsbik9PntVaS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxUKHQuX3pvZCwicGF0dGVybiIsKCk9Pm4uaW5uZXJUeXBlLl96b2QucGF0dGVybiksdC5fem9kLnBhcnNlPShyLG8pPT5uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfSksdGw9ZCgiJFpvZE51bGxhYmxlIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJvcHRpbiIsKCk9Pm4uaW5uZXJUeXBlLl96b2Qub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdG91dCksVCh0Ll96b2QsInBhdHRlcm4iLCgpPT57Y29uc3Qgcj1uLmlubmVyVHlwZS5fem9kLnBhdHRlcm47cmV0dXJuIHI/bmV3IFJlZ0V4cChgXigke0FuKHIuc291cmNlKX18bnVsbCkkYCk6dm9pZCAwfSksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzP25ldyBTZXQoWy4uLm4uaW5uZXJUeXBlLl96b2QudmFsdWVzLG51bGxdKTp2b2lkIDApLHQuX3pvZC5wYXJzZT0ocixvKT0+ci52YWx1ZT09PW51bGw/cjpuLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pfSksbmw9ZCgiJFpvZERlZmF1bHQiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLm9wdGluPSJvcHRpb25hbCIsVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7aWYoci52YWx1ZT09PXZvaWQgMClyZXR1cm4gci52YWx1ZT1uLmRlZmF1bHRWYWx1ZSxyO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PmZzKGksbikpOmZzKGUsbil9fSk7ZnVuY3Rpb24gZnModCxuKXtyZXR1cm4gdC52YWx1ZT09PXZvaWQgMCYmKHQudmFsdWU9bi5kZWZhdWx0VmFsdWUpLHR9Y29uc3Qgcmw9ZCgiJFpvZFByZWZhdWx0IiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmlubmVyVHlwZS5fem9kLnZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT4oby5kaXJlY3Rpb249PT0iYmFja3dhcmQifHxyLnZhbHVlPT09dm9pZCAwJiYoci52YWx1ZT1uLmRlZmF1bHRWYWx1ZSksbi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKSl9KSxpbD1kKCIkWm9kTm9uT3B0aW9uYWwiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pntjb25zdCByPW4uaW5uZXJUeXBlLl96b2QudmFsdWVzO3JldHVybiByP25ldyBTZXQoWy4uLnJdLmZpbHRlcihvPT5vIT09dm9pZCAwKSk6dm9pZCAwfSksdC5fem9kLnBhcnNlPShyLG8pPT57Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+Z3MoaSx0KSk6Z3MoZSx0KX19KTtmdW5jdGlvbiBncyh0LG4pe3JldHVybiF0Lmlzc3Vlcy5sZW5ndGgmJnQudmFsdWU9PT12b2lkIDAmJnQuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6Im5vbm9wdGlvbmFsIixpbnB1dDp0LnZhbHVlLGluc3Q6bn0pLHR9Y29uc3Qgb2w9ZCgiJFpvZFN1Y2Nlc3MiLCh0LG4pPT57SS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoby5kaXJlY3Rpb249PT0iYmFja3dhcmQiKXRocm93IG5ldyBDbigiWm9kU3VjY2VzcyIpO2NvbnN0IGU9bi5pbm5lclR5cGUuX3pvZC5ydW4ocixvKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWkuaXNzdWVzLmxlbmd0aD09PTAscikpOihyLnZhbHVlPWUuaXNzdWVzLmxlbmd0aD09PTAscil9fSksYWw9ZCgiJFpvZENhdGNoIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5vcHRpbj0ib3B0aW9uYWwiLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZS5fem9kLm9wdG91dCksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+KHIudmFsdWU9aS52YWx1ZSxpLmlzc3Vlcy5sZW5ndGgmJihyLnZhbHVlPW4uY2F0Y2hWYWx1ZSh7Li4ucixlcnJvcjp7aXNzdWVzOmkuaXNzdWVzLm1hcChhPT5vZShhLG8sVigpKSl9LGlucHV0OnIudmFsdWV9KSxyLmlzc3Vlcz1bXSxyLmZhbGxiYWNrPSEwKSxyKSk6KHIudmFsdWU9ZS52YWx1ZSxlLmlzc3Vlcy5sZW5ndGgmJihyLnZhbHVlPW4uY2F0Y2hWYWx1ZSh7Li4ucixlcnJvcjp7aXNzdWVzOmUuaXNzdWVzLm1hcChpPT5vZShpLG8sVigpKSl9LGlucHV0OnIudmFsdWV9KSxyLmlzc3Vlcz1bXSxyLmZhbGxiYWNrPSEwKSxyKX19KSxzbD1kKCIkWm9kTmFOIiwodCxuKT0+e0kuaW5pdCh0LG4pLHQuX3pvZC5wYXJzZT0ocixvKT0+KCh0eXBlb2Ygci52YWx1ZSE9Im51bWJlciJ8fCFOdW1iZXIuaXNOYU4oci52YWx1ZSkpJiZyLmlzc3Vlcy5wdXNoKHtpbnB1dDpyLnZhbHVlLGluc3Q6dCxleHBlY3RlZDoibmFuIixjb2RlOiJpbnZhbGlkX3R5cGUifSkscil9KSxQaT1kKCIkWm9kUGlwZSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwidmFsdWVzIiwoKT0+bi5pbi5fem9kLnZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+bi5pbi5fem9kLm9wdGluKSxUKHQuX3pvZCwib3B0b3V0IiwoKT0+bi5vdXQuX3pvZC5vcHRvdXQpLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+bi5pbi5fem9kLnByb3BWYWx1ZXMpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil7Y29uc3QgaT1uLm91dC5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+U24oYSxuLmluLG8pKTpTbihpLG4uaW4sbyl9Y29uc3QgZT1uLmluLl96b2QucnVuKHIsbyk7cmV0dXJuIGUgaW5zdGFuY2VvZiBQcm9taXNlP2UudGhlbihpPT5TbihpLG4ub3V0LG8pKTpTbihlLG4ub3V0LG8pfX0pO2Z1bmN0aW9uIFNuKHQsbixyKXtyZXR1cm4gdC5pc3N1ZXMubGVuZ3RoPyh0LmFib3J0ZWQ9ITAsdCk6bi5fem9kLnJ1bih7dmFsdWU6dC52YWx1ZSxpc3N1ZXM6dC5pc3N1ZXMsZmFsbGJhY2s6dC5mYWxsYmFja30scil9Y29uc3QgT2k9ZCgiJFpvZENvZGVjIiwodCxuKT0+e0kuaW5pdCh0LG4pLFQodC5fem9kLCJ2YWx1ZXMiLCgpPT5uLmluLl96b2QudmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmluLl96b2Qub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLm91dC5fem9kLm9wdG91dCksVCh0Ll96b2QsInByb3BWYWx1ZXMiLCgpPT5uLmluLl96b2QucHJvcFZhbHVlcyksdC5fem9kLnBhcnNlPShyLG8pPT57aWYoKG8uZGlyZWN0aW9ufHwiZm9yd2FyZCIpPT09ImZvcndhcmQiKXtjb25zdCBpPW4uaW4uX3pvZC5ydW4ocixvKTtyZXR1cm4gaSBpbnN0YW5jZW9mIFByb21pc2U/aS50aGVuKGE9PnduKGEsbixvKSk6d24oaSxuLG8pfWVsc2V7Y29uc3QgaT1uLm91dC5fem9kLnJ1bihyLG8pO3JldHVybiBpIGluc3RhbmNlb2YgUHJvbWlzZT9pLnRoZW4oYT0+d24oYSxuLG8pKTp3bihpLG4sbyl9fX0pO2Z1bmN0aW9uIHduKHQsbixyKXtpZih0Lmlzc3Vlcy5sZW5ndGgpcmV0dXJuIHQuYWJvcnRlZD0hMCx0O2lmKChyLmRpcmVjdGlvbnx8ImZvcndhcmQiKT09PSJmb3J3YXJkIil7Y29uc3QgZT1uLnRyYW5zZm9ybSh0LnZhbHVlLHQpO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+SW4odCxpLG4ub3V0LHIpKTpJbih0LGUsbi5vdXQscil9ZWxzZXtjb25zdCBlPW4ucmV2ZXJzZVRyYW5zZm9ybSh0LnZhbHVlLHQpO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4oaT0+SW4odCxpLG4uaW4scikpOkluKHQsZSxuLmluLHIpfX1mdW5jdGlvbiBJbih0LG4scixvKXtyZXR1cm4gdC5pc3N1ZXMubGVuZ3RoPyh0LmFib3J0ZWQ9ITAsdCk6ci5fem9kLnJ1bih7dmFsdWU6bixpc3N1ZXM6dC5pc3N1ZXN9LG8pfWNvbnN0IGNsPWQoIiRab2RQcmVwcm9jZXNzIiwodCxuKT0+e1BpLmluaXQodCxuKX0pLHVsPWQoIiRab2RSZWFkb25seSIsKHQsbik9PntJLmluaXQodCxuKSxUKHQuX3pvZCwicHJvcFZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QucHJvcFZhbHVlcyksVCh0Ll96b2QsInZhbHVlcyIsKCk9Pm4uaW5uZXJUeXBlLl96b2QudmFsdWVzKSxUKHQuX3pvZCwib3B0aW4iLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4pLFQodC5fem9kLCJvcHRvdXQiLCgpPT5uLmlubmVyVHlwZT8uX3pvZD8ub3B0b3V0KSx0Ll96b2QucGFyc2U9KHIsbyk9PntpZihvLmRpcmVjdGlvbj09PSJiYWNrd2FyZCIpcmV0dXJuIG4uaW5uZXJUeXBlLl96b2QucnVuKHIsbyk7Y29uc3QgZT1uLmlubmVyVHlwZS5fem9kLnJ1bihyLG8pO3JldHVybiBlIGluc3RhbmNlb2YgUHJvbWlzZT9lLnRoZW4odnMpOnZzKGUpfX0pO2Z1bmN0aW9uIHZzKHQpe3JldHVybiB0LnZhbHVlPU9iamVjdC5mcmVlemUodC52YWx1ZSksdH1jb25zdCBsbD1kKCIkWm9kVGVtcGxhdGVMaXRlcmFsIiwodCxuKT0+e0kuaW5pdCh0LG4pO2NvbnN0IHI9W107Zm9yKGNvbnN0IG8gb2Ygbi5wYXJ0cylpZih0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsKXtpZighby5fem9kLnBhdHRlcm4pdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydCwgbm8gcGF0dGVybiBmb3VuZDogJHtbLi4uby5fem9kLnRyYWl0c10uc2hpZnQoKX1gKTtjb25zdCBlPW8uX3pvZC5wYXR0ZXJuIGluc3RhbmNlb2YgUmVnRXhwP28uX3pvZC5wYXR0ZXJuLnNvdXJjZTpvLl96b2QucGF0dGVybjtpZighZSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0OiAke28uX3pvZC50cmFpdHN9YCk7Y29uc3QgaT1lLnN0YXJ0c1dpdGgoIl4iKT8xOjAsYT1lLmVuZHNXaXRoKCIkIik/ZS5sZW5ndGgtMTplLmxlbmd0aDtyLnB1c2goZS5zbGljZShpLGEpKX1lbHNlIGlmKG89PT1udWxsfHxDcy5oYXModHlwZW9mIG8pKXIucHVzaCh2ZShgJHtvfWApKTtlbHNlIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7b31gKTt0Ll96b2QucGF0dGVybj1uZXcgUmVnRXhwKGBeJHtyLmpvaW4oIiIpfSRgKSx0Ll96b2QucGFyc2U9KG8sZSk9PnR5cGVvZiBvLnZhbHVlIT0ic3RyaW5nIj8oby5pc3N1ZXMucHVzaCh7aW5wdXQ6by52YWx1ZSxpbnN0OnQsZXhwZWN0ZWQ6InN0cmluZyIsY29kZToiaW52YWxpZF90eXBlIn0pLG8pOih0Ll96b2QucGF0dGVybi5sYXN0SW5kZXg9MCx0Ll96b2QucGF0dGVybi50ZXN0KG8udmFsdWUpfHxvLmlzc3Vlcy5wdXNoKHtpbnB1dDpvLnZhbHVlLGluc3Q6dCxjb2RlOiJpbnZhbGlkX2Zvcm1hdCIsZm9ybWF0Om4uZm9ybWF0Pz8idGVtcGxhdGVfbGl0ZXJhbCIscGF0dGVybjp0Ll96b2QucGF0dGVybi5zb3VyY2V9KSxvKX0pLGRsPWQoIiRab2RGdW5jdGlvbiIsKHQsbik9PihJLmluaXQodCxuKSx0Ll9kZWY9bix0Ll96b2QuZGVmPW4sdC5pbXBsZW1lbnQ9cj0+e2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW1wbGVtZW50KCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBhIGZ1bmN0aW9uIik7cmV0dXJuIGZ1bmN0aW9uKC4uLm8pe2NvbnN0IGU9dC5fZGVmLmlucHV0P1lyKHQuX2RlZi5pbnB1dCxvKTpvLGk9UmVmbGVjdC5hcHBseShyLHRoaXMsZSk7cmV0dXJuIHQuX2RlZi5vdXRwdXQ/WXIodC5fZGVmLm91dHB1dCxpKTppfX0sdC5pbXBsZW1lbnRBc3luYz1yPT57aWYodHlwZW9mIHIhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yKCJpbXBsZW1lbnRBc3luYygpIG11c3QgYmUgY2FsbGVkIHdpdGggYSBmdW5jdGlvbiIpO3JldHVybiBhc3luYyBmdW5jdGlvbiguLi5vKXtjb25zdCBlPXQuX2RlZi5pbnB1dD9hd2FpdCBRcih0Ll9kZWYuaW5wdXQsbyk6byxpPWF3YWl0IFJlZmxlY3QuYXBwbHkocix0aGlzLGUpO3JldHVybiB0Ll9kZWYub3V0cHV0P2F3YWl0IFFyKHQuX2RlZi5vdXRwdXQsaSk6aX19LHQuX3pvZC5wYXJzZT0ocixvKT0+dHlwZW9mIHIudmFsdWUhPSJmdW5jdGlvbiI/KHIuaXNzdWVzLnB1c2goe2NvZGU6ImludmFsaWRfdHlwZSIsZXhwZWN0ZWQ6ImZ1bmN0aW9uIixpbnB1dDpyLnZhbHVlLGluc3Q6dH0pLHIpOih0Ll9kZWYub3V0cHV0JiZ0Ll9kZWYub3V0cHV0Ll96b2QuZGVmLnR5cGU9PT0icHJvbWlzZSI/ci52YWx1ZT10LmltcGxlbWVudEFzeW5jKHIudmFsdWUpOnIudmFsdWU9dC5pbXBsZW1lbnQoci52YWx1ZSksciksdC5pbnB1dD0oLi4ucik9Pntjb25zdCBvPXQuY29uc3RydWN0b3I7cmV0dXJuIEFycmF5LmlzQXJyYXkoclswXSk/bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpuZXcgamkoe3R5cGU6InR1cGxlIixpdGVtczpyWzBdLHJlc3Q6clsxXX0pLG91dHB1dDp0Ll9kZWYub3V0cHV0fSk6bmV3IG8oe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpyWzBdLG91dHB1dDp0Ll9kZWYub3V0cHV0fSl9LHQub3V0cHV0PXI9Pntjb25zdCBvPXQuY29uc3RydWN0b3I7cmV0dXJuIG5ldyBvKHt0eXBlOiJmdW5jdGlvbiIsaW5wdXQ6dC5fZGVmLmlucHV0LG91dHB1dDpyfSl9LHQpKSxtbD1kKCIkWm9kUHJvbWlzZSIsKHQsbik9PntJLmluaXQodCxuKSx0Ll96b2QucGFyc2U9KHIsbyk9PlByb21pc2UucmVzb2x2ZShyLnZhbHVlKS50aGVuKGU9Pm4uaW5uZXJUeXBlLl96b2QucnVuKHt2YWx1ZTplLGlzc3VlczpbXX0sbykpfSkscGw9ZCgiJFpvZExhenkiLCh0LG4pPT57SS5pbml0KHQsbiksVCh0Ll96b2QsImlubmVyVHlwZSIsKCk9Pntjb25zdCByPW47cmV0dXJuIHIuX2NhY2hlZElubmVyfHwoci5fY2FjaGVkSW5uZXI9bi5nZXR0ZXIoKSksci5fY2FjaGVkSW5uZXJ9KSxUKHQuX3pvZCwicGF0dGVybiIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/LnBhdHRlcm4pLFQodC5fem9kLCJwcm9wVmFsdWVzIiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ucHJvcFZhbHVlcyksVCh0Ll96b2QsIm9wdGluIiwoKT0+dC5fem9kLmlubmVyVHlwZT8uX3pvZD8ub3B0aW4/P3ZvaWQgMCksVCh0Ll96b2QsIm9wdG91dCIsKCk9PnQuX3pvZC5pbm5lclR5cGU/Ll96b2Q/Lm9wdG91dD8/dm9pZCAwKSx0Ll96b2QucGFyc2U9KHIsbyk9PnQuX3pvZC5pbm5lclR5cGUuX3pvZC5ydW4ocixvKX0pLGZsPWQoIiRab2RDdXN0b20iLCh0LG4pPT57cS5pbml0KHQsbiksSS5pbml0KHQsbiksdC5fem9kLnBhcnNlPShyLG8pPT5yLHQuX3pvZC5jaGVjaz1yPT57Y29uc3Qgbz1yLnZhbHVlLGU9bi5mbihvKTtpZihlIGluc3RhbmNlb2YgUHJvbWlzZSlyZXR1cm4gZS50aGVuKGk9PmhzKGkscixvLHQpKTtocyhlLHIsbyx0KX19KTtmdW5jdGlvbiBocyh0LG4scixvKXtpZighdCl7Y29uc3QgZT17Y29kZToiY3VzdG9tIixpbnB1dDpyLGluc3Q6byxwYXRoOlsuLi5vLl96b2QuZGVmLnBhdGg/P1tdXSxjb250aW51ZTohby5fem9kLmRlZi5hYm9ydH07by5fem9kLmRlZi5wYXJhbXMmJihlLnBhcmFtcz1vLl96b2QuZGVmLnBhcmFtcyksbi5pc3N1ZXMucHVzaChNZShlKSl9fWNvbnN0IElwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLYrdix2YEiLHZlcmI6Itij2YYg2YrYrdmI2YoifSxmaWxlOnt1bml0OiLYqNin2YrYqiIsdmVyYjoi2KPZhiDZitit2YjZiiJ9LGFycmF5Ont1bml0OiLYudmG2LXYsSIsdmVyYjoi2KPZhiDZitit2YjZiiJ9LHNldDp7dW5pdDoi2LnZhti12LEiLHZlcmI6Itij2YYg2YrYrdmI2YoifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi2YXYr9iu2YQiLGVtYWlsOiLYqNix2YrYryDYpdmE2YPYqtix2YjZhtmKIix1cmw6Itix2KfYqNi3IixlbW9qaToi2KXZitmF2YjYrNmKIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLYqtin2LHZitiuINmI2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGRhdGU6Itiq2KfYsdmK2K4g2KjZhdi52YrYp9ixIElTTyIsdGltZToi2YjZgtiqINio2YXYudmK2KfYsSBJU08iLGR1cmF0aW9uOiLZhdiv2Kkg2KjZhdi52YrYp9ixIElTTyIsaXB2NDoi2LnZhtmI2KfZhiBJUHY0IixpcHY2OiLYudmG2YjYp9mGIElQdjYiLGNpZHJ2NDoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjQiLGNpZHJ2Njoi2YXYr9mJINi52YbYp9mI2YrZhiDYqNi12YrYutipIElQdjYiLGJhc2U2NDoi2YbZjti1INio2KrYsdmF2YrYsiBiYXNlNjQtZW5jb2RlZCIsYmFzZTY0dXJsOiLZhtmO2LUg2KjYqtix2YXZitiyIGJhc2U2NHVybC1lbmNvZGVkIixqc29uX3N0cmluZzoi2YbZjti1INi52YTZiSDZh9mK2KbYqSBKU09OIixlMTY0OiLYsdmC2YUg2YfYp9iq2YEg2KjZhdi52YrYp9ixIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi2YXYr9iu2YQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DZhdiv2K7ZhNin2Kog2LrZitixINmF2YLYqNmI2YTYqTog2YrZgdiq2LHYtiDYpdiv2K7Yp9mEIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfdiMINmI2YTZg9mGINiq2YUg2KXYr9iu2KfZhCAke3N9YDpg2YXYr9iu2YTYp9iqINi62YrYsSDZhdmC2KjZiNmE2Kk6INmK2YHYqtix2LYg2KXYr9iu2KfZhCAke2l92Iwg2YjZhNmD2YYg2KrZhSDYpdiv2K7Yp9mEICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNmF2K/YrtmE2KfYqiDYutmK2LEg2YXZgtio2YjZhNipOiDZitmB2KrYsdi2INil2K/Yrtin2YQgJHtrKGUudmFsdWVzWzBdKX1gOmDYp9iu2KrZitin2LEg2LrZitixINmF2YLYqNmI2YQ6INmK2KrZiNmC2Lkg2KfZhtiq2YLYp9ihINij2K3YryDZh9iw2Ycg2KfZhNiu2YrYp9ix2KfYqjogJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YCDYo9mD2KjYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDYo9mGINiq2YPZiNmGICR7ZS5vcmlnaW4/PyLYp9mE2YLZitmF2KkifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LEifWA6YNij2YPYqNixINmF2YYg2KfZhNmE2KfYstmFOiDZitmB2KrYsdi2INij2YYg2KrZg9mI2YYgJHtlLm9yaWdpbj8/Itin2YTZgtmK2YXYqSJ9ICR7aX0gJHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDYo9i12LrYsSDZhdmGINin2YTZhNin2LLZhTog2YrZgdiq2LHYtiDZhNmAICR7ZS5vcmlnaW59INij2YYg2YrZg9mI2YYgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2KjYr9ijINio2YAgIiR7ZS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g2YbZjti1INi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitmG2KrZh9mKINio2YAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2KrYttmF2ZHZjtmGICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DZhtmO2LUg2LrZitixINmF2YLYqNmI2YQ6INmK2KzYqCDYo9mGINmK2LfYp9io2YIg2KfZhNmG2YXYtyAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0g2LrZitixINmF2YLYqNmI2YRgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2LHZgtmFINi62YrYsSDZhdmC2KjZiNmEOiDZitis2Kgg2KPZhiDZitmD2YjZhiDZhdmGINmF2LbYp9i52YHYp9iqICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNmF2LnYsdmBJHtlLmtleXMubGVuZ3RoPjE/Itin2KoiOiIifSDYutix2YrYqCR7ZS5rZXlzLmxlbmd0aD4xPyLYqSI6IiJ9OiAke18oZS5rZXlzLCLYjCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDZhdi52LHZgSDYutmK2LEg2YXZgtio2YjZhCDZgdmKICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhCDZgdmKICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLZhdiv2K7ZhCDYutmK2LEg2YXZgtio2YjZhCJ9fX07ZnVuY3Rpb24genAoKXtyZXR1cm57bG9jYWxlRXJyb3I6SXAoKX19Y29uc3QgeHA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InNpbXZvbCIsdmVyYjoib2xtYWzEsWTEsXIifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJvbG1hbMSxZMSxciJ9LGFycmF5Ont1bml0OiJlbGVtZW50Iix2ZXJiOiJvbG1hbMSxZMSxciJ9LHNldDp7dW5pdDoiZWxlbWVudCIsdmVyYjoib2xtYWzEsWTEsXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiaW5wdXQiLGVtYWlsOiJlbWFpbCBhZGRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0ZXRpbWUiLGRhdGU6IklTTyBkYXRlIix0aW1lOiJJU08gdGltZSIsZHVyYXRpb246IklTTyBkdXJhdGlvbiIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgbnVtYmVyIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BZYW5sxLHFnyBkyZl5yZlyOiBnw7Z6bMmZbmlsyZluIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZGF4aWwgb2xhbiAke3N9YDpgWWFubMSxxZ8gZMmZecmZcjogZ8O2emzJmW5pbMmZbiAke2l9LCBkYXhpbCBvbGFuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFlhbmzEscWfIGTJmXnJmXI6IGfDtnpsyZluaWzJmW4gJHtrKGUudmFsdWVzWzBdKX1gOmBZYW5sxLHFnyBzZcOnaW06IGHFn2HEn8SxZGFrxLFsYXJkYW4gYmlyaSBvbG1hbMSxZMSxcjogJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb3ggYsO2ecO8azogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2luPz8iZMmZecmZciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnQifWA6YMOHb3ggYsO2ecO8azogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2luPz8iZMmZecmZciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb3gga2nDp2lrOiBnw7Z6bMmZbmlsyZluICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDDh294IGtpw6dpazogZ8O2emzJmW5pbMmZbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gWWFubMSxxZ8gbcmZdG46ICIke2kucHJlZml4fSIgaWzJmSBiYcWfbGFtYWzEsWTEsXJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFlhbmzEscWfIG3JmXRuOiAiJHtpLnN1ZmZpeH0iIGlsyZkgYml0bcmZbGlkaXJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gWWFubMSxxZ8gbcmZdG46ICIke2kuaW5jbHVkZXN9IiBkYXhpbCBvbG1hbMSxZMSxcmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BZYW5sxLHFnyBtyZl0bjogJHtpLnBhdHRlcm59IMWfYWJsb251bmEgdXnEn3VuIG9sbWFsxLFkxLFyYDpgWWFubMSxxZ8gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFlhbmzEscWfIMmZZMmZZDogJHtlLmRpdmlzb3J9IGlsyZkgYsO2bMO8bsmZIGJpbMmZbiBvbG1hbMSxZMSxcmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGHDp2FyJHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRheGlsaW5kyZkgeWFubMSxxZ8gYcOnYXJgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIllhbmzEscWfIGTJmXnJmXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGF4aWxpbmTJmSB5YW5sxLHFnyBkyZl5yZlyYDtkZWZhdWx0OnJldHVybiJZYW5sxLHFnyBkyZl5yZlyIn19fTtmdW5jdGlvbiBUcCgpe3JldHVybntsb2NhbGVFcnJvcjp4cCgpfX1mdW5jdGlvbiAkcyh0LG4scixvKXtjb25zdCBlPU1hdGguYWJzKHQpLGk9ZSUxMCxhPWUlMTAwO3JldHVybiBhPj0xMSYmYTw9MTk/bzppPT09MT9uOmk+PTImJmk8PTQ/cjpvfWNvbnN0IGpwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6ItGB0ZbQvNCy0LDQuyIsZmV3OiLRgdGW0LzQstCw0LvRiyIsbWFueToi0YHRltC80LLQsNC70LDRniJ9LHZlcmI6ItC80LXRhtGMIn0sYXJyYXk6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxzZXQ6e3VuaXQ6e29uZToi0Y3Qu9C10LzQtdC90YIiLGZldzoi0Y3Qu9C10LzQtdC90YLRiyIsbWFueToi0Y3Qu9C10LzQtdC90YLQsNGeIn0sdmVyYjoi0LzQtdGG0YwifSxmaWxlOnt1bml0OntvbmU6ItCx0LDQudGCIixmZXc6ItCx0LDQudGC0YsiLG1hbnk6ItCx0LDQudGC0LDRniJ9LHZlcmI6ItC80LXRhtGMIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItGD0LLQvtC0IixlbWFpbDoiZW1haWwg0LDQtNGA0LDRgSIsdXJsOiJVUkwiLGVtb2ppOiLRjdC80L7QtNC30ZYiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQtNCw0YLQsCDRliDRh9Cw0YEiLGRhdGU6IklTTyDQtNCw0YLQsCIsdGltZToiSVNPINGH0LDRgSIsZHVyYXRpb246IklTTyDQv9GA0LDRhtGP0LPQu9Cw0YHRhtGMIixpcHY0OiJJUHY0INCw0LTRgNCw0YEiLGlwdjY6IklQdjYg0LDQtNGA0LDRgSIsY2lkcnY0OiJJUHY0INC00YvRj9C/0LDQt9C+0L0iLGNpZHJ2NjoiSVB2NiDQtNGL0Y/Qv9Cw0LfQvtC9IixiYXNlNjQ6ItGA0LDQtNC+0Log0YMg0YTQsNGA0LzQsNGG0LUgYmFzZTY0IixiYXNlNjR1cmw6ItGA0LDQtNC+0Log0YMg0YTQsNGA0LzQsNGG0LUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiSlNPTiDRgNCw0LTQvtC6IixlMTY0OiLQvdGD0LzQsNGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0YPQstC+0LQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLQu9GW0LoiLGFycmF5OiLQvNCw0YHRltGeIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQ6INGH0LDQutCw0Z7RgdGPIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg0LDRgtGA0YvQvNCw0L3QsCAke3N9YDpg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRntCy0L7QtDog0YfQsNC60LDRntGB0Y8gJHtpfSwg0LDRgtGA0YvQvNCw0L3QsCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGe0LLQvtC0OiDRh9Cw0LrQsNC70LDRgdGPICR7ayhlLnZhbHVlc1swXSl9YDpg0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDQstCw0YDRi9GP0L3Rgjog0YfQsNC60LDRntGB0Y8g0LDQtNC30ZbQvSDQtyAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1heGltdW0pLGM9JHMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQl9Cw0L3QsNC00YLQsCDQstGP0LvRltC60ZY6INGH0LDQutCw0LvQsNGB0Y8sINGI0YLQviAke2Uub3JpZ2luPz8i0LfQvdCw0YfRjdC90L3QtSJ9INC/0LDQstGW0L3QvdCwICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCX0LDQvdCw0LTRgtCwINCy0Y/Qu9GW0LrRljog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9GN0L3QvdC1In0g0L/QsNCy0ZbQvdC90LAg0LHRi9GG0YwgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtpZihhKXtjb25zdCBzPU51bWJlcihlLm1pbmltdW0pLGM9JHMocyxhLnVuaXQub25lLGEudW5pdC5mZXcsYS51bml0Lm1hbnkpO3JldHVybmDQl9Cw0L3QsNC00YLQsCDQvNCw0LvRizog0YfQsNC60LDQu9Cw0YHRjywg0YjRgtC+ICR7ZS5vcmlnaW59INC/0LDQstGW0L3QvdCwICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCX0LDQvdCw0LTRgtCwINC80LDQu9GLOiDRh9Cw0LrQsNC70LDRgdGPLCDRiNGC0L4gJHtlLm9yaWdpbn0g0L/QsNCy0ZbQvdC90LAg0LHRi9GG0YwgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0L/QsNGH0YvQvdCw0YbRhtCwINC3ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0YDQsNC00L7Qujog0L/QsNCy0ZbQvdC10L0g0LfQsNC60LDQvdGH0LLQsNGG0YbQsCDQvdCwICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3RiyDRgNCw0LTQvtC6OiDQv9Cw0LLRltC90LXQvSDQt9C80Y/RiNGH0LDRhtGMICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndGP0L/RgNCw0LLRltC70YzQvdGLINGA0LDQtNC+0Lo6INC/0LDQstGW0L3QtdC9INCw0LTQv9Cw0LLRj9C00LDRhtGMINGI0LDQsdC70L7QvdGDICR7aS5wYXR0ZXJufWA6YNCd0Y/Qv9GA0LDQstGW0LvRjNC90YsgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LvRltC6OiDQv9Cw0LLRltC90LXQvSDQsdGL0YbRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QsNC30L3QsNC90YsgJHtlLmtleXMubGVuZ3RoPjE/ItC60LvRjtGH0YsiOiLQutC70Y7RhyJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0LrQu9GO0Ycg0YMgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3Rj9C/0YDQsNCy0ZbQu9GM0L3QsNC1INC30L3QsNGH0Y3QvdC90LUg0Z4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuItCd0Y/Qv9GA0LDQstGW0LvRjNC90Ysg0Z7QstC+0LQifX19O2Z1bmN0aW9uIFVwKCl7cmV0dXJue2xvY2FsZUVycm9yOmpwKCl9fWNvbnN0IFBwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLRgdC40LzQstC+0LvQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9LGZpbGU6e3VuaXQ6ItCx0LDQudGC0LAiLHZlcmI6ItC00LAg0YHRitC00YrRgNC20LAifSxhcnJheTp7dW5pdDoi0LXQu9C10LzQtdC90YLQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9LHNldDp7dW5pdDoi0LXQu9C10LzQtdC90YLQsCIsdmVyYjoi0LTQsCDRgdGK0LTRitGA0LbQsCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstGF0L7QtCIsZW1haWw6ItC40LzQtdC50Lsg0LDQtNGA0LXRgSIsdXJsOiJVUkwiLGVtb2ppOiLQtdC80L7QtNC20LgiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDQstGA0LXQvNC1IixkYXRlOiJJU08g0LTQsNGC0LAiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINC/0YDQvtC00YrQu9C20LjRgtC10LvQvdC+0YHRgiIsaXB2NDoiSVB2NCDQsNC00YDQtdGBIixpcHY2OiJJUHY2INCw0LTRgNC10YEiLGNpZHJ2NDoiSVB2NCDQtNC40LDQv9Cw0LfQvtC9IixjaWRydjY6IklQdjYg0LTQuNCw0L/QsNC30L7QvSIsYmFzZTY0OiJiYXNlNjQt0LrQvtC00LjRgNCw0L0g0L3QuNC3IixiYXNlNjR1cmw6ImJhc2U2NHVybC3QutC+0LTQuNGA0LDQvSDQvdC40LciLGpzb25fc3RyaW5nOiJKU09OINC90LjQtyIsZTE2NDoiRS4xNjQg0L3QvtC80LXRgCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0YXQvtC0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi0YfQuNGB0LvQviIsYXJyYXk6ItC80LDRgdC40LIifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0OiDQvtGH0LDQutCy0LDQvSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC9ICR7c31gOmDQndC10LLQsNC70LjQtNC10L0g0LLRhdC+0LQ6INC+0YfQsNC60LLQsNC9ICR7aX0sINC/0L7Qu9GD0YfQtdC9ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtDog0L7Rh9Cw0LrQstCw0L0gJHtrKGUudmFsdWVzWzBdKX1gOmDQndC10LLQsNC70LjQtNC90LAg0L7Qv9GG0LjRjzog0L7Rh9Cw0LrQstCw0L3QviDQtdC00L3QviDQvtGCICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQotCy0YrRgNC00LUg0LPQvtC70Y/QvNC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2luPz8i0YHRgtC+0LnQvdC+0YHRgiJ9INC00LAg0YHRitC00YrRgNC20LAgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i0LXQu9C10LzQtdC90YLQsCJ9YDpg0KLQstGK0YDQtNC1INCz0L7Qu9GP0LzQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbj8/ItGB0YLQvtC50L3QvtGB0YIifSDQtNCwINCx0YrQtNC1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCi0LLRitGA0LTQtSDQvNCw0LvQutC+OiDQvtGH0LDQutCy0LAg0YHQtSAke2Uub3JpZ2lufSDQtNCwINGB0YrQtNGK0YDQttCwICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDQotCy0YrRgNC00LUg0LzQsNC70LrQvjog0L7Rh9Cw0LrQstCwINGB0LUgJHtlLm9yaWdpbn0g0LTQsCDQsdGK0LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7aWYoaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0L/QvtGH0LLQsCDRgSAiJHtpLnByZWZpeH0iYDtpZihpLmZvcm1hdD09PSJlbmRzX3dpdGgiKXJldHVybmDQndC10LLQsNC70LjQtNC10L0g0L3QuNC3OiDRgtGA0Y/QsdCy0LAg0LTQsCDQt9Cw0LLRitGA0YjQstCwINGBICIke2kuc3VmZml4fSJgO2lmKGkuZm9ybWF0PT09ImluY2x1ZGVzIilyZXR1cm5g0J3QtdCy0LDQu9C40LTQtdC9INC90LjQtzog0YLRgNGP0LHQstCwINC00LAg0LLQutC70Y7Rh9Cy0LAgIiR7aS5pbmNsdWRlc30iYDtpZihpLmZvcm1hdD09PSJyZWdleCIpcmV0dXJuYNCd0LXQstCw0LvQuNC00LXQvSDQvdC40Lc6INGC0YDRj9Cx0LLQsCDQtNCwINGB0YrQstC/0LDQtNCwINGBICR7aS5wYXR0ZXJufWA7bGV0IGE9ItCd0LXQstCw0LvQuNC00LXQvSI7cmV0dXJuIGkuZm9ybWF0PT09ImVtb2ppIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QviIpLGkuZm9ybWF0PT09ImRhdGV0aW1lIiYmKGE9ItCd0LXQstCw0LvQuNC00L3QviIpLGkuZm9ybWF0PT09ImRhdGUiJiYoYT0i0J3QtdCy0LDQu9C40LTQvdCwIiksaS5mb3JtYXQ9PT0idGltZSImJihhPSLQndC10LLQsNC70LjQtNC90L4iKSxpLmZvcm1hdD09PSJkdXJhdGlvbiImJihhPSLQndC10LLQsNC70LjQtNC90LAiKSxgJHthfSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdCy0LDQu9C40LTQvdC+INGH0LjRgdC70L46INGC0YDRj9Cx0LLQsCDQtNCwINCx0YrQtNC1INC60YDQsNGC0L3QviDQvdCwICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNCd0LXRgNCw0LfQv9C+0LfQvdCw0YIke2Uua2V5cy5sZW5ndGg+MT8i0LgiOiIifSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLQvtCy0LUiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDQndC10LLQsNC70LjQtNC10L0g0LrQu9GO0Ycg0LIgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQstCw0LvQuNC00LXQvSDQstGF0L7QtCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDQndC10LLQsNC70LjQtNC90LAg0YHRgtC+0LnQvdC+0YHRgiDQsiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdCy0LDQu9C40LTQtdC9INCy0YXQvtC0In19fTtmdW5jdGlvbiBPcCgpe3JldHVybntsb2NhbGVFcnJvcjpQcCgpfX1jb25zdCBEcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2Fyw6BjdGVycyIsdmVyYjoiY29udGVuaXIifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiY29udGVuaXIifSxhcnJheTp7dW5pdDoiZWxlbWVudHMiLHZlcmI6ImNvbnRlbmlyIn0sc2V0Ont1bml0OiJlbGVtZW50cyIsdmVyYjoiY29udGVuaXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50cmFkYSIsZW1haWw6ImFkcmXDp2EgZWxlY3Ryw7JuaWNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGkgaG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmFkYSBJU08iLGlwdjQ6ImFkcmXDp2EgSVB2NCIsaXB2NjoiYWRyZcOnYSBJUHY2IixjaWRydjQ6InJhbmcgSVB2NCIsY2lkcnY2OiJyYW5nIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6ImNhZGVuYSBjb2RpZmljYWRhIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFRpcHVzIGludsOgbGlkOiBzJ2VzcGVyYXZhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcydoYSByZWJ1dCAke3N9YDpgVGlwdXMgaW52w6BsaWQ6IHMnZXNwZXJhdmEgJHtpfSwgcydoYSByZWJ1dCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BWYWxvciBpbnbDoGxpZDogcydlc3BlcmF2YSAke2soZS52YWx1ZXNbMF0pfWA6YE9wY2nDsyBpbnbDoGxpZGE6IHMnZXNwZXJhdmEgdW5hIGRlICR7XyhlLnZhbHVlcywiIG8gIil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyJjb20gYSBtw6B4aW0iOiJtZW55cyBkZSIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTWFzc2EgZ3Jhbjogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbj8/ImVsIHZhbG9yIn0gY29udGluZ3XDqXMgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn1gOmBNYXNzYSBncmFuOiBzJ2VzcGVyYXZhIHF1ZSAke2Uub3JpZ2luPz8iZWwgdmFsb3IifSBmb3MgJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyJjb20gYSBtw61uaW0iOiJtw6lzIGRlIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gY29udGluZ3XDqXMgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBNYXNzYSBwZXRpdDogcydlc3BlcmF2YSBxdWUgJHtlLm9yaWdpbn0gZm9zICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gRm9ybWF0IGludsOgbGlkOiBoYSBkZSBjb21lbsOnYXIgYW1iICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEZvcm1hdCBpbnbDoGxpZDogaGEgZCdhY2FiYXIgYW1iICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gRm9ybWF0IGludsOgbGlkOiBoYSBkJ2luY2xvdXJlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BGb3JtYXQgaW52w6BsaWQ6IGhhIGRlIGNvaW5jaWRpciBhbWIgZWwgcGF0csOzICR7aS5wYXR0ZXJufWA6YEZvcm1hdCBpbnbDoGxpZCBwZXIgYSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoGxpZDogaGEgZGUgc2VyIG3Dumx0aXBsZSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDbGF1JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifSBubyByZWNvbmVndWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDbGF1IGludsOgbGlkYSBhICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOgbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBFbGVtZW50IGludsOgbGlkIGEgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIkVudHJhZGEgaW52w6BsaWRhIn19fTtmdW5jdGlvbiBOcCgpe3JldHVybntsb2NhbGVFcnJvcjpEcCgpfX1jb25zdCBFcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha8WvIix2ZXJiOiJtw610In0sZmlsZTp7dW5pdDoiYmFqdMWvIix2ZXJiOiJtw610In0sYXJyYXk6e3VuaXQ6InBydmvFryIsdmVyYjoibcOtdCJ9LHNldDp7dW5pdDoicHJ2a8WvIix2ZXJiOiJtw610In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InJlZ3Vsw6FybsOtIHbDvXJheiIsZW1haWw6ImUtbWFpbG92w6EgYWRyZXNhIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXR1bSBhIMSNYXMgdmUgZm9ybcOhdHUgSVNPIixkYXRlOiJkYXR1bSB2ZSBmb3Jtw6F0dSBJU08iLHRpbWU6IsSNYXMgdmUgZm9ybcOhdHUgSVNPIixkdXJhdGlvbjoiZG9iYSB0cnbDoW7DrSBJU08iLGlwdjQ6IklQdjQgYWRyZXNhIixpcHY2OiJJUHY2IGFkcmVzYSIsY2lkcnY0OiJyb3pzYWggSVB2NCIsY2lkcnY2OiJyb3pzYWggSVB2NiIsYmFzZTY0OiLFmWV0xJt6ZWMgemFrw7Nkb3ZhbsO9IHZlIGZvcm3DoXR1IGJhc2U2NCIsYmFzZTY0dXJsOiLFmWV0xJt6ZWMgemFrw7Nkb3ZhbsO9IHZlIGZvcm3DoXR1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IsWZZXTEm3plYyB2ZSBmb3Jtw6F0dSBKU09OIixlMTY0OiLEjcOtc2xvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoidnN0dXAifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLEjcOtc2xvIixzdHJpbmc6IsWZZXTEm3plYyIsZnVuY3Rpb246ImZ1bmtjZSIsYXJyYXk6InBvbGUifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmVwbGF0bsO9IHZzdHVwOiBvxI1la8OhdsOhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvYmRyxb5lbm8gJHtzfWA6YE5lcGxhdG7DvSB2c3R1cDogb8SNZWvDoXbDoW5vICR7aX0sIG9iZHLFvmVubyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZXBsYXRuw70gdnN0dXA6IG/EjWVrw6F2w6FubyAke2soZS52YWx1ZXNbMF0pfWA6YE5lcGxhdG7DoSBtb8W+bm9zdDogb8SNZWvDoXbDoW5hIGplZG5hIHogaG9kbm90ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BIb2Rub3RhIGplIHDFmcOtbGnFoSB2ZWxrw6E6ICR7ZS5vcmlnaW4/PyJob2Rub3RhIn0gbXVzw60gbcOtdCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJwcnZrxa8ifWA6YEhvZG5vdGEgamUgcMWZw61sacWhIHZlbGvDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBiw710ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEhvZG5vdGEgamUgcMWZw61sacWhIG1hbMOhOiAke2Uub3JpZ2luPz8iaG9kbm90YSJ9IG11c8OtIG3DrXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8icHJ2a8WvIn1gOmBIb2Rub3RhIGplIHDFmcOtbGnFoSBtYWzDoTogJHtlLm9yaWdpbj8/ImhvZG5vdGEifSBtdXPDrSBiw710ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOZXBsYXRuw70gxZlldMSbemVjOiBtdXPDrSB6YcSNw61uYXQgbmEgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60ga29uxI1pdCBuYSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YE5lcGxhdG7DvSDFmWV0xJt6ZWM6IG11c8OtIG9ic2Fob3ZhdCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmVwbGF0bsO9IMWZZXTEm3plYzogbXVzw60gb2Rwb3bDrWRhdCB2em9ydSAke2kucGF0dGVybn1gOmBOZXBsYXRuw70gZm9ybcOhdCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmVwbGF0bsOpIMSNw61zbG86IG11c8OtIGLDvXQgbsOhc29ia2VtICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lem7DoW3DqSBrbMOtxI1lOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5lcGxhdG7DvSBrbMOtxI0gdiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmVwbGF0bsO9IHZzdHVwIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5lcGxhdG7DoSBob2Rub3RhIHYgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5lcGxhdG7DvSB2c3R1cCJ9fX07ZnVuY3Rpb24gWnAoKXtyZXR1cm57bG9jYWxlRXJyb3I6RXAoKX19Y29uc3QgUnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlZ24iLHZlcmI6ImhhdmRlIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6ImhhdmRlIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiaW5kZWhvbGR0In0sc2V0Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6ImluZGVob2xkdCJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImUtbWFpbGFkcmVzc2UiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRvLSBvZyBrbG9ra2VzbMOmdCIsZGF0ZToiSVNPLWRhdG8iLHRpbWU6IklTTy1rbG9ra2VzbMOmdCIsZHVyYXRpb246IklTTy12YXJpZ2hlZCIsaXB2NDoiSVB2NC1vbXLDpWRlIixpcHY2OiJJUHY2LW9tcsOlZGUiLGNpZHJ2NDoiSVB2NC1zcGVrdHJ1bSIsY2lkcnY2OiJJUHY2LXNwZWt0cnVtIixiYXNlNjQ6ImJhc2U2NC1rb2RldCBzdHJlbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWtvZGV0IHN0cmVuZyIsanNvbl9zdHJpbmc6IkpTT04tc3RyZW5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIixzdHJpbmc6InN0cmVuZyIsbnVtYmVyOiJ0YWwiLGJvb2xlYW46ImJvb2xlYW4iLGFycmF5OiJsaXN0ZSIsb2JqZWN0OiJvYmpla3QiLHNldDoic8OmdCIsZmlsZToiZmlsIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVneWxkaWd0IGlucHV0OiBmb3J2ZW50ZWRlIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgZmlrICR7c31gOmBVZ3lsZGlndCBpbnB1dDogZm9ydmVudGVkZSAke2l9LCBmaWsgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVWd5bGRpZyB2w6ZyZGk6IGZvcnZlbnRlZGUgJHtrKGUudmFsdWVzWzBdKX1gOmBVZ3lsZGlndCB2YWxnOiBmb3J2ZW50ZWRlIGVuIGFmIGbDuGxnZW5kZSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRm9yIHN0b3I6IGZvcnZlbnRlZGUgJHtzPz8idmFsdWUifSAke2EudmVyYn0gJHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRlciJ9YDpgRm9yIHN0b3I6IGZvcnZlbnRlZGUgJHtzPz8idmFsdWUifSBoYXZkZSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRm9yIGxpbGxlOiBmb3J2ZW50ZWRlICR7c30gJHthLnZlcmJ9ICR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgRm9yIGxpbGxlOiBmb3J2ZW50ZWRlICR7c30gaGF2ZGUgJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBzdGFydGUgbWVkICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBza2FsIGVuZGUgbWVkICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gVWd5bGRpZyBzdHJlbmc6IHNrYWwgaW5kZWhvbGRlICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BVZ3lsZGlnIHN0cmVuZzogc2thbCBtYXRjaGUgbcO4bnN0ZXJldCAke2kucGF0dGVybn1gOmBVZ3lsZGlnICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVZ3lsZGlndCB0YWw6IHNrYWwgdsOmcmUgZGVsZWxpZ3QgbWVkICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyJVa2VuZHRlIG7DuGdsZXIiOiJVa2VuZHQgbsO4Z2xlIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVWd5bGRpZyBuw7hnbGUgaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQ6IG1hdGNoZXIgaW5nZW4gYWYgZGUgdGlsbGFkdGUgdHlwZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2w6ZyZGkgaSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iVWd5bGRpZ3QgaW5wdXQifX19O2Z1bmN0aW9uIENwKCl7cmV0dXJue2xvY2FsZUVycm9yOlJwKCl9fWNvbnN0IEFwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJaZWljaGVuIix2ZXJiOiJ6dSBoYWJlbiJ9LGZpbGU6e3VuaXQ6IkJ5dGVzIix2ZXJiOiJ6dSBoYWJlbiJ9LGFycmF5Ont1bml0OiJFbGVtZW50ZSIsdmVyYjoienUgaGFiZW4ifSxzZXQ6e3VuaXQ6IkVsZW1lbnRlIix2ZXJiOiJ6dSBoYWJlbiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJFaW5nYWJlIixlbWFpbDoiRS1NYWlsLUFkcmVzc2UiLHVybDoiVVJMIixlbW9qaToiRW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1EYXR1bSB1bmQgLVVocnplaXQiLGRhdGU6IklTTy1EYXR1bSIsdGltZToiSVNPLVVocnplaXQiLGR1cmF0aW9uOiJJU08tRGF1ZXIiLGlwdjQ6IklQdjQtQWRyZXNzZSIsaXB2NjoiSVB2Ni1BZHJlc3NlIixjaWRydjQ6IklQdjQtQmVyZWljaCIsY2lkcnY2OiJJUHY2LUJlcmVpY2giLGJhc2U2NDoiQmFzZTY0LWNvZGllcnRlciBTdHJpbmciLGJhc2U2NHVybDoiQmFzZTY0LVVSTC1jb2RpZXJ0ZXIgU3RyaW5nIixqc29uX3N0cmluZzoiSlNPTi1TdHJpbmciLGUxNjQ6IkUuMTY0LU51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IkVpbmdhYmUifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJaYWhsIixhcnJheToiQXJyYXkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVW5nw7xsdGlnZSBFaW5nYWJlOiBlcndhcnRldCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGVyaGFsdGVuICR7c31gOmBVbmfDvGx0aWdlIEVpbmdhYmU6IGVyd2FydGV0ICR7aX0sIGVyaGFsdGVuICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVuZ8O8bHRpZ2UgRWluZ2FiZTogZXJ3YXJ0ZXQgJHtrKGUudmFsdWVzWzBdKX1gOmBVbmfDvGx0aWdlIE9wdGlvbjogZXJ3YXJ0ZXQgZWluZSB2b24gJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFp1IGdyb8OfOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2luPz8iV2VydCJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IkVsZW1lbnRlIn0gaGF0YDpgWnUgZ3Jvw586IGVyd2FydGV0LCBkYXNzICR7ZS5vcmlnaW4/PyJXZXJ0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9IGlzdGB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFp1IGtsZWluOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9IGhhdGA6YFp1IGtsZWluOiBlcndhcnRldCwgZGFzcyAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gaXN0YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBtaXQgIiR7aS5wcmVmaXh9IiBiZWdpbm5lbmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gVW5nw7xsdGlnZXIgU3RyaW5nOiBtdXNzIG1pdCAiJHtpLnN1ZmZpeH0iIGVuZGVuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyAiJHtpLmluY2x1ZGVzfSIgZW50aGFsdGVuYDppLmZvcm1hdD09PSJyZWdleCI/YFVuZ8O8bHRpZ2VyIFN0cmluZzogbXVzcyBkZW0gTXVzdGVyICR7aS5wYXR0ZXJufSBlbnRzcHJlY2hlbmA6YFVuZ8O8bHRpZzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFVuZ8O8bHRpZ2UgWmFobDogbXVzcyBlaW4gVmllbGZhY2hlcyB2b24gJHtlLmRpdmlzb3J9IHNlaW5gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVW5iZWthbm50ZSBTY2hsw7xzc2VsIjoiVW5iZWthbm50ZXIgU2NobMO8c3NlbCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYFVuZ8O8bHRpZ2VyIFNjaGzDvHNzZWwgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVuZ8O8bHRpZ2UgRWluZ2FiZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBVbmfDvGx0aWdlciBXZXJ0IGluICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJVbmfDvGx0aWdlIEVpbmdhYmUifX19O2Z1bmN0aW9uIExwKCl7cmV0dXJue2xvY2FsZUVycm9yOkFwKCl9fWNvbnN0IE1wPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLPh86xz4HOsc66z4TOrs+BzrXPgiIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiLOvc6xIM6tz4fOtc65In0sYXJyYXk6e3VuaXQ6Is+Dz4TOv865z4fOtc6vzrEiLHZlcmI6Is69zrEgzq3Ph861zrkifSxzZXQ6e3VuaXQ6Is+Dz4TOv865z4fOtc6vzrEiLHZlcmI6Is69zrEgzq3Ph861zrkifSxtYXA6e3VuaXQ6Is66zrHPhM6xz4fPic+Bzq7Pg861zrnPgiIsdmVyYjoizr3OsSDOrc+HzrXOuSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLOtc6vz4POv860zr/PgiIsZW1haWw6Is60zrnOtc+NzrjPhc69z4POtyBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIM63zrzOtc+Bzr/OvM63zr3Or86xIM66zrHOuSDPjs+BzrEiLGRhdGU6IklTTyDOt868zrXPgc6/zrzOt869zq/OsSIsdGltZToiSVNPIM+Oz4HOsSIsZHVyYXRpb246IklTTyDOtM65zqzPgc66zrXOuc6xIixpcHY0OiLOtM65zrXPjc64z4XOvc+DzrcgSVB2NCIsaXB2NjoizrTOuc61z43OuM+Fzr3Pg863IElQdjYiLG1hYzoizrTOuc61z43OuM+Fzr3Pg863IE1BQyIsY2lkcnY0OiLOtc+Nz4HOv8+CIElQdjQiLGNpZHJ2NjoizrXPjc+Bzr/PgiBJUHY2IixiYXNlNjQ6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCDOus+JzrTOuc66zr/PgM6/zrnOt868zq3Ovc63IM+DzrUgYmFzZTY0IixiYXNlNjR1cmw6Is+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrCDOus+JzrTOuc66zr/PgM6/zrnOt868zq3Ovc63IM+DzrUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiz4PPhc68zrLOv867zr/Pg861zrnPgc6sIEpTT04iLGUxNjQ6Is6xz4HOuc64zrzPjM+CIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoizrXOr8+Dzr/OtM6/z4IifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4gdHlwZW9mIGUuZXhwZWN0ZWQ9PSJzdHJpbmciJiYvXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgjogzrHOvc6xzrzOtc69z4zPhM6xzr0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDOu86uz4bOuM63zrrOtSAke3N9YDpgzpzOtyDOrc6zzrrPhc+BzrcgzrXOr8+Dzr/OtM6/z4I6IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7aX0sIM67zq7Phs64zrfOus61ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YM6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+COiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2soZS52YWx1ZXNbMF0pfWA6YM6czrcgzq3Os866z4XPgc63IM61z4DOuc67zr/Os86uOiDOsc69zrHOvM61zr3PjM+EzrHOvSDOrc69zrEgzrHPgM+MICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DOoM6/zrvPjSDOvM61zrPOrM67zr86IM6xzr3Osc68zrXOvc+Mz4TOsc69ICR7ZS5vcmlnaW4/PyLPhM65zrzOriJ9IM69zrEgzq3Ph861zrkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iz4PPhM6/zrnPh861zq/OsSJ9YDpgzqDOv867z40gzrzOtc6zzqzOu86/OiDOsc69zrHOvM61zr3PjM+EzrHOvSAke2Uub3JpZ2luPz8iz4TOuc68zq4ifSDOvc6xIM61zq/Ovc6xzrkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gzqDOv867z40gzrzOuc66z4HPjDogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbn0gzr3OsSDOrc+HzrXOuSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgzqDOv867z40gzrzOuc66z4HPjDogzrHOvc6xzrzOtc69z4zPhM6xzr0gJHtlLm9yaWdpbn0gzr3OsSDOtc6vzr3Osc65ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM6+zrXOus65zr3OrCDOvM61ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgz4TOtc67zrXOuc+Ozr3Otc65IM68zrUgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DOnM63IM6tzrPOus+Fz4HOtyDPg8+FzrzOss6/zrvOv8+DzrXOuc+Bzqw6IM+Az4HOrc+AzrXOuSDOvc6xIM+AzrXPgc65zq3Ph861zrkgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YM6czrcgzq3Os866z4XPgc63IM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrDogz4DPgc6tz4DOtc65IM69zrEgz4TOsc65z4HOuc6szrbOtc65IM68zrUgz4TOvyDOvM6/z4TOr86yzr8gJHtpLnBhdHRlcm59YDpgzpzOtyDOrc6zzrrPhc+Bzr86ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDOnM63IM6tzrPOus+Fz4HOv8+CIM6xz4HOuc64zrzPjM+COiDPgM+Bzq3PgM61zrkgzr3OsSDOtc6vzr3Osc65IM+Azr/Ou867zrHPgM67zqzPg865zr8gz4TOv8+FICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYM6GzrPOvc+Jz4PPhCR7ZS5rZXlzLmxlbmd0aD4xPyLOsSI6Is6/In0gzrrOu861zrnOtCR7ZS5rZXlzLmxlbmd0aD4xPyLOuc6sIjoizq8ifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDOnM63IM6tzrPOus+Fz4HOvyDOus67zrXOuc60zq8gz4PPhM6/ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLOnM63IM6tzrPOus+Fz4HOtyDOtc6vz4POv860zr/PgiI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDOnM63IM6tzrPOus+Fz4HOtyDPhM65zrzOriDPg8+Ezr8gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIs6czrcgzq3Os866z4XPgc63IM61zq/Pg86/zrTOv8+CIn19fTtmdW5jdGlvbiBxcCgpe3JldHVybntsb2NhbGVFcnJvcjpNcCgpfX1jb25zdCBGcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2hhcmFjdGVycyIsdmVyYjoidG8gaGF2ZSJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6Iml0ZW1zIix2ZXJiOiJ0byBoYXZlIn0sc2V0Ont1bml0OiJpdGVtcyIsdmVyYjoidG8gaGF2ZSJ9LG1hcDp7dW5pdDoiZW50cmllcyIsdmVyYjoidG8gaGF2ZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImVtYWlsIGFkZHJlc3MiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRldGltZSIsZGF0ZToiSVNPIGRhdGUiLHRpbWU6IklTTyB0aW1lIixkdXJhdGlvbjoiSVNPIGR1cmF0aW9uIixpcHY0OiJJUHY0IGFkZHJlc3MiLGlwdjY6IklQdjYgYWRkcmVzcyIsbWFjOiJNQUMgYWRkcmVzcyIsY2lkcnY0OiJJUHY0IHJhbmdlIixjaWRydjY6IklQdjYgcmFuZ2UiLGJhc2U2NDoiYmFzZTY0LWVuY29kZWQgc3RyaW5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmluZyIsanNvbl9zdHJpbmc6IkpTT04gc3RyaW5nIixlMTY0OiJFLjE2NCBudW1iZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJpbnB1dCJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybmBJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2l9LCByZWNlaXZlZCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BJbnZhbGlkIGlucHV0OiBleHBlY3RlZCAke2soZS52YWx1ZXNbMF0pfWA6YEludmFsaWQgb3B0aW9uOiBleHBlY3RlZCBvbmUgb2YgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGhhdmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudHMifWA6YFRvbyBiaWc6IGV4cGVjdGVkICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRvIGJlICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRvbyBzbWFsbDogZXhwZWN0ZWQgJHtlLm9yaWdpbn0gdG8gaGF2ZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVG9vIHNtYWxsOiBleHBlY3RlZCAke2Uub3JpZ2lufSB0byBiZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gSW52YWxpZCBzdHJpbmc6IG11c3Qgc3RhcnQgd2l0aCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BJbnZhbGlkIHN0cmluZzogbXVzdCBlbmQgd2l0aCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEludmFsaWQgc3RyaW5nOiBtdXN0IGluY2x1ZGUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YEludmFsaWQgc3RyaW5nOiBtdXN0IG1hdGNoIHBhdHRlcm4gJHtpLnBhdHRlcm59YDpgSW52YWxpZCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gSW52YWxpZCBudW1iZXI6IG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBVbnJlY29nbml6ZWQga2V5JHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBJbnZhbGlkIGtleSBpbiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4gZS5vcHRpb25zJiZBcnJheS5pc0FycmF5KGUub3B0aW9ucykmJmUub3B0aW9ucy5sZW5ndGg+MD9gSW52YWxpZCBkaXNjcmltaW5hdG9yIHZhbHVlLiBFeHBlY3RlZCAke2Uub3B0aW9ucy5tYXAoYT0+YCcke2F9J2ApLmpvaW4oIiB8ICIpfWA6IkludmFsaWQgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gSW52YWxpZCB2YWx1ZSBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW52YWxpZCBpbnB1dCJ9fX07ZnVuY3Rpb24gZ2woKXtyZXR1cm57bG9jYWxlRXJyb3I6RnAoKX19Y29uc3QgSnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdHJvam4iLHZlcmI6ImhhdmkifSxmaWxlOnt1bml0OiJiYWp0b2puIix2ZXJiOiJoYXZpIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifSxzZXQ6e3VuaXQ6ImVsZW1lbnRvam4iLHZlcmI6ImhhdmkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW5pZ28iLGVtYWlsOiJyZXRhZHJlc28iLHVybDoiVVJMIixlbW9qaToiZW1vxJ1pbyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPLWRhdG90ZW1wbyIsZGF0ZToiSVNPLWRhdG8iLHRpbWU6IklTTy10ZW1wbyIsZHVyYXRpb246IklTTy1kYcWtcm8iLGlwdjQ6IklQdjQtYWRyZXNvIixpcHY2OiJJUHY2LWFkcmVzbyIsY2lkcnY0OiJJUHY0LXJhbmdvIixjaWRydjY6IklQdjYtcmFuZ28iLGJhc2U2NDoiNjQtdW1lIGtvZGl0YSBrYXJha3RyYXJvIixiYXNlNjR1cmw6IlVSTC02NC11bWUga29kaXRhIGthcmFrdHJhcm8iLGpzb25fc3RyaW5nOiJKU09OLWthcmFrdHJhcm8iLGUxNjQ6IkUuMTY0LW5vbWJybyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVuaWdvIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibm9tYnJvIixhcnJheToidGFiZWxvIixudWxsOiJzZW52YWxvcmEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTmV2YWxpZGEgZW5pZ286IGF0ZW5kacSdaXMgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCByaWNldmnEnWlzICR7c31gOmBOZXZhbGlkYSBlbmlnbzogYXRlbmRpxJ1pcyAke2l9LCByaWNldmnEnWlzICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE5ldmFsaWRhIGVuaWdvOiBhdGVuZGnEnWlzICR7ayhlLnZhbHVlc1swXSl9YDpgTmV2YWxpZGEgb3BjaW86IGF0ZW5kacSdaXMgdW51IGVsICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm8gZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW4/PyJ2YWxvcm8ifSBoYXZ1ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvam4ifWA6YFRybyBncmFuZGE6IGF0ZW5kacSdaXMga2UgJHtlLm9yaWdpbj8/InZhbG9ybyJ9IGhhdnUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvIG1hbGdyYW5kYTogYXRlbmRpxJ1pcyBrZSAke2Uub3JpZ2lufSBoYXZ1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUcm8gbWFsZ3JhbmRhOiBhdGVuZGnEnWlzIGtlICR7ZS5vcmlnaW59IGVzdHUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGtvbWVuY2nEnWkgcGVyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5ldmFsaWRhIGthcmFrdHJhcm86IGRldmFzIGZpbmnEnWkgcGVyICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmV2YWxpZGEga2FyYWt0cmFybzogZGV2YXMgaW5rbHV6aXZpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZXZhbGlkYSBrYXJha3RyYXJvOiBkZXZhcyBrb25ncnVpIGt1biBsYSBtb2RlbG8gJHtpLnBhdHRlcm59YDpgTmV2YWxpZGEgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5ldmFsaWRhIG5vbWJybzogZGV2YXMgZXN0aSBvYmxvIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5la29uYXRhJHtlLmtleXMubGVuZ3RoPjE/ImoiOiIifSDFnWxvc2lsbyR7ZS5rZXlzLmxlbmd0aD4xPyJqIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmV2YWxpZGEgxZ1sb3NpbG8gZW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5ldmFsaWRhIGVuaWdvIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmFsaWRhIHZhbG9ybyBlbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmV2YWxpZGEgZW5pZ28ifX19O2Z1bmN0aW9uIEhwKCl7cmV0dXJue2xvY2FsZUVycm9yOkpwKCl9fWNvbnN0IFZwPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJjYXJhY3RlcmVzIix2ZXJiOiJ0ZW5lciJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJ0ZW5lciJ9LGFycmF5Ont1bml0OiJlbGVtZW50b3MiLHZlcmI6InRlbmVyIn0sc2V0Ont1bml0OiJlbGVtZW50b3MiLHZlcmI6InRlbmVyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHJhZGEiLGVtYWlsOiJkaXJlY2Npw7NuIGRlIGNvcnJlbyBlbGVjdHLDs25pY28iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImZlY2hhIHkgaG9yYSBJU08iLGRhdGU6ImZlY2hhIElTTyIsdGltZToiaG9yYSBJU08iLGR1cmF0aW9uOiJkdXJhY2nDs24gSVNPIixpcHY0OiJkaXJlY2Npw7NuIElQdjQiLGlwdjY6ImRpcmVjY2nDs24gSVB2NiIsY2lkcnY0OiJyYW5nbyBJUHY0IixjaWRydjY6InJhbmdvIElQdjYiLGJhc2U2NDoiY2FkZW5hIGNvZGlmaWNhZGEgZW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYWRhIGVuIGJhc2U2NCIsanNvbl9zdHJpbmc6ImNhZGVuYSBKU09OIixlMTY0OiJuw7ptZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiZW50cmFkYSJ9LG89e25hbjoiTmFOIixzdHJpbmc6InRleHRvIixudW1iZXI6Im7Dum1lcm8iLGJvb2xlYW46ImJvb2xlYW5vIixhcnJheToiYXJyZWdsbyIsb2JqZWN0OiJvYmpldG8iLHNldDoiY29uanVudG8iLGZpbGU6ImFyY2hpdm8iLGRhdGU6ImZlY2hhIixiaWdpbnQ6Im7Dum1lcm8gZ3JhbmRlIixzeW1ib2w6InPDrW1ib2xvIix1bmRlZmluZWQ6ImluZGVmaW5pZG8iLG51bGw6Im51bG8iLGZ1bmN0aW9uOiJmdW5jacOzbiIsbWFwOiJtYXBhIixyZWNvcmQ6InJlZ2lzdHJvIix0dXBsZToidHVwbGEiLGVudW06ImVudW1lcmFjacOzbiIsdW5pb246InVuacOzbiIsbGl0ZXJhbDoibGl0ZXJhbCIscHJvbWlzZToicHJvbWVzYSIsdm9pZDoidmFjw61vIixuZXZlcjoibnVuY2EiLHVua25vd246ImRlc2Nvbm9jaWRvIixhbnk6ImN1YWxxdWllcmEifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gRW50cmFkYSBpbnbDoWxpZGE6IHNlIGVzcGVyYWJhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcmVjaWJpZG8gJHtzfWA6YEVudHJhZGEgaW52w6FsaWRhOiBzZSBlc3BlcmFiYSAke2l9LCByZWNpYmlkbyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyYWRhIGludsOhbGlkYTogc2UgZXNwZXJhYmEgJHtrKGUudmFsdWVzWzBdKX1gOmBPcGNpw7NuIGludsOhbGlkYTogc2UgZXNwZXJhYmEgdW5hIGRlICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybiBhP2BEZW1hc2lhZG8gZ3JhbmRlOiBzZSBlc3BlcmFiYSBxdWUgJHtzPz8idmFsb3IifSB0dXZpZXJhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRvcyJ9YDpgRGVtYXNpYWRvIGdyYW5kZTogc2UgZXNwZXJhYmEgcXVlICR7cz8/InZhbG9yIn0gZnVlcmEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gRGVtYXNpYWRvIHBlcXVlw7FvOiBzZSBlc3BlcmFiYSBxdWUgJHtzfSB0dXZpZXJhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBEZW1hc2lhZG8gcGVxdWXDsW86IHNlIGVzcGVyYWJhIHF1ZSAke3N9IGZ1ZXJhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGNvbWVuemFyIGNvbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIHRlcm1pbmFyIGVuICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2FkZW5hIGludsOhbGlkYTogZGViZSBpbmNsdWlyICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BDYWRlbmEgaW52w6FsaWRhOiBkZWJlIGNvaW5jaWRpciBjb24gZWwgcGF0csOzbiAke2kucGF0dGVybn1gOmBJbnbDoWxpZG8gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7Dum1lcm8gaW52w6FsaWRvOiBkZWJlIHNlciBtw7psdGlwbG8gZGUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTGxhdmUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IGRlc2Nvbm9jaWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBMbGF2ZSBpbnbDoWxpZGEgZW4gJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJFbnRyYWRhIGludsOhbGlkYSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxvciBpbnbDoWxpZG8gZW4gJHtvW2Uub3JpZ2luXT8/ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJFbnRyYWRhIGludsOhbGlkYSJ9fX07ZnVuY3Rpb24gS3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6VnAoKX19Y29uc3QgQnA9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Itqp2KfYsdin2qnYqtixIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn0sZmlsZTp7dW5pdDoi2KjYp9uM2KoiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxhcnJheTp7dW5pdDoi2KLbjNiq2YUiLHZlcmI6Itiv2KfYtNiq2Ycg2KjYp9i02K8ifSxzZXQ6e3VuaXQ6Itii24zYqtmFIix2ZXJiOiLYr9in2LTYqtmHINio2KfYtNivIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItmI2LHZiNiv24wiLGVtYWlsOiLYotiv2LHYsyDYp9uM2YXbjNmEIix1cmw6IlVSTCIsZW1vamk6Itin24zZhdmI2KzbjCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi2KrYp9ix24zYriDZiCDYstmF2KfZhiDYp9uM2LLZiCIsZGF0ZToi2KrYp9ix24zYriDYp9uM2LLZiCIsdGltZToi2LLZhdin2YYg2KfbjNiy2YgiLGR1cmF0aW9uOiLZhdiv2Kog2LLZhdin2YYg2KfbjNiy2YgiLGlwdjQ6IklQdjQg2KLYr9ix2LMiLGlwdjY6IklQdjYg2KLYr9ix2LMiLGNpZHJ2NDoiSVB2NCDYr9in2YXZhtmHIixjaWRydjY6IklQdjYg2K/Yp9mF2YbZhyIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDYsdi02KrZhyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCDYsdi02KrZhyIsanNvbl9zdHJpbmc6IkpTT04g2LHYtNiq2YciLGUxNjQ6IkUuMTY0INi52K/YryIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmI2LHZiNiv24wifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLYudiv2K8iLGFycmF5OiLYotix2KfbjNmHIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSDZhduM4oCM2KjZiNiv2IwgJHtzfSDYr9ix24zYp9mB2Kog2LTYr2A6YNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqICR7aX0g2YXbjOKAjNio2YjYr9iMICR7c30g2K/YsduM2KfZgdiqINi02K9gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNmI2LHZiNiv24wg2YbYp9mF2LnYqtio2LE6INmF24zigIzYqNin24zYs9iqICR7ayhlLnZhbHVlc1swXSl9INmF24zigIzYqNmI2K9gOmDar9iy24zZhtmHINmG2KfZhdi52KrYqNixOiDZhduM4oCM2KjYp9uM2LPYqiDbjNqp24wg2KfYsiAke18oZS52YWx1ZXMsInwiKX0g2YXbjOKAjNio2YjYr2A7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DYrtuM2YTbjCDYqNiy2LHarzogJHtlLm9yaWdpbj8/ItmF2YLYr9in2LEifSDYqNin24zYryAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2LXYsSJ9INio2KfYtNivYDpg2K7bjNmE24wg2KjYstix2q86ICR7ZS5vcmlnaW4/PyLZhdmC2K/Yp9ixIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9INio2KfYtNivYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2K7bjNmE24wg2qnZiNqG2qk6ICR7ZS5vcmlnaW59INio2KfbjNivICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0g2KjYp9i02K9gOmDYrtuM2YTbjCDaqdmI2obaqTogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9INio2KfYtNivYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinICIke2kucHJlZml4fSIg2LTYsdmI2Lkg2LTZiNivYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2KjYpyAiJHtpLnN1ZmZpeH0iINiq2YXYp9mFINi02YjYr2A6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DYsdi02KrZhyDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2LTYp9mF2YQgIiR7aS5pbmNsdWRlc30iINio2KfYtNivYDppLmZvcm1hdD09PSJyZWdleCI/YNix2LTYqtmHINmG2KfZhdi52KrYqNixOiDYqNin24zYryDYqNinINin2YTar9mI24wgJHtpLnBhdHRlcm59INmF2LfYp9io2YLYqiDYr9in2LTYqtmHINio2KfYtNivYDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfZhdi52KrYqNixYH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNi52K/YryDZhtin2YXYudiq2KjYsTog2KjYp9uM2K8g2YXYttix2KggJHtlLmRpdmlzb3J9INio2KfYtNivYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g2qnZhNuM2K8ke2Uua2V5cy5sZW5ndGg+MT8i2YfYp9uMIjoiIn0g2YbYp9i02YbYp9izOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNqp2YTbjNivINmG2KfYtNmG2KfYsyDYr9ixICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLZiNix2YjYr9uMINmG2KfZhdi52KrYqNixIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNmF2YLYr9in2LEg2YbYp9mF2LnYqtio2LEg2K/YsSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i2YjYsdmI2K/bjCDZhtin2YXYudiq2KjYsSJ9fX07ZnVuY3Rpb24gV3AoKXtyZXR1cm57bG9jYWxlRXJyb3I6QnAoKX19Y29uc3QgR3A9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6Im1lcmtracOkIixzdWJqZWN0OiJtZXJra2lqb25vbiJ9LGZpbGU6e3VuaXQ6InRhdnVhIixzdWJqZWN0OiJ0aWVkb3N0b24ifSxhcnJheTp7dW5pdDoiYWxraW90YSIsc3ViamVjdDoibGlzdGFuIn0sc2V0Ont1bml0OiJhbGtpb3RhIixzdWJqZWN0OiJqb3Vrb24ifSxudW1iZXI6e3VuaXQ6IiIsc3ViamVjdDoibHV2dW4ifSxiaWdpbnQ6e3VuaXQ6IiIsc3ViamVjdDoic3V1cmVuIGtva29uYWlzbHV2dW4ifSxpbnQ6e3VuaXQ6IiIsc3ViamVjdDoia29rb25haXNsdXZ1biJ9LGRhdGU6e3VuaXQ6IiIsc3ViamVjdDoicMOkaXbDpG3DpMOkcsOkbiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJzw6TDpG5uw7ZsbGluZW4gbGF1c2VrZSIsZW1haWw6InPDpGhrw7Zwb3N0aW9zb2l0ZSIsdXJsOiJVUkwtb3NvaXRlIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTy1haWthbGVpbWEiLGRhdGU6IklTTy1ww6RpdsOkbcOkw6Ryw6QiLHRpbWU6IklTTy1haWthIixkdXJhdGlvbjoiSVNPLWtlc3RvIixpcHY0OiJJUHY0LW9zb2l0ZSIsaXB2NjoiSVB2Ni1vc29pdGUiLGNpZHJ2NDoiSVB2NC1hbHVlIixjaWRydjY6IklQdjYtYWx1ZSIsYmFzZTY0OiJiYXNlNjQta29vZGF0dHUgbWVya2tpam9ubyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta29vZGF0dHUgbWVya2tpam9ubyIsanNvbl9zdHJpbmc6IkpTT04tbWVya2tpam9ubyIsZTE2NDoiRS4xNjQtbHVrdSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InRlbXBsYWF0dGltZXJra2lqb25vIn0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG9saSAke3N9YDpgVmlyaGVlbGxpbmVuIHR5eXBwaTogb2RvdGV0dGlpbiAke2l9LCBvbGkgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBvbGxhICR7ayhlLnZhbHVlc1swXSl9YDpgVmlyaGVlbGxpbmVuIHZhbGludGE6IHTDpHl0eXkgb2xsYSB5a3NpIHNldXJhYXZpc3RhOiAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gTGlpYW4gc3V1cmk6ICR7YS5zdWJqZWN0fSB0w6R5dHl5IG9sbGEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWAudHJpbSgpOmBMaWlhbiBzdXVyaTogYXJ2b24gdMOkeXR5eSBvbGxhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YExpaWFuIHBpZW5pOiAke2Euc3ViamVjdH0gdMOkeXR5eSBvbGxhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gLnRyaW0oKTpgTGlpYW4gcGllbmk6IGFydm9uIHTDpHl0eXkgb2xsYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVmlyaGVlbGxpbmVuIHN5w7Z0ZTogdMOkeXR5eSBhbGthYSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BWaXJoZWVsbGluZW4gc3nDtnRlOiB0w6R5dHl5IGxvcHB1YSAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgc2lzw6RsdMOkw6QgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YFZpcmhlZWxsaW5lbiBzecO2dGU6IHTDpHl0eXkgdmFzdGF0YSBzw6TDpG5uw7ZsbGlzdMOkIGxhdXNla2V0dGEgJHtpLnBhdHRlcm59YDpgVmlyaGVlbGxpbmVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBWaXJoZWVsbGluZW4gbHVrdTogdMOkeXR5eSBvbGxhIGx1dnVuICR7ZS5kaXZpc29yfSBtb25pa2VydGFgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iVHVudGVtYXR0b21hdCBhdmFpbWV0IjoiVHVudGVtYXRvbiBhdmFpbiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuIlZpcmhlZWxsaW5lbiBhdmFpbiB0aWV0dWVlc3NhIjtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiJWaXJoZWVsbGluZW4gdW5pb25pIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuIlZpcmhlZWxsaW5lbiBhcnZvIGpvdWtvc3NhIjtkZWZhdWx0OnJldHVybiJWaXJoZWVsbGluZW4gc3nDtnRlIn19fTtmdW5jdGlvbiBYcCgpe3JldHVybntsb2NhbGVFcnJvcjpHcCgpfX1jb25zdCBZcD0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0w6hyZXMiLHZlcmI6ImF2b2lyIn0sZmlsZTp7dW5pdDoib2N0ZXRzIix2ZXJiOiJhdm9pciJ9LGFycmF5Ont1bml0OiLDqWzDqW1lbnRzIix2ZXJiOiJhdm9pciJ9LHNldDp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZW50csOpZSIsZW1haWw6ImFkcmVzc2UgZS1tYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRlIGV0IGhldXJlIElTTyIsZGF0ZToiZGF0ZSBJU08iLHRpbWU6ImhldXJlIElTTyIsZHVyYXRpb246ImR1csOpZSBJU08iLGlwdjQ6ImFkcmVzc2UgSVB2NCIsaXB2NjoiYWRyZXNzZSBJUHY2IixjaWRydjQ6InBsYWdlIElQdjQiLGNpZHJ2NjoicGxhZ2UgSVB2NiIsYmFzZTY0OiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNoYcOubmUgSlNPTiIsZTE2NDoibnVtw6lybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHLDqWUifSxvPXtzdHJpbmc6ImNoYcOubmUiLG51bWJlcjoibm9tYnJlIixpbnQ6ImVudGllciIsYm9vbGVhbjoiYm9vbMOpZW4iLGJpZ2ludDoiZ3JhbmQgZW50aWVyIixzeW1ib2w6InN5bWJvbGUiLHVuZGVmaW5lZDoiaW5kw6lmaW5pIixudWxsOiJudWxsIixuZXZlcjoiamFtYWlzIix2b2lkOiJ2aWRlIixkYXRlOiJkYXRlIixhcnJheToidGFibGVhdSIsb2JqZWN0OiJvYmpldCIsdHVwbGU6InR1cGxlIixyZWNvcmQ6ImVucmVnaXN0cmVtZW50IixtYXA6ImNhcnRlIixzZXQ6ImVuc2VtYmxlIixmaWxlOiJmaWNoaWVyIixub25vcHRpb25hbDoibm9uLW9wdGlvbm5lbCIsbmFuOiJOYU4iLGZ1bmN0aW9uOiJmb25jdGlvbiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BFbnRyw6llIGludmFsaWRlIDogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IGF0dGVuZHUsICR7c30gcmXDp3VgOmBFbnRyw6llIGludmFsaWRlIDogJHtpfSBhdHRlbmR1LCAke3N9IHJlw6d1YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyw6llIGludmFsaWRlIDogJHtrKGUudmFsdWVzWzBdKX0gYXR0ZW5kdWA6YE9wdGlvbiBpbnZhbGlkZSA6IHVuZSB2YWxldXIgcGFybWkgJHtfKGUudmFsdWVzLCJ8Iil9IGF0dGVuZHVlYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRyb3AgZ3JhbmQgOiAke29bZS5vcmlnaW5dPz8idmFsZXVyIn0gZG9pdCAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iw6lsw6ltZW50KHMpIn1gOmBUcm9wIGdyYW5kIDogJHtvW2Uub3JpZ2luXT8/InZhbGV1ciJ9IGRvaXQgw6p0cmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBwZXRpdCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcCBwZXRpdCA6ICR7b1tlLm9yaWdpbl0/PyJ2YWxldXIifSBkb2l0IMOqdHJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaGHDrm5lIGludmFsaWRlIDogZG9pdCBjb21tZW5jZXIgcGFyICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IHNlIHRlcm1pbmVyIHBhciAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGluY2x1cmUgIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvcnJlc3BvbmRyZSBhdSBtb2TDqGxlICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnZhbGlkZWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb21icmUgaW52YWxpZGUgOiBkb2l0IMOqdHJlIHVuIG11bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsw6kke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vbiByZWNvbm51ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsw6kgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxldXIgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSJ9fX07ZnVuY3Rpb24gUXAoKXtyZXR1cm57bG9jYWxlRXJyb3I6WXAoKX19Y29uc3QgZWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImNhcmFjdMOocmVzIix2ZXJiOiJhdm9pciJ9LGZpbGU6e3VuaXQ6Im9jdGV0cyIsdmVyYjoiYXZvaXIifSxhcnJheTp7dW5pdDoiw6lsw6ltZW50cyIsdmVyYjoiYXZvaXIifSxzZXQ6e3VuaXQ6IsOpbMOpbWVudHMiLHZlcmI6ImF2b2lyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImVudHLDqWUiLGVtYWlsOiJhZHJlc3NlIGNvdXJyaWVsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRlLWhldXJlIElTTyIsZGF0ZToiZGF0ZSBJU08iLHRpbWU6ImhldXJlIElTTyIsZHVyYXRpb246ImR1csOpZSBJU08iLGlwdjQ6ImFkcmVzc2UgSVB2NCIsaXB2NjoiYWRyZXNzZSBJUHY2IixjaWRydjQ6InBsYWdlIElQdjQiLGNpZHJ2NjoicGxhZ2UgSVB2NiIsYmFzZTY0OiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NCIsYmFzZTY0dXJsOiJjaGHDrm5lIGVuY29kw6llIGVuIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ImNoYcOubmUgSlNPTiIsZTE2NDoibnVtw6lybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHLDqWUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BFbnRyw6llIGludmFsaWRlIDogYXR0ZW5kdSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlw6d1ICR7c31gOmBFbnRyw6llIGludmFsaWRlIDogYXR0ZW5kdSAke2l9LCByZcOndSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BFbnRyw6llIGludmFsaWRlIDogYXR0ZW5kdSAke2soZS52YWx1ZXNbMF0pfWA6YE9wdGlvbiBpbnZhbGlkZSA6IGF0dGVuZHUgbCd1bmUgZGVzIHZhbGV1cnMgc3VpdmFudGVzICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4omkIjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBncmFuZCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW4/PyJsYSB2YWxldXIifSBhaXQgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFRyb3AgZ3JhbmQgOiBhdHRlbmR1IHF1ZSAke2Uub3JpZ2luPz8ibGEgdmFsZXVyIn0gc29pdCAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i4omlIjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcCBwZXRpdCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW59IGFpdCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcCBwZXRpdCA6IGF0dGVuZHUgcXVlICR7ZS5vcmlnaW59IHNvaXQgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YENoYcOubmUgaW52YWxpZGUgOiBkb2l0IGNvbW1lbmNlciBwYXIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgc2UgdGVybWluZXIgcGFyICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgaW5jbHVyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2hhw65uZSBpbnZhbGlkZSA6IGRvaXQgY29ycmVzcG9uZHJlIGF1IG1vdGlmICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnZhbGlkZWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb21icmUgaW52YWxpZGUgOiBkb2l0IMOqdHJlIHVuIG11bHRpcGxlIGRlICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENsw6kke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9IG5vbiByZWNvbm51ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYENsw6kgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBWYWxldXIgaW52YWxpZGUgZGFucyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iRW50csOpZSBpbnZhbGlkZSJ9fX07ZnVuY3Rpb24gdGYoKXtyZXR1cm57bG9jYWxlRXJyb3I6ZWYoKX19Y29uc3QgbmY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e2xhYmVsOiLXnteX16jXldeW16oiLGdlbmRlcjoiZiJ9LG51bWJlcjp7bGFiZWw6Itee16HXpNeoIixnZW5kZXI6Im0ifSxib29sZWFuOntsYWJlbDoi16LXqNeaINeR15XXnNeZ15DXoNeZIixnZW5kZXI6Im0ifSxiaWdpbnQ6e2xhYmVsOiJCaWdJbnQiLGdlbmRlcjoibSJ9LGRhdGU6e2xhYmVsOiLXqteQ16jXmdeaIixnZW5kZXI6Im0ifSxhcnJheTp7bGFiZWw6Itee16LXqNeaIixnZW5kZXI6Im0ifSxvYmplY3Q6e2xhYmVsOiLXkNeV15HXmdeZ16fXmCIsZ2VuZGVyOiJtIn0sbnVsbDp7bGFiZWw6Itei16jXmiDXqNeZ16cgKG51bGwpIixnZW5kZXI6Im0ifSx1bmRlZmluZWQ6e2xhYmVsOiLXoteo15og15zXkCDXnteV15LXk9eoICh1bmRlZmluZWQpIixnZW5kZXI6Im0ifSxzeW1ib2w6e2xhYmVsOiLXodeZ157XkdeV15wgKFN5bWJvbCkiLGdlbmRlcjoibSJ9LGZ1bmN0aW9uOntsYWJlbDoi16TXldeg16fXpteZ15QiLGdlbmRlcjoiZiJ9LG1hcDp7bGFiZWw6Itee16TXlCAoTWFwKSIsZ2VuZGVyOiJmIn0sc2V0OntsYWJlbDoi16fXkdeV16bXlCAoU2V0KSIsZ2VuZGVyOiJmIn0sZmlsZTp7bGFiZWw6Iten15XXkdelIixnZW5kZXI6Im0ifSxwcm9taXNlOntsYWJlbDoiUHJvbWlzZSIsZ2VuZGVyOiJtIn0sTmFOOntsYWJlbDoiTmFOIixnZW5kZXI6Im0ifSx1bmtub3duOntsYWJlbDoi16LXqNeaINec15Ag15nXk9eV16IiLGdlbmRlcjoibSJ9LHZhbHVlOntsYWJlbDoi16LXqNeaIixnZW5kZXI6Im0ifX0sbj17c3RyaW5nOnt1bml0OiLXqteV15XXmdedIixzaG9ydExhYmVsOiLXp9em16giLGxvbmdMYWJlbDoi15DXqNeV15oifSxmaWxlOnt1bml0OiLXkdeZ15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LGFycmF5Ont1bml0OiLXpNeo15nXmNeZ150iLHNob3J0TGFiZWw6Iten15jXnyIsbG9uZ0xhYmVsOiLXkteT15XXnCJ9LHNldDp7dW5pdDoi16TXqNeZ15jXmdedIixzaG9ydExhYmVsOiLXp9eY158iLGxvbmdMYWJlbDoi15LXk9eV15wifSxudW1iZXI6e3VuaXQ6IiIsc2hvcnRMYWJlbDoi16fXmNefIixsb25nTGFiZWw6IteS15PXldecIn19LHI9dT0+dT90W3VdOnZvaWQgMCxvPXU9Pntjb25zdCBsPXIodSk7cmV0dXJuIGw/bC5sYWJlbDp1Pz90LnVua25vd24ubGFiZWx9LGU9dT0+YNeUJHtvKHUpfWAsaT11PT4ocih1KT8uZ2VuZGVyPz8ibSIpPT09ImYiPyLXpteo15nXm9eUINec15TXmdeV16oiOiLXpteo15nXmiDXnNeU15nXldeqIixhPXU9PnU/blt1XT8/bnVsbDpudWxsLHM9e3JlZ2V4OntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxlbWFpbDp7bGFiZWw6Iteb16rXldeR16og15DXmdee15nXmdecIixnZW5kZXI6ImYifSx1cmw6e2xhYmVsOiLXm9eq15XXkdeqINeo16nXqiIsZ2VuZGVyOiJmIn0sZW1vamk6e2xhYmVsOiLXkNeZ157XldeSJ9eZIixnZW5kZXI6Im0ifSx1dWlkOntsYWJlbDoiVVVJRCIsZ2VuZGVyOiJtIn0sbmFub2lkOntsYWJlbDoibmFub2lkIixnZW5kZXI6Im0ifSxndWlkOntsYWJlbDoiR1VJRCIsZ2VuZGVyOiJtIn0sY3VpZDp7bGFiZWw6ImN1aWQiLGdlbmRlcjoibSJ9LGN1aWQyOntsYWJlbDoiY3VpZDIiLGdlbmRlcjoibSJ9LHVsaWQ6e2xhYmVsOiJVTElEIixnZW5kZXI6Im0ifSx4aWQ6e2xhYmVsOiJYSUQiLGdlbmRlcjoibSJ9LGtzdWlkOntsYWJlbDoiS1NVSUQiLGdlbmRlcjoibSJ9LGRhdGV0aW1lOntsYWJlbDoi16rXkNeo15nXmiDXldeW157XnyBJU08iLGdlbmRlcjoibSJ9LGRhdGU6e2xhYmVsOiLXqteQ16jXmdeaIElTTyIsZ2VuZGVyOiJtIn0sdGltZTp7bGFiZWw6IteW157XnyBJU08iLGdlbmRlcjoibSJ9LGR1cmF0aW9uOntsYWJlbDoi157XqdeaINeW157XnyBJU08iLGdlbmRlcjoibSJ9LGlwdjQ6e2xhYmVsOiLXm9eq15XXkdeqIElQdjQiLGdlbmRlcjoiZiJ9LGlwdjY6e2xhYmVsOiLXm9eq15XXkdeqIElQdjYiLGdlbmRlcjoiZiJ9LGNpZHJ2NDp7bGFiZWw6IteY15XXldeXIElQdjQiLGdlbmRlcjoibSJ9LGNpZHJ2Njp7bGFiZWw6IteY15XXldeXIElQdjYiLGdlbmRlcjoibSJ9LGJhc2U2NDp7bGFiZWw6Itee15fXqNeV15bXqiDXkdeR16HXmdehIDY0IixnZW5kZXI6ImYifSxiYXNlNjR1cmw6e2xhYmVsOiLXnteX16jXldeW16og15HXkdeh15nXoSA2NCDXnNeb16rXldeR15XXqiDXqNep16oiLGdlbmRlcjoiZiJ9LGpzb25fc3RyaW5nOntsYWJlbDoi157Xl9eo15XXlteqIEpTT04iLGdlbmRlcjoiZiJ9LGUxNjQ6e2xhYmVsOiLXnteh16TXqCBFLjE2NCIsZ2VuZGVyOiJtIn0sand0OntsYWJlbDoiSldUIixnZW5kZXI6Im0ifSxlbmRzX3dpdGg6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LGluY2x1ZGVzOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSxsb3dlcmNhc2U6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9LHN0YXJ0c193aXRoOntsYWJlbDoi16fXnNeYIixnZW5kZXI6Im0ifSx1cHBlcmNhc2U6e2xhYmVsOiLXp9ec15giLGdlbmRlcjoibSJ9fSxjPXtuYW46Ik5hTiJ9O3JldHVybiB1PT57c3dpdGNoKHUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBsPXUuZXhwZWN0ZWQsZz1jW2w/PyIiXT8/byhsKSx2PVModS5pbnB1dCksJD1jW3ZdPz90W3ZdPy5sYWJlbD8/djtyZXR1cm4vXltBLVpdLy50ZXN0KHUuZXhwZWN0ZWQpP2DXp9ec15gg15zXkCDXqten15nXnzog16bXqNeZ15og15zXlNeZ15XXqiBpbnN0YW5jZW9mICR7dS5leHBlY3RlZH0sINeU16rXp9eR15wgJHskfWA6YNen15zXmCDXnNeQINeq16fXmdefOiDXpteo15nXmiDXnNeU15nXldeqICR7Z30sINeU16rXp9eR15wgJHskfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjp7aWYodS52YWx1ZXMubGVuZ3RoPT09MSlyZXR1cm5g16LXqNeaINec15Ag16rXp9eZ1586INeU16LXqNeaINeX15nXmdeRINec15TXmdeV16ogJHtrKHUudmFsdWVzWzBdKX1gO2NvbnN0IGw9dS52YWx1ZXMubWFwKCQ9PmsoJCkpO2lmKHUudmFsdWVzLmxlbmd0aD09PTIpcmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNeQ16TXqdeo15XXmdeV16og15TXnteq15DXmdee15XXqiDXlNefICR7bFswXX0g15DXlSAke2xbMV19YDtjb25zdCBnPWxbbC5sZW5ndGgtMV07cmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefOiDXlNeQ16TXqdeo15XXmdeV16og15TXnteq15DXmdee15XXqiDXlNefICR7bC5zbGljZSgwLC0xKS5qb2luKCIsICIpfSDXkNeVICR7Z31gfWNhc2UidG9vX2JpZyI6e2NvbnN0IGw9YSh1Lm9yaWdpbiksZz1lKHUub3JpZ2luPz8idmFsdWUiKTtpZih1Lm9yaWdpbj09PSJzdHJpbmciKXJldHVybmAke2w/LmxvbmdMYWJlbD8/IteQ16jXldeaIn0g157Xk9eZOiAke2d9INem16jXmdeb15Qg15zXlNeb15nXnCAke3UubWF4aW11bS50b1N0cmluZygpfSAke2w/LnVuaXQ/PyIifSAke3UuaW5jbHVzaXZlPyLXkNeVINek15fXldeqIjoi15zXm9ecINeU15nXldeq16gifWAudHJpbSgpO2lmKHUub3JpZ2luPT09Im51bWJlciIpe2NvbnN0IHk9dS5pbmNsdXNpdmU/YNen15jXnyDXkNeVINep15XXldeUINecLSR7dS5tYXhpbXVtfWA6YNen15jXnyDXni0ke3UubWF4aW11bX1gO3JldHVybmDXkteT15XXnCDXnteT15k6ICR7Z30g16bXqNeZ15og15zXlNeZ15XXqiAke3l9YH1pZih1Lm9yaWdpbj09PSJhcnJheSJ8fHUub3JpZ2luPT09InNldCIpe2NvbnN0IHk9dS5vcmlnaW49PT0ic2V0Ij8i16bXqNeZ15vXlCI6Item16jXmdeaIixGPXUuaW5jbHVzaXZlP2Ake3UubWF4aW11bX0gJHtsPy51bml0Pz8iIn0g15DXlSDXpNeX15XXqmA6YNek15fXldeqINeeLSR7dS5tYXhpbXVtfSAke2w/LnVuaXQ/PyIifWA7cmV0dXJuYNeS15PXldecINee15PXmTogJHtnfSAke3l9INec15TXm9eZ15wgJHtGfWAudHJpbSgpfWNvbnN0IHY9dS5pbmNsdXNpdmU/Ijw9IjoiPCIsJD1pKHUub3JpZ2luPz8idmFsdWUiKTtyZXR1cm4gbD8udW5pdD9gJHtsLmxvbmdMYWJlbH0g157Xk9eZOiAke2d9ICR7JH0gJHt2fSR7dS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7bC51bml0fWA6YCR7bD8ubG9uZ0xhYmVsPz8i15LXk9eV15wifSDXnteT15k6ICR7Z30gJHskfSAke3Z9JHt1Lm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgbD1hKHUub3JpZ2luKSxnPWUodS5vcmlnaW4/PyJ2YWx1ZSIpO2lmKHUub3JpZ2luPT09InN0cmluZyIpcmV0dXJuYCR7bD8uc2hvcnRMYWJlbD8/Iten16bXqCJ9INee15PXmTogJHtnfSDXpteo15nXm9eUINec15TXm9eZ15wgJHt1Lm1pbmltdW0udG9TdHJpbmcoKX0gJHtsPy51bml0Pz8iIn0gJHt1LmluY2x1c2l2ZT8i15DXlSDXmdeV16rXqCI6Itec16TXl9eV16oifWAudHJpbSgpO2lmKHUub3JpZ2luPT09Im51bWJlciIpe2NvbnN0IHk9dS5pbmNsdXNpdmU/YNeS15PXldecINeQ15Ug16nXldeV15Qg15wtJHt1Lm1pbmltdW19YDpg15LXk9eV15wg154tJHt1Lm1pbmltdW19YDtyZXR1cm5g16fXmNefINee15PXmTogJHtnfSDXpteo15nXmiDXnNeU15nXldeqICR7eX1gfWlmKHUub3JpZ2luPT09ImFycmF5Inx8dS5vcmlnaW49PT0ic2V0Iil7Y29uc3QgeT11Lm9yaWdpbj09PSJzZXQiPyLXpteo15nXm9eUIjoi16bXqNeZ15oiO2lmKHUubWluaW11bT09PTEmJnUuaW5jbHVzaXZlKXtjb25zdCBSPSh1Lm9yaWdpbj09PSJzZXQiLCLXnNek15fXldeqINek16jXmdeYINeQ15fXkyIpO3JldHVybmDXp9eY158g157Xk9eZOiAke2d9ICR7eX0g15zXlNeb15nXnCAke1J9YH1jb25zdCBGPXUuaW5jbHVzaXZlP2Ake3UubWluaW11bX0gJHtsPy51bml0Pz8iIn0g15DXlSDXmdeV16rXqGA6YNeZ15XXqteoINeeLSR7dS5taW5pbXVtfSAke2w/LnVuaXQ/PyIifWA7cmV0dXJuYNen15jXnyDXnteT15k6ICR7Z30gJHt5fSDXnNeU15vXmdecICR7Rn1gLnRyaW0oKX1jb25zdCB2PXUuaW5jbHVzaXZlPyI+PSI6Ij4iLCQ9aSh1Lm9yaWdpbj8/InZhbHVlIik7cmV0dXJuIGw/LnVuaXQ/YCR7bC5zaG9ydExhYmVsfSDXnteT15k6ICR7Z30gJHskfSAke3Z9JHt1Lm1pbmltdW0udG9TdHJpbmcoKX0gJHtsLnVuaXR9YDpgJHtsPy5zaG9ydExhYmVsPz8i16fXmNefIn0g157Xk9eZOiAke2d9ICR7JH0gJHt2fSR7dS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgbD11O2lmKGwuZm9ybWF0PT09InN0YXJ0c193aXRoIilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16rXl9eZ15wg15EgIiR7bC5wcmVmaXh9ImA7aWYobC5mb3JtYXQ9PT0iZW5kc193aXRoIilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16HXqteZ15nXnSDXkSAiJHtsLnN1ZmZpeH0iYDtpZihsLmZvcm1hdD09PSJpbmNsdWRlcyIpcmV0dXJuYNeU157Xl9eo15XXlteqINeX15nXmdeR16og15zXm9ec15XXnCAiJHtsLmluY2x1ZGVzfSJgO2lmKGwuZm9ybWF0PT09InJlZ2V4IilyZXR1cm5g15TXnteX16jXldeW16og15fXmdeZ15HXqiDXnNeU16rXkNeZ150g15zXqteR16DXmdeqICR7bC5wYXR0ZXJufWA7Y29uc3QgZz1zW2wuZm9ybWF0XSx2PWc/LmxhYmVsPz9sLmZvcm1hdCx5PShnPy5nZW5kZXI/PyJtIik9PT0iZiI/Iteq16fXmdeg15QiOiLXqten15nXnyI7cmV0dXJuYCR7dn0g15zXkCAke3l9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYNee16HXpNeoINec15Ag16rXp9eZ1586INeX15nXmdeRINec15TXmdeV16og157Xm9ek15zXlCDXqdecICR7dS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNee16TXqteXJHt1LmtleXMubGVuZ3RoPjE/IteV16oiOiIifSDXnNeQINee15bXldeUJHt1LmtleXMubGVuZ3RoPjE/IteZ150iOiLXlCJ9OiAke18odS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuItep15PXlCDXnNeQINeq16fXmdefINeR15DXldeR15nXmden15giO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIten15zXmCDXnNeQINeq16fXmdefIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNei16jXmiDXnNeQINeq16fXmdefINeRJHtlKHUub3JpZ2luPz8iYXJyYXkiKX1gO2RlZmF1bHQ6cmV0dXJuIten15zXmCDXnNeQINeq16fXmdefIn19fTtmdW5jdGlvbiByZigpe3JldHVybntsb2NhbGVFcnJvcjpuZigpfX1jb25zdCBvZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiem5ha292YSIsdmVyYjoiaW1hdGkifSxmaWxlOnt1bml0OiJiYWp0b3ZhIix2ZXJiOiJpbWF0aSJ9LGFycmF5Ont1bml0OiJzdGF2a2kiLHZlcmI6ImltYXRpIn0sc2V0Ont1bml0OiJzdGF2a2kiLHZlcmI6ImltYXRpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InVub3MiLGVtYWlsOiJlbWFpbCBhZHJlc2EiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBpIHZyaWplbWUiLGRhdGU6IklTTyBkYXR1bSIsdGltZToiSVNPIHZyaWplbWUiLGR1cmF0aW9uOiJJU08gdHJhamFuamUiLGlwdjQ6IklQdjQgYWRyZXNhIixpcHY2OiJJUHY2IGFkcmVzYSIsY2lkcnY0OiJJUHY0IHJhc3BvbiIsY2lkcnY2OiJJUHY2IHJhc3BvbiIsYmFzZTY0OiJiYXNlNjQga29kaXJhbmkgdGVrc3QiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGlyYW5pIHRla3N0Iixqc29uX3N0cmluZzoiSlNPTiB0ZWtzdCIsZTE2NDoiRS4xNjQgYnJvaiIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InVub3MifSxvPXtuYW46Ik5hTiIsc3RyaW5nOiJ0ZWtzdCIsbnVtYmVyOiJicm9qIixib29sZWFuOiJib29sZWFuIixhcnJheToibml6IixvYmplY3Q6Im9iamVrdCIsc2V0OiJza3VwIixmaWxlOiJkYXRvdGVrYSIsZGF0ZToiZGF0dW0iLGJpZ2ludDoiYmlnaW50IixzeW1ib2w6InNpbWJvbCIsdW5kZWZpbmVkOiJ1bmRlZmluZWQiLG51bGw6Im51bGwiLGZ1bmN0aW9uOiJmdW5rY2lqYSIsbWFwOiJtYXBhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE5laXNwcmF2YW4gdW5vczogb8SNZWt1amUgc2UgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBhIHByaW1samVubyBqZSAke3N9YDpgTmVpc3ByYXZhbiB1bm9zOiBvxI1la3VqZSBzZSAke2l9LCBhIHByaW1samVubyBqZSAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOZWlzcHJhdm5hIHZyaWplZG5vc3Q6IG/EjWVraXZhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZWlzcHJhdm5hIG9wY2lqYTogb8SNZWtpdmFubyBqZWRubyBvZCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gUHJldmVsaWtvOiBvxI1la2l2YW5vIGRhICR7cz8/InZyaWplZG5vc3QifSBpbWEgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVuYXRhIn1gOmBQcmV2ZWxpa286IG/EjWVraXZhbm8gZGEgJHtzPz8idnJpamVkbm9zdCJ9IGJ1ZGUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKSxzPW9bZS5vcmlnaW5dPz9lLm9yaWdpbjtyZXR1cm4gYT9gUHJlbWFsbzogb8SNZWtpdmFubyBkYSAke3N9IGltYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlbWFsbzogb8SNZWtpdmFubyBkYSAke3N9IGJ1ZGUgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5laXNwcmF2YW4gdGVrc3Q6IG1vcmEgemFwb8SNaW5qYXRpIHMgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSB6YXZyxaFhdmF0aSBzICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSBzYWRyxb5hdmF0aSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmVpc3ByYXZhbiB0ZWtzdDogbW9yYSBvZGdvdmFyYXRpIHV6b3JrdSAke2kucGF0dGVybn1gOmBOZWlzcHJhdm5hICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOZWlzcHJhdmFuIGJyb2o6IG1vcmEgYml0aSB2acWhZWtyYXRuaWsgb2QgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmVwcmVwb3puYXQke2Uua2V5cy5sZW5ndGg+MT8iaSBrbGp1xI1ldmkiOiIga2xqdcSNIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmVpc3ByYXZhbiBrbGp1xI0gdSAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5laXNwcmF2YW4gdW5vcyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOZWlzcHJhdm5hIHZyaWplZG5vc3QgdSAke29bZS5vcmlnaW5dPz9lLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIk5laXNwcmF2YW4gdW5vcyJ9fX07ZnVuY3Rpb24gYWYoKXtyZXR1cm57bG9jYWxlRXJyb3I6b2YoKX19Y29uc3Qgc2Y9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJsZWd5ZW4ifSxmaWxlOnt1bml0OiJieXRlIix2ZXJiOiJsZWd5ZW4ifSxhcnJheTp7dW5pdDoiZWxlbSIsdmVyYjoibGVneWVuIn0sc2V0Ont1bml0OiJlbGVtIix2ZXJiOiJsZWd5ZW4ifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiYmVtZW5ldCIsZW1haWw6ImVtYWlsIGPDrW0iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBpZMWRYsOpbHllZyIsZGF0ZToiSVNPIGTDoXR1bSIsdGltZToiSVNPIGlkxZEiLGR1cmF0aW9uOiJJU08gaWTFkWludGVydmFsbHVtIixpcHY0OiJJUHY0IGPDrW0iLGlwdjY6IklQdjYgY8OtbSIsY2lkcnY0OiJJUHY0IHRhcnRvbcOhbnkiLGNpZHJ2NjoiSVB2NiB0YXJ0b23DoW55IixiYXNlNjQ6ImJhc2U2NC1rw7Nkb2x0IHN0cmluZyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwta8OzZG9sdCBzdHJpbmciLGpzb25fc3RyaW5nOiJKU09OIHN0cmluZyIsZTE2NDoiRS4xNjQgc3rDoW0iLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJiZW1lbmV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoic3rDoW0iLGFycmF5OiJ0w7ZtYiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DDiXJ2w6lueXRlbGVuIGJlbWVuZXQ6IGEgdsOhcnQgw6lydMOpayBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGEga2Fwb3R0IMOpcnTDqWsgJHtzfWA6YMOJcnbDqW55dGVsZW4gYmVtZW5ldDogYSB2w6FydCDDqXJ0w6lrICR7aX0sIGEga2Fwb3R0IMOpcnTDqWsgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gw4lydsOpbnl0ZWxlbiBiZW1lbmV0OiBhIHbDoXJ0IMOpcnTDqWsgJHtrKGUudmFsdWVzWzBdKX1gOmDDiXJ2w6lueXRlbGVuIG9wY2nDszogdmFsYW1lbHlpayDDqXJ0w6lrIHbDoXJ0ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7psIG5hZ3k6ICR7ZS5vcmlnaW4/PyLDqXJ0w6lrIn0gbcOpcmV0ZSB0w7psIG5hZ3kgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbSJ9YDpgVMO6bCBuYWd5OiBhIGJlbWVuZXRpIMOpcnTDqWsgJHtlLm9yaWdpbj8/IsOpcnTDqWsifSB0w7psIG5hZ3k6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSBtw6lyZXRlIHTDumwga2ljc2kgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFTDumwga2ljc2k6IGEgYmVtZW5ldGkgw6lydMOpayAke2Uub3JpZ2lufSB0w7psIGtpY3NpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DDiXJ2w6lueXRlbGVuIHN0cmluZzogIiR7aS5wcmVmaXh9IiDDqXJ0w6lra2VsIGtlbGwga2V6ZMWRZG5pZWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gw4lydsOpbnl0ZWxlbiBzdHJpbmc6ICIke2kuc3VmZml4fSIgw6lydMOpa2tlbCBrZWxsIHbDqWd6xZFkbmllYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAiJHtpLmluY2x1ZGVzfSIgw6lydMOpa2V0IGtlbGwgdGFydGFsbWF6bmlhYDppLmZvcm1hdD09PSJyZWdleCI/YMOJcnbDqW55dGVsZW4gc3RyaW5nOiAke2kucGF0dGVybn0gbWludMOhbmFrIGtlbGwgbWVnZmVsZWxuaWVgOmDDiXJ2w6lueXRlbGVuICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDDiXJ2w6lueXRlbGVuIHN6w6FtOiAke2UuZGl2aXNvcn0gdMO2YmJzesO2csO2c8OpbmVrIGtlbGwgbGVubmllYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gSXNtZXJldGxlbiBrdWxjcyR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gw4lydsOpbnl0ZWxlbiBrdWxjcyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iw4lydsOpbnl0ZWxlbiBiZW1lbmV0IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYMOJcnbDqW55dGVsZW4gw6lydMOpazogJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIsOJcnbDqW55dGVsZW4gYmVtZW5ldCJ9fX07ZnVuY3Rpb24gY2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6c2YoKX19ZnVuY3Rpb24gX3ModCxuLHIpe3JldHVybiBNYXRoLmFicyh0KT09PTE/bjpyfWZ1bmN0aW9uIENlKHQpe2lmKCF0KXJldHVybiIiO2NvbnN0IG49WyLVoSIsItWlIiwi1agiLCLVqyIsItW4Iiwi1bjWgiIsItaFIl0scj10W3QubGVuZ3RoLTFdO3JldHVybiB0KyhuLmluY2x1ZGVzKHIpPyLVtiI6ItWoIil9Y29uc3QgdWY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6e29uZToi1bbVt9Wh1bYiLG1hbnk6ItW21bfVodW21bbVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifSxmaWxlOnt1bml0OntvbmU6ItWi1aHVtdWpIixtYW55OiLVotWh1bXVqdWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LGFycmF5Ont1bml0OntvbmU6ItW/1aHWgNaAIixtYW55OiLVv9Wh1oDWgNWl1oAifSx2ZXJiOiLVuNaC1bbVpdW21aHVrCJ9LHNldDp7dW5pdDp7b25lOiLVv9Wh1oDWgCIsbWFueToi1b/VodaA1oDVpdaAIn0sdmVyYjoi1bjWgtW21aXVttWh1awifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi1bTVuNaC1b/WhCIsZW1haWw6ItWn1awuINWw1aHVvdaB1aUiLHVybDoiVVJMIixlbW9qaToi1afVtNW41bvVqyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINWh1bTVvdWh1anVq9W+INaHINWq1aHVtCIsZGF0ZToiSVNPINWh1bTVvdWh1anVq9W+Iix0aW1lOiJJU08g1arVodW0IixkdXJhdGlvbjoiSVNPINW/1ofVuNWy1bjWgtWp1bXVuNaC1bYiLGlwdjQ6IklQdjQg1bDVodW91oHVpSIsaXB2NjoiSVB2NiDVsNWh1b3WgdWlIixjaWRydjQ6IklQdjQg1bTVq9W71aHVr9Wh1bXWhCIsY2lkcnY2OiJJUHY2INW01avVu9Wh1a/VodW11oQiLGJhc2U2NDoiYmFzZTY0INWx1ofVodW51aHWg9W41b4g1b/VuNWyIixiYXNlNjR1cmw6ImJhc2U2NHVybCDVsdaH1aHVudWh1oPVuNW+INW/1bjVsiIsanNvbl9zdHJpbmc6IkpTT04g1b/VuNWyIixlMTY0OiJFLjE2NCDVsNWh1bTVodaAIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi1bTVuNaC1b/WhCJ9LG89e25hbjoiTmFOIixudW1iZXI6ItWp1avVviIsYXJyYXk6ItWm1aHVttWj1b7VodWuIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bTigKQg1b3VutWh1b3VvtW41oLVtCDVp9aAIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg1b3Vv9Wh1oHVvtWl1awg1acgJHtzfWA6YNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bTigKQg1b3VutWh1b3VvtW41oLVtCDVp9aAICR7aX0sINW91b/VodaB1b7VpdWsINWnICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bTigKQg1b3VutWh1b3VvtW41oLVtCDVp9aAICR7ayhlLnZhbHVlc1sxXSl9YDpg1Y3VrdWh1awg1b/VodaA1aLVpdaA1aHVr+KApCDVvdW61aHVvdW+1bjWgtW0INWn1oAg1bDVpdW/1ofVtdWh1azVttWl1oDVq9aBINW01aXVr9Wo1Z0gJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5tYXhpbXVtKSxjPV9zKHMsYS51bml0Lm9uZSxhLnVuaXQubWFueSk7cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1bTVpdWuINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0NlKGUub3JpZ2luPz8i1aHWgNWq1aXWhCIpfSDVr9W41oLVttWl1bbVoSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNWJ1aHWg9Wh1abVodW21oEg1bTVpdWuINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0NlKGUub3JpZ2luPz8i1aHWgNWq1aXWhCIpfSDVrNWr1bbVqyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWluaW11bSksYz1fcyhzLGEudW5pdC5vbmUsYS51bml0Lm1hbnkpO3JldHVybmDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0NlKGUub3JpZ2luKX0g1a/VuNaC1bbVpdW21aEgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7Y31gfXJldHVybmDVidWh1oPVodWm1aHVttaBINaD1bjWhNaAINWh1oDVqtWl1oTigKQg1b3VutWh1b3VvtW41oLVtCDVpywg1bjWgCAke0NlKGUub3JpZ2luKX0g1azVq9W21asgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YNWN1a3VodWsINW/1bjVsuKApCDVutWl1b/WhCDVpyDVvdWv1b3VvtWrICIke2kucHJlZml4fSIt1bjVvmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g1Y3VrdWh1awg1b/VuNWy4oCkINW61aXVv9aEINWnINWh1b7VodaA1b/VvtWrICIke2kuc3VmZml4fSIt1bjVvmA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1brVodaA1bjWgtW21aHVr9WrICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DVjdWt1aHVrCDVv9W41bLigKQg1brVpdW/1oQg1acg1bDVodW01aHVutWh1b/VodW91a3VodW21asgJHtpLnBhdHRlcm59INWx1ofVodW51aHWg9Wr1bZgOmDVjdWt1aHVrCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g1Y3VrdWh1awg1anVq9W+4oCkINW61aXVv9aEINWnINWi1aHVptW01aHVutWh1b/Vq9WvINWs1avVttWrICR7ZS5kaXZpc29yfS3Vq2A7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNWJ1bPVodW21aHVudW+1aHVriDVotWh1bbVodWs1aske2Uua2V5cy5sZW5ndGg+MT8i1bbVpdaAIjoiIn0uICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g1Y3VrdWh1awg1aLVodW21aHVrNWrICR7Q2UoZS5vcmlnaW4pfS3VuNaC1bRgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItWN1a3VodWsINW01bjWgtW/1oTVodWj1oDVuNaC1bQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g1Y3VrdWh1awg1aHWgNWq1aXWhCAke0NlKGUub3JpZ2luKX0t1bjWgtW0YDtkZWZhdWx0OnJldHVybiLVjdWt1aHVrCDVtNW41oLVv9aE1aHVo9aA1bjWgtW0In19fTtmdW5jdGlvbiBsZigpe3JldHVybntsb2NhbGVFcnJvcjp1ZigpfX1jb25zdCBkZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia2FyYWt0ZXIiLHZlcmI6Im1lbWlsaWtpIn0sZmlsZTp7dW5pdDoiYnl0ZSIsdmVyYjoibWVtaWxpa2kifSxhcnJheTp7dW5pdDoiaXRlbSIsdmVyYjoibWVtaWxpa2kifSxzZXQ6e3VuaXQ6Iml0ZW0iLHZlcmI6Im1lbWlsaWtpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiYWxhbWF0IGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJ0YW5nZ2FsIGRhbiB3YWt0dSBmb3JtYXQgSVNPIixkYXRlOiJ0YW5nZ2FsIGZvcm1hdCBJU08iLHRpbWU6ImphbSBmb3JtYXQgSVNPIixkdXJhdGlvbjoiZHVyYXNpIGZvcm1hdCBJU08iLGlwdjQ6ImFsYW1hdCBJUHY0IixpcHY2OiJhbGFtYXQgSVB2NiIsY2lkcnY0OiJyZW50YW5nIGFsYW1hdCBJUHY0IixjaWRydjY6InJlbnRhbmcgYWxhbWF0IElQdjYiLGJhc2U2NDoic3RyaW5nIGRlbmdhbiBlbmtvZGUgYmFzZTY0IixiYXNlNjR1cmw6InN0cmluZyBkZW5nYW4gZW5rb2RlIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6InN0cmluZyBKU09OIixlMTY0OiJhbmdrYSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4ifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBkaXRlcmltYSAke3N9YDpgSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHtpfSwgZGl0ZXJpbWEgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW5wdXQgdGlkYWsgdmFsaWQ6IGRpaGFyYXBrYW4gJHtrKGUudmFsdWVzWzBdKX1gOmBQaWxpaGFuIHRpZGFrIHZhbGlkOiBkaWhhcmFwa2FuIHNhbGFoIHNhdHUgZGFyaSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBiZXNhcjogZGloYXJhcGthbiAke2Uub3JpZ2luPz8idmFsdWUifSBtZW1pbGlraSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW4ifWA6YFRlcmxhbHUgYmVzYXI6IGRpaGFyYXBrYW4gJHtlLm9yaWdpbj8/InZhbHVlIn0gbWVuamFkaSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUZXJsYWx1IGtlY2lsOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW59IG1lbWlsaWtpICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBUZXJsYWx1IGtlY2lsOiBkaWhhcmFwa2FuICR7ZS5vcmlnaW59IG1lbmphZGkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YFN0cmluZyB0aWRhayB2YWxpZDogaGFydXMgZGltdWxhaSBkZW5nYW4gIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gU3RyaW5nIHRpZGFrIHZhbGlkOiBoYXJ1cyBiZXJha2hpciBkZW5nYW4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIG1lbnllcnRha2FuICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BTdHJpbmcgdGlkYWsgdmFsaWQ6IGhhcnVzIHNlc3VhaSBwb2xhICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSB0aWRhayB2YWxpZGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBBbmdrYSB0aWRhayB2YWxpZDogaGFydXMga2VsaXBhdGFuIGRhcmkgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gS3VuY2kgdGlkYWsgZGlrZW5hbGkgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBLdW5jaSB0aWRhayB2YWxpZCBkaSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW5wdXQgdGlkYWsgdmFsaWQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gTmlsYWkgdGlkYWsgdmFsaWQgZGkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IHRpZGFrIHZhbGlkIn19fTtmdW5jdGlvbiBtZigpe3JldHVybntsb2NhbGVFcnJvcjpkZigpfX1jb25zdCBwZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoic3RhZmkiLHZlcmI6ImHDsCBoYWZhIn0sZmlsZTp7dW5pdDoiYsOmdGkiLHZlcmI6ImHDsCBoYWZhIn0sYXJyYXk6e3VuaXQ6ImhsdXRpIix2ZXJiOiJhw7AgaGFmYSJ9LHNldDp7dW5pdDoiaGx1dGkiLHZlcmI6ImHDsCBoYWZhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImdpbGRpIixlbWFpbDoibmV0ZmFuZyIsdXJsOiJ2ZWZzbMOzw7AiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhZ3NldG5pbmcgb2cgdMOtbWkiLGRhdGU6IklTTyBkYWdzZXRuaW5nIix0aW1lOiJJU08gdMOtbWkiLGR1cmF0aW9uOiJJU08gdMOtbWFsZW5nZCIsaXB2NDoiSVB2NCBhZGRyZXNzIixpcHY2OiJJUHY2IGFkZHJlc3MiLGNpZHJ2NDoiSVB2NCByYW5nZSIsY2lkcnY2OiJJUHY2IHJhbmdlIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkIHN0cmVuZ3VyIixiYXNlNjR1cmw6ImJhc2U2NHVybC1lbmNvZGVkIHN0cmVuZ3VyIixqc29uX3N0cmluZzoiSlNPTiBzdHJlbmd1ciIsZTE2NDoiRS4xNjQgdMO2bHVnaWxkaSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImdpbGRpIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibsO6bWVyIixhcnJheToiZnlsa2kifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gUmFuZ3QgZ2lsZGk6IMOew7ogc2zDs3N0IGlubiAke3N9IMO+YXIgc2VtIMOhIGHDsCB2ZXJhIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfWA6YFJhbmd0IGdpbGRpOiDDnsO6IHNsw7NzdCBpbm4gJHtzfSDDvmFyIHNlbSDDoSBhw7AgdmVyYSAke2l9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BSYW5ndCBnaWxkaTogZ2VydCByw6HDsCBmeXJpciAke2soZS52YWx1ZXNbMF0pfWA6YMOTZ2lsdCB2YWw6IG3DoSB2ZXJhIGVpdHQgYWYgZWZ0aXJmYXJhbmRpICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BPZiBzdMOzcnQ6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW4/PyJnaWxkaSJ9IGhhZmkgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iaGx1dGkifWA6YE9mIHN0w7NydDogZ2VydCBlciByw6HDsCBmeXJpciBhw7AgJHtlLm9yaWdpbj8/ImdpbGRpIn0gc8OpICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE9mIGzDrXRpw7A6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW59IGhhZmkgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YE9mIGzDrXRpw7A6IGdlcnQgZXIgcsOhw7AgZnlyaXIgYcOwICR7ZS5vcmlnaW59IHPDqSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGJ5cmphIMOhICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YMOTZ2lsZHVyIHN0cmVuZ3VyOiB2ZXLDsHVyIGHDsCBlbmRhIMOhICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGlubmloYWxkYSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gw5NnaWxkdXIgc3RyZW5ndXI6IHZlcsOwdXIgYcOwIGZ5bGdqYSBteW5zdHJpICR7aS5wYXR0ZXJufWA6YFJhbmd0ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBSw7ZuZyB0YWxhOiB2ZXLDsHVyIGHDsCB2ZXJhIG1hcmdmZWxkaSBhZiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDDk8O+ZWtrdCAke2Uua2V5cy5sZW5ndGg+MT8iaXIgbHlrbGFyIjoidXIgbHlraWxsIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gUmFuZ3VyIGx5a2lsbCDDrSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iUmFuZ3QgZ2lsZGkiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gUmFuZ3QgZ2lsZGkgw60gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIlJhbmd0IGdpbGRpIn19fTtmdW5jdGlvbiBmZigpe3JldHVybntsb2NhbGVFcnJvcjpwZigpfX1jb25zdCBnZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYXR0ZXJpIix2ZXJiOiJhdmVyZSJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImF2ZXJlIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRpIix2ZXJiOiJhdmVyZSJ9LHNldDp7dW5pdDoiZWxlbWVudGkiLHZlcmI6ImF2ZXJlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiaW5kaXJpenpvIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGUgb3JhIElTTyIsZGF0ZToiZGF0YSBJU08iLHRpbWU6Im9yYSBJU08iLGR1cmF0aW9uOiJkdXJhdGEgSVNPIixpcHY0OiJpbmRpcml6em8gSVB2NCIsaXB2NjoiaW5kaXJpenpvIElQdjYiLGNpZHJ2NDoiaW50ZXJ2YWxsbyBJUHY0IixjaWRydjY6ImludGVydmFsbG8gSVB2NiIsYmFzZTY0OiJzdHJpbmdhIGNvZGlmaWNhdGEgaW4gYmFzZTY0IixiYXNlNjR1cmw6IlVSTCBjb2RpZmljYXRhIGluIGJhc2U2NCIsanNvbl9zdHJpbmc6InN0cmluZ2EgSlNPTiIsZTE2NDoibnVtZXJvIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJudW1lcm8iLGFycmF5OiJ2ZXR0b3JlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YElucHV0IG5vbiB2YWxpZG86IGF0dGVzbyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJpY2V2dXRvICR7c31gOmBJbnB1dCBub24gdmFsaWRvOiBhdHRlc28gJHtpfSwgcmljZXZ1dG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW5wdXQgbm9uIHZhbGlkbzogYXR0ZXNvICR7ayhlLnZhbHVlc1swXSl9YDpgT3B6aW9uZSBub24gdmFsaWRhOiBhdHRlc28gdW5vIHRyYSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVHJvcHBvIGdyYW5kZTogJHtlLm9yaWdpbj8/InZhbG9yZSJ9IGRldmUgYXZlcmUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGkifWA6YFRyb3BwbyBncmFuZGU6ICR7ZS5vcmlnaW4/PyJ2YWxvcmUifSBkZXZlIGVzc2VyZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUcm9wcG8gcGljY29sbzogJHtlLm9yaWdpbn0gZGV2ZSBhdmVyZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVHJvcHBvIHBpY2NvbG86ICR7ZS5vcmlnaW59IGRldmUgZXNzZXJlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmdhIG5vbiB2YWxpZGE6IGRldmUgaW5pemlhcmUgY29uICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFN0cmluZ2Egbm9uIHZhbGlkYTogZGV2ZSB0ZXJtaW5hcmUgY29uICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGluY2x1ZGVyZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nYSBub24gdmFsaWRhOiBkZXZlIGNvcnJpc3BvbmRlcmUgYWwgcGF0dGVybiAke2kucGF0dGVybn1gOmBJbnB1dCBub24gdmFsaWRvOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTnVtZXJvIG5vbiB2YWxpZG86IGRldmUgZXNzZXJlIHVuIG11bHRpcGxvIGRpICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYENoaWF2JHtlLmtleXMubGVuZ3RoPjE/ImkiOiJlIn0gbm9uIHJpY29ub3NjaXV0JHtlLmtleXMubGVuZ3RoPjE/ImUiOiJhIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hpYXZlIG5vbiB2YWxpZGEgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIklucHV0IG5vbiB2YWxpZG8iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb3JlIG5vbiB2YWxpZG8gaW4gJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIklucHV0IG5vbiB2YWxpZG8ifX19O2Z1bmN0aW9uIHZmKCl7cmV0dXJue2xvY2FsZUVycm9yOmdmKCl9fWNvbnN0IGhmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLmloflrZciLHZlcmI6IuOBp+OBguOCiyJ9LGZpbGU6e3VuaXQ6IuODkOOCpOODiCIsdmVyYjoi44Gn44GC44KLIn0sYXJyYXk6e3VuaXQ6Iuimgee0oCIsdmVyYjoi44Gn44GC44KLIn0sc2V0Ont1bml0OiLopoHntKAiLHZlcmI6IuOBp+OBguOCiyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLlhaXlipvlgKQiLGVtYWlsOiLjg6Hjg7zjg6vjgqLjg4njg6zjgrkiLHVybDoiVVJMIixlbW9qaToi57W15paH5a2XIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU0/ml6XmmYIiLGRhdGU6IklTT+aXpeS7mCIsdGltZToiSVNP5pmC5Yi7IixkdXJhdGlvbjoiSVNP5pyf6ZaTIixpcHY0OiJJUHY044Ki44OJ44Os44K5IixpcHY2OiJJUHY244Ki44OJ44Os44K5IixjaWRydjQ6IklQdjTnr4Tlm7IiLGNpZHJ2NjoiSVB2NuevhOWbsiIsYmFzZTY0OiJiYXNlNjTjgqjjg7PjgrPjg7zjg4nmloflrZfliJciLGJhc2U2NHVybDoiYmFzZTY0dXJs44Ko44Oz44Kz44O844OJ5paH5a2X5YiXIixqc29uX3N0cmluZzoiSlNPTuaWh+Wtl+WIlyIsZTE2NDoiRS4xNjTnlarlj7ciLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLlhaXlipvlgKQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLmlbDlgKQiLGFycmF5OiLphY3liJcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g54Sh5Yq544Gq5YWl5YqbOiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3jgYzmnJ/lvoXjgZXjgozjgb7jgZfjgZ/jgYzjgIEke3N944GM5YWl5Yqb44GV44KM44G+44GX44GfYDpg54Sh5Yq544Gq5YWl5YqbOiAke2l944GM5pyf5b6F44GV44KM44G+44GX44Gf44GM44CBJHtzfeOBjOWFpeWKm+OBleOCjOOBvuOBl+OBn2B9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g54Sh5Yq544Gq5YWl5YqbOiAke2soZS52YWx1ZXNbMF0pfeOBjOacn+W+heOBleOCjOOBvuOBl+OBn2A6YOeEoeWKueOBqumBuOaKnjogJHtfKGUudmFsdWVzLCLjgIEiKX3jga7jgYTjgZrjgozjgYvjgafjgYLjgovlv4XopoHjgYzjgYLjgorjgb7jgZlgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuS7peS4i+OBp+OBguOCiyI6IuOCiOOCiuWwj+OBleOBhCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5aSn44GN44GZ44GO44KL5YCkOiAke2Uub3JpZ2luPz8i5YCkIn3jga8ke2UubWF4aW11bS50b1N0cmluZygpfSR7YS51bml0Pz8i6KaB57SgIn0ke2l95b+F6KaB44GM44GC44KK44G+44GZYDpg5aSn44GN44GZ44GO44KL5YCkOiAke2Uub3JpZ2luPz8i5YCkIn3jga8ke2UubWF4aW11bS50b1N0cmluZygpfSR7aX3lv4XopoHjgYzjgYLjgorjgb7jgZlgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i5Lul5LiK44Gn44GC44KLIjoi44KI44KK5aSn44GN44GEIixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DlsI/jgZXjgZnjgY7jgovlgKQ6ICR7ZS5vcmlnaW5944GvJHtlLm1pbmltdW0udG9TdHJpbmcoKX0ke2EudW5pdH0ke2l95b+F6KaB44GM44GC44KK44G+44GZYDpg5bCP44GV44GZ44GO44KL5YCkOiAke2Uub3JpZ2lufeOBryR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtpfeW/heimgeOBjOOBguOCiuOBvuOBmWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kucHJlZml4fSLjgaflp4vjgb7jgovlv4XopoHjgYzjgYLjgorjgb7jgZlgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOeEoeWKueOBquaWh+Wtl+WIlzogIiR7aS5zdWZmaXh9IuOBp+e1guOCj+OCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DnhKHlirnjgarmloflrZfliJc6ICIke2kuaW5jbHVkZXN9IuOCkuWQq+OCgOW/heimgeOBjOOBguOCiuOBvuOBmWA6aS5mb3JtYXQ9PT0icmVnZXgiP2DnhKHlirnjgarmloflrZfliJc6IOODkeOCv+ODvOODsyR7aS5wYXR0ZXJufeOBq+S4gOiHtOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA6YOeEoeWKueOBqiR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDnhKHlirnjgarmlbDlgKQ6ICR7ZS5kaXZpc29yfeOBruWAjeaVsOOBp+OBguOCi+W/heimgeOBjOOBguOCiuOBvuOBmWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOiqjeitmOOBleOCjOOBpuOBhOOBquOBhOOCreODvCR7ZS5rZXlzLmxlbmd0aD4xPyLnvqQiOiIifTogJHtfKGUua2V5cywi44CBIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn3lhoXjga7nhKHlirnjgarjgq3jg7xgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIueEoeWKueOBquWFpeWKmyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufeWGheOBrueEoeWKueOBquWApGA7ZGVmYXVsdDpyZXR1cm4i54Sh5Yq544Gq5YWl5YqbIn19fTtmdW5jdGlvbiAkZigpe3JldHVybntsb2NhbGVFcnJvcjpoZigpfX1jb25zdCBfZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4YOh4YOY4YOb4YOR4YOd4YOa4YOdIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sZmlsZTp7dW5pdDoi4YOR4YOQ4YOY4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn0sYXJyYXk6e3VuaXQ6IuGDlOGDmuGDlOGDm+GDlOGDnOGDouGDmCIsdmVyYjoi4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSJ9LHNldDp7dW5pdDoi4YOU4YOa4YOU4YOb4YOU4YOc4YOi4YOYIix2ZXJiOiLhg6Phg5zhg5Phg5Ag4YOo4YOU4YOY4YOq4YOQ4YOV4YOT4YOU4YOhIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuGDqOGDlOGDp+GDleGDkOGDnOGDkCIsZW1haWw6IuGDlOGDmi3hg6Thg53hg6Hhg6Lhg5jhg6Eg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYIix1cmw6IlVSTCIsZW1vamk6IuGDlOGDm+GDneGDr+GDmCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToi4YOX4YOQ4YOg4YOY4YOm4YOYLeGDk+GDoOGDnSIsZGF0ZToi4YOX4YOQ4YOg4YOY4YOm4YOYIix0aW1lOiLhg5Phg6Dhg50iLGR1cmF0aW9uOiLhg67hg5Dhg5zhg5Lhg6Dhg6vhg5rhg5jhg5Xhg53hg5Hhg5AiLGlwdjQ6IklQdjQg4YOb4YOY4YOh4YOQ4YOb4YOQ4YOg4YOX4YOYIixpcHY2OiJJUHY2IOGDm+GDmOGDoeGDkOGDm+GDkOGDoOGDl+GDmCIsY2lkcnY0OiJJUHY0IOGDk+GDmOGDkOGDnuGDkOGDluGDneGDnOGDmCIsY2lkcnY2OiJJUHY2IOGDk+GDmOGDkOGDnuGDkOGDluGDneGDnOGDmCIsYmFzZTY0OiJiYXNlNjQt4YOZ4YOd4YOT4YOY4YOg4YOU4YOR4YOj4YOa4YOYIOGDleGDlOGDmuGDmCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt4YOZ4YOd4YOT4YOY4YOg4YOU4YOR4YOj4YOa4YOYIOGDleGDlOGDmuGDmCIsanNvbl9zdHJpbmc6IkpTT04g4YOV4YOU4YOa4YOYIixlMTY0OiJFLjE2NCDhg5zhg53hg5vhg5Thg6Dhg5giLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLhg6Dhg5jhg6rhg67hg5Xhg5giLHN0cmluZzoi4YOV4YOU4YOa4YOYIixib29sZWFuOiLhg5Hhg6Phg5rhg5Thg5Dhg5zhg5giLGZ1bmN0aW9uOiLhg6Thg6Phg5zhg6Xhg6rhg5jhg5AiLGFycmF5OiLhg5vhg5Dhg6Hhg5jhg5Xhg5gifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDqOGDlOGDp+GDleGDkOGDnOGDkDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg4YOb4YOY4YOm4YOU4YOR4YOj4YOa4YOYICR7c31gOmDhg5Dhg6Dhg5Dhg6Hhg6zhg53hg6Dhg5gg4YOo4YOU4YOn4YOV4YOQ4YOc4YOQOiDhg5vhg53hg6Hhg5Dhg5rhg53hg5Phg5zhg5Thg5rhg5ggJHtpfSwg4YOb4YOY4YOm4YOU4YOR4YOj4YOa4YOYICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2soZS52YWx1ZXNbMF0pfWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Dhg6Dhg5jhg5Dhg5zhg6Lhg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmOGDkCDhg5Thg6Dhg5ct4YOU4YOg4YOX4YOYICR7XyhlLnZhbHVlcywifCIpfS3hg5Phg5Dhg5xgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4YOW4YOU4YOT4YOb4YOU4YOi4YOQ4YOTIOGDk+GDmOGDk+GDmDog4YOb4YOd4YOh4YOQ4YOa4YOd4YOT4YOc4YOU4YOa4YOYICR7ZS5vcmlnaW4/PyLhg5vhg5zhg5jhg6jhg5Xhg5zhg5Thg5rhg53hg5Hhg5AifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg5Phg5jhg5Phg5g6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2luPz8i4YOb4YOc4YOY4YOo4YOV4YOc4YOU4YOa4YOd4YOR4YOQIn0g4YOY4YOn4YOd4YOhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg57hg5Dhg6Lhg5Dhg6Dhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOGDluGDlOGDk+GDm+GDlOGDouGDkOGDkyDhg57hg5Dhg6Lhg5Dhg6Dhg5A6IOGDm+GDneGDoeGDkOGDmuGDneGDk+GDnOGDlOGDmuGDmCAke2Uub3JpZ2lufSDhg5jhg6fhg53hg6EgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg5jhg6zhg6fhg5Thg5Hhg53hg5Phg5Thg6EgIiR7aS5wcmVmaXh9Ii3hg5jhg5dgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg5vhg5fhg5Dhg5Xhg6Dhg5Phg5Thg5Hhg53hg5Phg5Thg6EgIiR7aS5zdWZmaXh9Ii3hg5jhg5dgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDleGDlOGDmuGDmDog4YOj4YOc4YOT4YOQIOGDqOGDlOGDmOGDquGDkOGDleGDk+GDlOGDoSAiJHtpLmluY2x1ZGVzfSIt4YOhYDppLmZvcm1hdD09PSJyZWdleCI/YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg5Xhg5Thg5rhg5g6IOGDo+GDnOGDk+GDkCDhg6jhg5Thg5Thg6Hhg5Dhg5Hhg5Dhg5vhg5Thg5Hhg53hg5Phg5Thg6Eg4YOo4YOQ4YOR4YOa4YOd4YOc4YOhICR7aS5wYXR0ZXJufWA6YOGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDoOGDmOGDquGDruGDleGDmDog4YOj4YOc4YOT4YOQIOGDmOGDp+GDneGDoSAke2UuZGl2aXNvcn0t4YOY4YOhIOGDr+GDlOGDoOGDkOGDk+GDmGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOGDo+GDquGDnOGDneGDkeGDmCDhg5Lhg5Dhg6Hhg5Dhg6bhg5Thg5Eke2Uua2V5cy5sZW5ndGg+MT8i4YOU4YOR4YOYIjoi4YOYIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDkuGDkOGDoeGDkOGDpuGDlOGDkeGDmCAke2Uub3JpZ2lufS3hg6jhg5hgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g4YOQ4YOg4YOQ4YOh4YOs4YOd4YOg4YOYIOGDm+GDnOGDmOGDqOGDleGDnOGDlOGDmuGDneGDkeGDkCAke2Uub3JpZ2lufS3hg6jhg5hgO2RlZmF1bHQ6cmV0dXJuIuGDkOGDoOGDkOGDoeGDrOGDneGDoOGDmCDhg6jhg5Thg6fhg5Xhg5Dhg5zhg5AifX19O2Z1bmN0aW9uIGJmKCl7cmV0dXJue2xvY2FsZUVycm9yOl9mKCl9fWNvbnN0IHlmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLhno/hnr3hnqLhnoDhn5Lhnp/hnpoiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9LGZpbGU6e3VuaXQ6IuGelOGfgyIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn0sYXJyYXk6e3VuaXQ6IuGekuGetuGej+GeuyIsdmVyYjoi4Z6C4Z694Z6a4Z6Y4Z624Z6TIn0sc2V0Ont1bml0OiLhnpLhnrbhno/hnrsiLHZlcmI6IuGeguGeveGemuGemOGetuGekyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpsiLGVtYWlsOiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpPhnqLhn4rhnrjhnpjhn4LhnpsiLHVybDoiVVJMIixlbW9qaToi4Z6f4Z6J4Z+S4Z6J4Z624Z6i4Z624Z6a4Z6Y4Z+S4Z6Y4Z6O4Z+NIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLhnoDhnrbhnpvhnpThnprhnrfhnoXhn5Lhnobhn4HhnpEg4Z6T4Z634Z6E4Z6Y4Z+J4Z+E4Z6EIElTTyIsZGF0ZToi4Z6A4Z624Z6b4Z6U4Z6a4Z634Z6F4Z+S4Z6G4Z+B4Z6RIElTTyIsdGltZToi4Z6Y4Z+J4Z+E4Z6EIElTTyIsZHVyYXRpb246IuGemuGemeGfiOGeluGfgeGemyBJU08iLGlwdjQ6IuGeouGetuGen+GemeGeiuGfkuGei+GetuGekyBJUHY0IixpcHY2OiLhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsY2lkcnY0OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NCIsY2lkcnY2OiLhnorhn4LhnpPhnqLhnrbhnp/hnpnhnorhn5LhnovhnrbhnpMgSVB2NiIsYmFzZTY0OiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnqLhn4rhnrfhnoDhnrzhnoogYmFzZTY0IixiYXNlNjR1cmw6IuGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGeouGfiuGet+GegOGevOGeiiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnpogSlNPTiIsZTE2NDoi4Z6b4Z+B4Z6BIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6bIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4Z6b4Z+B4Z6BIixhcnJheToi4Z6i4Z624Z6a4Z+BIChBcnJheSkiLG51bGw6IuGeguGfkuGemOGetuGek+Gej+GemOGfkuGem+GfgyAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Z6R4Z634Z6T4Z+S4Z6T4Z6T4Z+Q4Z6Z4Z6U4Z6J4Z+S4Z6F4Z684Z6b4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7c31gOmDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpThnonhn5LhnoXhnrzhnpvhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7aX0g4Z6U4Z+J4Z674Z6T4Z+S4Z6P4Z+C4Z6R4Z6R4Z694Z6b4Z6U4Z624Z6TICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOGekeGet+Gek+GfkuGek+Gek+GfkOGemeGelOGeieGfkuGeheGevOGem+GemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtrKGUudmFsdWVzWzBdKX1gOmDhnofhnpjhn5Lhnprhnr7hnp/hnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6H4Z624Z6Y4Z694Z6Z4Z6A4Z+S4Z6T4Z674Z6E4Z6F4Z+G4Z6O4Z+E4Z6YICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DhnpLhn4bhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW4/PyLhno/hnpjhn5Lhnpvhn4MifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i4Z6S4Z624Z6P4Z67In1gOmDhnpLhn4bhnpbhn4HhnoDhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6A4Z624Z6aICR7ZS5vcmlnaW4/PyLhno/hnpjhn5Lhnpvhn4MifSAke2l9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4Z6P4Z684Z6F4Z6W4Z+B4Z6A4Z+WIOGej+GfkuGemuGevOGenOGegOGetuGemiAke2Uub3JpZ2lufSAke2l9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YOGej+GevOGeheGeluGfgeGegOGfliDhno/hn5LhnprhnrzhnpzhnoDhnrbhnpogJHtlLm9yaWdpbn0gJHtpfSAke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6F4Z624Z6U4Z+L4Z6V4Z+S4Z6P4Z6+4Z6Y4Z6K4Z+E4Z6ZICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOGegeGfkuGen+GfguGeouGegOGfkuGen+GemuGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliDhno/hn5LhnprhnrzhnpzhnpThnonhn5LhnoXhnpThn4vhnorhn4ThnpkgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6Y4Z624Z6TICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DhnoHhn5Lhnp/hn4LhnqLhnoDhn5Lhnp/hnprhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5Lhnprhnrzhnpzhn5Yg4Z6P4Z+S4Z6a4Z684Z6c4Z6P4Z+C4Z6V4Z+S4Z6C4Z684Z6V4Z+S4Z6C4Z6E4Z6T4Z654Z6E4Z6R4Z6Y4Z+S4Z6a4Z6E4Z+L4Z6K4Z+C4Z6b4Z6U4Z624Z6T4Z6A4Z+G4Z6O4Z6P4Z+LICR7aS5wYXR0ZXJufWA6YOGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenOGfliAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g4Z6b4Z+B4Z6B4Z6Y4Z634Z6T4Z6P4Z+S4Z6a4Z654Z6Y4Z6P4Z+S4Z6a4Z684Z6c4Z+WIOGej+GfkuGemuGevOGenOGej+GfguGeh+GetuGeluGeoOGeu+GeguGeu+GejuGek+GfgyAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDhnprhnoDhnoPhnr7hnonhnp/hn4ThnpjhnrfhnpPhnp/hn5LhnoLhnrbhnpvhn4vhn5YgJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDhnp/hn4ThnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpzhnpPhn4XhnoDhn5LhnpPhnrvhnoQgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDhnpHhnrfhnpPhn5LhnpPhnpPhn5DhnpnhnpjhnrfhnpPhno/hn5Lhnprhnrnhnpjhno/hn5LhnprhnrzhnpzhnpPhn4XhnoDhn5LhnpPhnrvhnoQgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuGekeGet+Gek+GfkuGek+Gek+GfkOGemeGemOGet+Gek+Gej+GfkuGemuGeueGemOGej+GfkuGemuGevOGenCJ9fX07ZnVuY3Rpb24gdmwoKXtyZXR1cm57bG9jYWxlRXJyb3I6eWYoKX19ZnVuY3Rpb24ga2YoKXtyZXR1cm4gdmwoKX1jb25zdCBTZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi66y47J6QIix2ZXJiOiJ0byBoYXZlIn0sZmlsZTp7dW5pdDoi67CU7J207Yq4Iix2ZXJiOiJ0byBoYXZlIn0sYXJyYXk6e3VuaXQ6IuqwnCIsdmVyYjoidG8gaGF2ZSJ9LHNldDp7dW5pdDoi6rCcIix2ZXJiOiJ0byBoYXZlIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuyeheugpSIsZW1haWw6IuydtOuplOydvCDso7zshowiLHVybDoiVVJMIixlbW9qaToi7J2066qo7KeAIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g64Kg7Kec7Iuc6rCEIixkYXRlOiJJU08g64Kg7KecIix0aW1lOiJJU08g7Iuc6rCEIixkdXJhdGlvbjoiSVNPIOq4sOqwhCIsaXB2NDoiSVB2NCDso7zshowiLGlwdjY6IklQdjYg7KO87IaMIixjaWRydjQ6IklQdjQg67KU7JyEIixjaWRydjY6IklQdjYg67KU7JyEIixiYXNlNjQ6ImJhc2U2NCDsnbjsvZTrlKkg66y47J6Q7Je0IixiYXNlNjR1cmw6ImJhc2U2NHVybCDsnbjsvZTrlKkg66y47J6Q7Je0Iixqc29uX3N0cmluZzoiSlNPTiDrrLjsnpDsl7QiLGUxNjQ6IkUuMTY0IOuyiO2YuCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IuyeheugpSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOyemOuqu+uQnCDsnoXroKU6IOyYiOyDgSDtg4DsnoXsnYAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDrsJvsnYAg7YOA7J6F7J2AICR7c33snoXri4jri6RgOmDsnpjrqrvrkJwg7J6F66ClOiDsmIjsg4Eg7YOA7J6F7J2AICR7aX0sIOuwm+ydgCDtg4DsnoXsnYAgJHtzfeyeheuLiOuLpGB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g7J6Y66q765CcIOyeheugpTog6rCS7J2AICR7ayhlLnZhbHVlc1swXSl9IOydtOyWtOyVvCDtlanri4jri6RgOmDsnpjrqrvrkJwg7Ji17IWYOiAke18oZS52YWx1ZXMsIuuYkOuKlCAiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6RgO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuydtO2VmCI6IuuvuOunjCIsYT1pPT09IuuvuOunjCI/IuydtOyWtOyVvCDtlanri4jri6QiOiLsl6zslbwg7ZWp64uI64ukIixzPW4oZS5vcmlnaW4pLGM9cz8udW5pdD8/IuyalOyGjCI7cmV0dXJuIHM/YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7YG964uI64ukOiAke2UubWF4aW11bS50b1N0cmluZygpfSR7Y30gJHtpfSR7YX1gOmAke2Uub3JpZ2luPz8i6rCSIn3snbQg64SI66y0IO2BveuLiOuLpDogJHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHtpfSR7YX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8i7J207IOBIjoi7LSI6rO8IixhPWk9PT0i7J207IOBIj8i7J207Ja07JW8IO2VqeuLiOuLpCI6IuyXrOyVvCDtlanri4jri6QiLHM9bihlLm9yaWdpbiksYz1zPy51bml0Pz8i7JqU7IaMIjtyZXR1cm4gcz9gJHtlLm9yaWdpbj8/IuqwkiJ97J20IOuEiOustCDsnpHsirXri4jri6Q6ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9JHtjfSAke2l9JHthfWA6YCR7ZS5vcmlnaW4/PyLqsJIifeydtCDrhIjrrLQg7J6R7Iq164uI64ukOiAke2UubWluaW11bS50b1N0cmluZygpfSAke2l9JHthfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiAiJHtpLnByZWZpeH0iKOycvCnroZwg7Iuc7J6R7ZW07JW8IO2VqeuLiOuLpGA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5zdWZmaXh9IijsnLwp66GcIOuBneuCmOyVvCDtlanri4jri6RgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g7J6Y66q765CcIOusuOyekOyXtDogIiR7aS5pbmNsdWRlc30i7J2EKOulvCkg7Y+s7ZWo7ZW07JW8IO2VqeuLiOuLpGA6aS5mb3JtYXQ9PT0icmVnZXgiP2DsnpjrqrvrkJwg66y47J6Q7Je0OiDsoJXqt5zsi50gJHtpLnBhdHRlcm59IO2MqO2EtOqzvCDsnbzsuZjtlbTslbwg7ZWp64uI64ukYDpg7J6Y66q765CcICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDsnpjrqrvrkJwg7Iir7J6QOiAke2UuZGl2aXNvcn3snZgg67Cw7IiY7Jes7JW8IO2VqeuLiOuLpGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOyduOyLne2VoCDsiJgg7JeG64qUIO2CpDogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmDsnpjrqrvrkJwg7YKkOiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i7J6Y66q765CcIOyeheugpSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDsnpjrqrvrkJwg6rCSOiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i7J6Y66q765CcIOyeheugpSJ9fX07ZnVuY3Rpb24gd2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6U2YoKX19Y29uc3QgbXQ9dD0+dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpO2Z1bmN0aW9uIGJzKHQpe2NvbnN0IG49TWF0aC5hYnModCkscj1uJTEwLG89biUxMDA7cmV0dXJuIG8+PTExJiZvPD0xOXx8cj09PTA/Im1hbnkiOnI9PT0xPyJvbmUiOiJmZXcifWNvbnN0IElmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OntvbmU6InNpbWJvbGlzIixmZXc6InNpbWJvbGlhaSIsbWFueToic2ltYm9sacWzIn0sdmVyYjp7c21hbGxlcjp7aW5jbHVzaXZlOiJ0dXJpIGLFq3RpIG5lIGlsZ2VzbsSXIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSB0cnVtcGVzbsSXIGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSB0cnVtcGVzbsSXIGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSBixat0aSBpbGdlc27ElyBrYWlwIn19fSxmaWxlOnt1bml0OntvbmU6ImJhaXRhcyIsZmV3OiJiYWl0YWkiLG1hbnk6ImJhaXTFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBkaWRlc25pcyBrYWlwIixub3RJbmNsdXNpdmU6InR1cmkgYsWrdGkgbWHFvmVzbmlzIGthaXAifSxiaWdnZXI6e2luY2x1c2l2ZToidHVyaSBixat0aSBuZSBtYcW+ZXNuaXMga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIGLFq3RpIGRpZGVzbmlzIGthaXAifX19LGFycmF5Ont1bml0OntvbmU6ImVsZW1lbnTEhSIsZmV3OiJlbGVtZW50dXMiLG1hbnk6ImVsZW1lbnTFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIGRhdWdpYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbWHFvmlhdSBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBtYcW+aWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIGRhdWdpYXUga2FpcCJ9fX0sc2V0Ont1bml0OntvbmU6ImVsZW1lbnTEhSIsZmV3OiJlbGVtZW50dXMiLG1hbnk6ImVsZW1lbnTFsyJ9LHZlcmI6e3NtYWxsZXI6e2luY2x1c2l2ZToidHVyaSB0dXLEl3RpIG5lIGRhdWdpYXUga2FpcCIsbm90SW5jbHVzaXZlOiJ0dXJpIHR1csSXdGkgbWHFvmlhdSBrYWlwIn0sYmlnZ2VyOntpbmNsdXNpdmU6InR1cmkgdHVyxJd0aSBuZSBtYcW+aWF1IGthaXAiLG5vdEluY2x1c2l2ZToidHVyaSB0dXLEl3RpIGRhdWdpYXUga2FpcCJ9fX19O2Z1bmN0aW9uIG4oZSxpLGEscyl7Y29uc3QgYz10W2VdPz9udWxsO3JldHVybiBjPT09bnVsbD9jOnt1bml0OmMudW5pdFtpXSx2ZXJiOmMudmVyYltzXVthPyJpbmNsdXNpdmUiOiJub3RJbmNsdXNpdmUiXX19Y29uc3Qgcj17cmVnZXg6IsSvdmVzdGlzIixlbWFpbDoiZWwuIHBhxaF0byBhZHJlc2FzIix1cmw6IlVSTCIsZW1vamk6ImphdXN0dWthcyIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIGRhdGEgaXIgbGFpa2FzIixkYXRlOiJJU08gZGF0YSIsdGltZToiSVNPIGxhaWthcyIsZHVyYXRpb246IklTTyB0cnVrbcSXIixpcHY0OiJJUHY0IGFkcmVzYXMiLGlwdjY6IklQdjYgYWRyZXNhcyIsY2lkcnY0OiJJUHY0IHRpbmtsbyBwcmVmaWtzYXMgKENJRFIpIixjaWRydjY6IklQdjYgdGlua2xvIHByZWZpa3NhcyAoQ0lEUikiLGJhc2U2NDoiYmFzZTY0IHXFvmtvZHVvdGEgZWlsdXTElyIsYmFzZTY0dXJsOiJiYXNlNjR1cmwgdcW+a29kdW90YSBlaWx1dMSXIixqc29uX3N0cmluZzoiSlNPTiBlaWx1dMSXIixlMTY0OiJFLjE2NCBudW1lcmlzIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixK92ZXN0aXMifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJza2FpxI1pdXMiLGJpZ2ludDoic3ZlaWthc2lzIHNrYWnEjWl1cyIsc3RyaW5nOiJlaWx1dMSXIixib29sZWFuOiJsb2dpbsSXIHJlaWvFoW3ElyIsdW5kZWZpbmVkOiJuZWFwaWJyxJfFvnRhIHJlaWvFoW3ElyIsZnVuY3Rpb246ImZ1bmtjaWphIixzeW1ib2w6InNpbWJvbGlzIixhcnJheToibWFzeXZhcyIsb2JqZWN0OiJvYmpla3RhcyIsbnVsbDoibnVsaW7ElyByZWlrxaFtxJcifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gR2F1dGFzIHRpcGFzICR7c30sIG8gdGlrxJd0YXNpIC0gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9YDpgR2F1dGFzIHRpcGFzICR7c30sIG8gdGlrxJd0YXNpIC0gJHtpfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gUHJpdmFsbyBixat0aSAke2soZS52YWx1ZXNbMF0pfWA6YFByaXZhbG8gYsWrdGkgdmllbmFzIGnFoSAke18oZS52YWx1ZXMsInwiKX0gcGFzaXJpbmtpbcWzYDtjYXNlInRvb19iaWciOntjb25zdCBpPW9bZS5vcmlnaW5dPz9lLm9yaWdpbixhPW4oZS5vcmlnaW4sYnMoTnVtYmVyKGUubWF4aW11bSkpLGUuaW5jbHVzaXZlPz8hMSwic21hbGxlciIpO2lmKGE/LnZlcmIpcmV0dXJuYCR7bXQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gJHthLnZlcmJ9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMWzIn1gO2NvbnN0IHM9ZS5pbmNsdXNpdmU/Im5lIGRpZGVzbmlzIGthaXAiOiJtYcW+ZXNuaXMga2FpcCI7cmV0dXJuYCR7bXQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gdHVyaSBixat0aSAke3N9ICR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YT8udW5pdH1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1vW2Uub3JpZ2luXT8/ZS5vcmlnaW4sYT1uKGUub3JpZ2luLGJzKE51bWJlcihlLm1pbmltdW0pKSxlLmluY2x1c2l2ZT8/ITEsImJpZ2dlciIpO2lmKGE/LnZlcmIpcmV0dXJuYCR7bXQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gJHthLnZlcmJ9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMWzIn1gO2NvbnN0IHM9ZS5pbmNsdXNpdmU/Im5lIG1hxb5lc25pcyBrYWlwIjoiZGlkZXNuaXMga2FpcCI7cmV0dXJuYCR7bXQoaT8/ZS5vcmlnaW4/PyJyZWlrxaFtxJciKX0gdHVyaSBixat0aSAke3N9ICR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YT8udW5pdH1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gRWlsdXTElyBwcml2YWxvIHByYXNpZMSXdGkgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gRWlsdXTElyBwcml2YWxvIHBhc2liYWlndGkgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BFaWx1dMSXIHByaXZhbG8gxK90cmF1a3RpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BFaWx1dMSXIHByaXZhbG8gYXRpdGlrdGkgJHtpLnBhdHRlcm59YDpgTmV0ZWlzaW5nYXMgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYFNrYWnEjWl1cyBwcml2YWxvIGLFq3RpICR7ZS5kaXZpc29yfSBrYXJ0b3RpbmlzLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE5lYXRwYcW+aW50JHtlLmtleXMubGVuZ3RoPjE/ImkiOiJhcyJ9IHJha3Qke2Uua2V5cy5sZW5ndGg+MT8iYWkiOiJhcyJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuIlJhc3RhcyBrbGFpZGluZ2FzIHJha3RhcyI7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iS2xhaWRpbmdhIMSvdmVzdGlzIjtjYXNlImludmFsaWRfZWxlbWVudCI6e2NvbnN0IGk9b1tlLm9yaWdpbl0/P2Uub3JpZ2luO3JldHVybmAke210KGk/P2Uub3JpZ2luPz8icmVpa8WhbcSXIil9IHR1cmkga2xhaWRpbmfEhSDEr3Zlc3TEr2B9ZGVmYXVsdDpyZXR1cm4iS2xhaWRpbmdhIMSvdmVzdGlzIn19fTtmdW5jdGlvbiB6Zigpe3JldHVybntsb2NhbGVFcnJvcjpJZigpfX1jb25zdCB4Zj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0LfQvdCw0YbQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn0sZmlsZTp7dW5pdDoi0LHQsNGY0YLQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn0sYXJyYXk6e3VuaXQ6ItGB0YLQsNCy0LrQuCIsdmVyYjoi0LTQsCDQuNC80LDQsNGCIn0sc2V0Ont1bml0OiLRgdGC0LDQstC60LgiLHZlcmI6ItC00LAg0LjQvNCw0LDRgiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLQstC90LXRgSIsZW1haWw6ItCw0LTRgNC10YHQsCDQvdCwINC1LdC/0L7RiNGC0LAiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0Z/QuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtGD0Lwg0Lgg0LLRgNC10LzQtSIsZGF0ZToiSVNPINC00LDRgtGD0LwiLHRpbWU6IklTTyDQstGA0LXQvNC1IixkdXJhdGlvbjoiSVNPINCy0YDQtdC80LXRgtGA0LDQtdGa0LUiLGlwdjQ6IklQdjQg0LDQtNGA0LXRgdCwIixpcHY2OiJJUHY2INCw0LTRgNC10YHQsCIsY2lkcnY0OiJJUHY0INC+0L/RgdC10LMiLGNpZHJ2NjoiSVB2NiDQvtC/0YHQtdCzIixiYXNlNjQ6ImJhc2U2NC3QtdC90LrQvtC00LjRgNCw0L3QsCDQvdC40LfQsCIsYmFzZTY0dXJsOiJiYXNlNjR1cmwt0LXQvdC60L7QtNC40YDQsNC90LAg0L3QuNC30LAiLGpzb25fc3RyaW5nOiJKU09OINC90LjQt9CwIixlMTY0OiJFLjE2NCDQsdGA0L7RmCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0L3QtdGBIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi0LHRgNC+0ZgiLGFycmF5OiLQvdC40LfQsCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DQk9GA0LXRiNC10L0g0LLQvdC10YE6INGB0LUg0L7Rh9C10LrRg9Cy0LAgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCDQv9GA0LjQvNC10L3QviAke3N9YDpg0JPRgNC10YjQtdC9INCy0L3QtdGBOiDRgdC1INC+0YfQtdC60YPQstCwICR7aX0sINC/0YDQuNC80LXQvdC+ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YEludmFsaWQgaW5wdXQ6IGV4cGVjdGVkICR7ayhlLnZhbHVlc1swXSl9YDpg0JPRgNC10YjQsNC90LAg0L7Qv9GG0LjRmNCwOiDRgdC1INC+0YfQtdC60YPQstCwINC10LTQvdCwICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQn9GA0LXQvNC90L7Qs9GDINCz0L7Qu9C10Lw6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbj8/ItCy0YDQtdC00L3QvtGB0YLQsCJ9INC00LAg0LjQvNCwICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ItC10LvQtdC80LXQvdGC0LgifWA6YNCf0YDQtdC80L3QvtCz0YMg0LPQvtC70LXQvDog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2luPz8i0LLRgNC10LTQvdC+0YHRgtCwIn0g0LTQsCDQsdC40LTQtSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DQn9GA0LXQvNC90L7Qs9GDINC80LDQuzog0YHQtSDQvtGH0LXQutGD0LLQsCAke2Uub3JpZ2lufSDQtNCwINC40LzQsCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0J/RgNC10LzQvdC+0LPRgyDQvNCw0Ls6INGB0LUg0L7Rh9C10LrRg9Cy0LAgJHtlLm9yaWdpbn0g0LTQsCDQsdC40LTQtSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC30LDQv9C+0YfQvdGD0LLQsCDRgdC+ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQstCw0LbQtdGH0LrQsCDQvdC40LfQsDog0LzQvtGA0LAg0LTQsCDQt9Cw0LLRgNGI0YPQstCwINGB0L4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10LLQsNC20LXRh9C60LAg0L3QuNC30LA6INC80L7RgNCwINC00LAg0LLQutC70YPRh9GD0LLQsCAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g0J3QtdCy0LDQttC10YfQutCwINC90LjQt9CwOiDQvNC+0YDQsCDQtNCwINC+0LTQs9C+0LDRgNCwINC90LAg0L/QsNGC0LXRgNC90L7RgiAke2kucGF0dGVybn1gOmBJbnZhbGlkICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQk9GA0LXRiNC10L0g0LHRgNC+0Zg6INC80L7RgNCwINC00LAg0LHQuNC00LUg0LTQtdC70LjQsiDRgdC+ICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYCR7ZS5rZXlzLmxlbmd0aD4xPyLQndC10L/RgNC10L/QvtC30L3QsNC10L3QuCDQutC70YPRh9C10LLQuCI6ItCd0LXQv9GA0LXQv9C+0LfQvdCw0LXQvSDQutC70YPRhyJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCT0YDQtdGI0LXQvSDQutC70YPRhyDQstC+ICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLQk9GA0LXRiNC10L0g0LLQvdC10YEiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0JPRgNC10YjQvdCwINCy0YDQtdC00L3QvtGB0YIg0LLQviAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0JPRgNC10YjQtdC9INCy0L3QtdGBIn19fTtmdW5jdGlvbiBUZigpe3JldHVybntsb2NhbGVFcnJvcjp4ZigpfX1jb25zdCBqZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiYWtzYXJhIix2ZXJiOiJtZW1wdW55YWkifSxmaWxlOnt1bml0OiJiYWl0Iix2ZXJiOiJtZW1wdW55YWkifSxhcnJheTp7dW5pdDoiZWxlbWVuIix2ZXJiOiJtZW1wdW55YWkifSxzZXQ6e3VuaXQ6ImVsZW1lbiIsdmVyYjoibWVtcHVueWFpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ImlucHV0IixlbWFpbDoiYWxhbWF0IGUtbWVsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJ0YXJpa2ggbWFzYSBJU08iLGRhdGU6InRhcmlraCBJU08iLHRpbWU6Im1hc2EgSVNPIixkdXJhdGlvbjoidGVtcG9oIElTTyIsaXB2NDoiYWxhbWF0IElQdjQiLGlwdjY6ImFsYW1hdCBJUHY2IixjaWRydjQ6Imp1bGF0IElQdjQiLGNpZHJ2NjoianVsYXQgSVB2NiIsYmFzZTY0OiJzdHJpbmcgZGlrb2RrYW4gYmFzZTY0IixiYXNlNjR1cmw6InN0cmluZyBkaWtvZGthbiBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiJzdHJpbmcgSlNPTiIsZTE2NDoibm9tYm9yIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW5wdXQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJub21ib3IifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gSW5wdXQgdGlkYWsgc2FoOiBkaWphbmdrYSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGRpdGVyaW1hICR7c31gOmBJbnB1dCB0aWRhayBzYWg6IGRpamFuZ2thICR7aX0sIGRpdGVyaW1hICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YElucHV0IHRpZGFrIHNhaDogZGlqYW5na2EgJHtrKGUudmFsdWVzWzBdKX1gOmBQaWxpaGFuIHRpZGFrIHNhaDogZGlqYW5na2Egc2FsYWggc2F0dSBkYXJpcGFkYSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gVGVybGFsdSBiZXNhcjogZGlqYW5na2EgJHtlLm9yaWdpbj8/Im5pbGFpIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbiJ9YDpgVGVybGFsdSBiZXNhcjogZGlqYW5na2EgJHtlLm9yaWdpbj8/Im5pbGFpIn0gYWRhbGFoICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFRlcmxhbHUga2VjaWw6IGRpamFuZ2thICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgVGVybGFsdSBrZWNpbDogZGlqYW5na2EgJHtlLm9yaWdpbn0gYWRhbGFoICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJtdWxhIGRlbmdhbiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBiZXJha2hpciBkZW5nYW4gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BTdHJpbmcgdGlkYWsgc2FoOiBtZXN0aSBtZW5nYW5kdW5naSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gU3RyaW5nIHRpZGFrIHNhaDogbWVzdGkgc2VwYWRhbiBkZW5nYW4gY29yYWsgJHtpLnBhdHRlcm59YDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9IHRpZGFrIHNhaGB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBOb21ib3IgdGlkYWsgc2FoOiBwZXJsdSBnYW5kYWFuICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEt1bmNpIHRpZGFrIGRpa2VuYWxpOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEt1bmNpIHRpZGFrIHNhaCBkYWxhbSAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW5wdXQgdGlkYWsgc2FoIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5pbGFpIHRpZGFrIHNhaCBkYWxhbSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iSW5wdXQgdGlkYWsgc2FoIn19fTtmdW5jdGlvbiBVZigpe3JldHVybntsb2NhbGVFcnJvcjpqZigpfX1jb25zdCBQZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVrZW5zIix2ZXJiOiJoZWVmdCJ9LGZpbGU6e3VuaXQ6ImJ5dGVzIix2ZXJiOiJoZWVmdCJ9LGFycmF5Ont1bml0OiJlbGVtZW50ZW4iLHZlcmI6ImhlZWZ0In0sc2V0Ont1bml0OiJlbGVtZW50ZW4iLHZlcmI6ImhlZWZ0In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Imludm9lciIsZW1haWw6ImVtYWlsYWRyZXMiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXR1bSBlbiB0aWpkIixkYXRlOiJJU08gZGF0dW0iLHRpbWU6IklTTyB0aWpkIixkdXJhdGlvbjoiSVNPIGR1dXIiLGlwdjQ6IklQdjQtYWRyZXMiLGlwdjY6IklQdjYtYWRyZXMiLGNpZHJ2NDoiSVB2NC1iZXJlaWsiLGNpZHJ2NjoiSVB2Ni1iZXJlaWsiLGJhc2U2NDoiYmFzZTY0LWdlY29kZWVyZGUgdGVrc3QiLGJhc2U2NHVybDoiYmFzZTY0IFVSTC1nZWNvZGVlcmRlIHRla3N0Iixqc29uX3N0cmluZzoiSlNPTiBzdHJpbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Imludm9lciJ9LG89e25hbjoiTmFOIixudW1iZXI6ImdldGFsIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE9uZ2VsZGlnZSBpbnZvZXI6IHZlcndhY2h0IGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgb250dmluZyAke3N9YDpgT25nZWxkaWdlIGludm9lcjogdmVyd2FjaHQgJHtpfSwgb250dmluZyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BPbmdlbGRpZ2UgaW52b2VyOiB2ZXJ3YWNodCAke2soZS52YWx1ZXNbMF0pfWA6YE9uZ2VsZGlnZSBvcHRpZTogdmVyd2FjaHQgw6nDqW4gdmFuICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pLHM9ZS5vcmlnaW49PT0iZGF0ZSI/ImxhYXQiOmUub3JpZ2luPT09InN0cmluZyI/ImxhbmciOiJncm9vdCI7cmV0dXJuIGE/YFRlICR7c306IHZlcndhY2h0IGRhdCAke2Uub3JpZ2luPz8id2FhcmRlIn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudGVuIn0gJHthLnZlcmJ9YDpgVGUgJHtzfTogdmVyd2FjaHQgZGF0ICR7ZS5vcmlnaW4/PyJ3YWFyZGUifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gaXNgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pLHM9ZS5vcmlnaW49PT0iZGF0ZSI/InZyb2VnIjplLm9yaWdpbj09PSJzdHJpbmciPyJrb3J0Ijoia2xlaW4iO3JldHVybiBhP2BUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBUZSAke3N9OiB2ZXJ3YWNodCBkYXQgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9IGlzYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE9uZ2VsZGlnZSB0ZWtzdDogbW9ldCBtZXQgIiR7aS5wcmVmaXh9IiBiZWdpbm5lbmA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gT25nZWxkaWdlIHRla3N0OiBtb2V0IG9wICIke2kuc3VmZml4fSIgZWluZGlnZW5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gT25nZWxkaWdlIHRla3N0OiBtb2V0ICIke2kuaW5jbHVkZXN9IiBiZXZhdHRlbmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BPbmdlbGRpZ2UgdGVrc3Q6IG1vZXQgb3ZlcmVlbmtvbWVuIG1ldCBwYXRyb29uICR7aS5wYXR0ZXJufWA6YE9uZ2VsZGlnOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gT25nZWxkaWcgZ2V0YWw6IG1vZXQgZWVuIHZlZWx2b3VkIHZhbiAke2UuZGl2aXNvcn0gemlqbmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYE9uYmVrZW5kZSBrZXkke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE9uZ2VsZGlnZSBrZXkgaW4gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk9uZ2VsZGlnZSBpbnZvZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gT25nZWxkaWdlIHdhYXJkZSBpbiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iT25nZWxkaWdlIGludm9lciJ9fX07ZnVuY3Rpb24gT2YoKXtyZXR1cm57bG9jYWxlRXJyb3I6UGYoKX19Y29uc3QgRGY9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6InRlZ24iLHZlcmI6IsOlIGhhIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6IsOlIGhhIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnRlciIsdmVyYjoiw6UgaW5uZWhvbGRlIn0sc2V0Ont1bml0OiJlbGVtZW50ZXIiLHZlcmI6IsOlIGlubmVob2xkZSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnB1dCIsZW1haWw6ImUtcG9zdGFkcmVzc2UiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBkYXRvLSBvZyBrbG9ra2VzbGV0dCIsZGF0ZToiSVNPLWRhdG8iLHRpbWU6IklTTy1rbG9ra2VzbGV0dCIsZHVyYXRpb246IklTTy12YXJpZ2hldCIsaXB2NDoiSVB2NC1vbXLDpWRlIixpcHY2OiJJUHY2LW9tcsOlZGUiLGNpZHJ2NDoiSVB2NC1zcGVrdGVyIixjaWRydjY6IklQdjYtc3Bla3RlciIsYmFzZTY0OiJiYXNlNjQtZW5rb2RldCBzdHJlbmciLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVua29kZXQgc3RyZW5nIixqc29uX3N0cmluZzoiSlNPTi1zdHJlbmciLGUxNjQ6IkUuMTY0LW51bW1lciIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoidGFsbCIsYXJyYXk6Imxpc3RlIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFVneWxkaWcgaW5wdXQ6IGZvcnZlbnRldCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpa2sgJHtzfWA6YFVneWxkaWcgaW5wdXQ6IGZvcnZlbnRldCAke2l9LCBmaWtrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YFVneWxkaWcgdmVyZGk6IGZvcnZlbnRldCAke2soZS52YWx1ZXNbMF0pfWA6YFVneWxkaWcgdmFsZzogZm9ydmVudGV0IGVuIGF2ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGb3Igc3Rvcih0KTogZm9ydmVudGV0ICR7ZS5vcmlnaW4/PyJ2YWx1ZSJ9IHRpbCDDpSBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZXIifWA6YEZvciBzdG9yKHQpOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbj8/InZhbHVlIn0gdGlsIMOlIGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEZvciBsaXRlKG4pOiBmb3J2ZW50ZXQgJHtlLm9yaWdpbn0gdGlsIMOlIGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBGb3IgbGl0ZShuKTogZm9ydmVudGV0ICR7ZS5vcmlnaW59IHRpbCDDpSBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gVWd5bGRpZyBzdHJlbmc6IG3DpSBzdGFydGUgbWVkICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFVneWxkaWcgc3RyZW5nOiBtw6UgZW5kZSBtZWQgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BVZ3lsZGlnIHN0cmVuZzogbcOlIGlubmVob2xkZSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVWd5bGRpZyBzdHJlbmc6IG3DpSBtYXRjaGUgbcO4bnN0ZXJldCAke2kucGF0dGVybn1gOmBVZ3lsZGlnICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmBVZ3lsZGlnIHRhbGw6IG3DpSB2w6ZyZSBldCBtdWx0aXBsdW0gYXYgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gJHtlLmtleXMubGVuZ3RoPjE/IlVramVudGUgbsO4a2xlciI6IlVramVudCBuw7hra2VsIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gVWd5bGRpZyBuw7hra2VsIGkgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIlVneWxkaWcgaW5wdXQiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVWd5bGRpZyB2ZXJkaSBpICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJVZ3lsZGlnIGlucHV0In19fTtmdW5jdGlvbiBOZigpe3JldHVybntsb2NhbGVFcnJvcjpEZigpfX1jb25zdCBFZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiaGFyZiIsdmVyYjoib2xtYWzEsWTEsXIifSxmaWxlOnt1bml0OiJiYXl0Iix2ZXJiOiJvbG1hbMSxZMSxciJ9LGFycmF5Ont1bml0OiJ1bnN1ciIsdmVyYjoib2xtYWzEsWTEsXIifSxzZXQ6e3VuaXQ6InVuc3VyIix2ZXJiOiJvbG1hbMSxZMSxciJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJnaXJlbiIsZW1haWw6ImVwb3N0YWfDomgiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBoZW5nw6JtxLEiLGRhdGU6IklTTyB0YXJpaGkiLHRpbWU6IklTTyB6YW1hbsSxIixkdXJhdGlvbjoiSVNPIG3DvGRkZXRpIixpcHY0OiJJUHY0IG5pxZ/Dom7EsSIsaXB2NjoiSVB2NiBuacWfw6JuxLEiLGNpZHJ2NDoiSVB2NCBtZW56aWxpIixjaWRydjY6IklQdjYgbWVuemlsaSIsYmFzZTY0OiJiYXNlNjQtxZ9pZnJlbGkgbWV0aW4iLGJhc2U2NHVybDoiYmFzZTY0dXJsLcWfaWZyZWxpIG1ldGluIixqc29uX3N0cmluZzoiSlNPTiBtZXRpbiIsZTE2NDoiRS4xNjQgc2F5xLFzxLEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJnaXJlbiJ9LG89e25hbjoiTmFOIixudW1iZXI6Im51bWFyYSIsYXJyYXk6InNhZiIsbnVsbDoiZ2F5YiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BGw6JzaXQgZ2lyZW46IHVtdWxhbiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGFsxLFuYW4gJHtzfWA6YEbDonNpdCBnaXJlbjogdW11bGFuICR7aX0sIGFsxLFuYW4gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRsOic2l0IGdpcmVuOiB1bXVsYW4gJHtrKGUudmFsdWVzWzBdKX1gOmBGw6JzaXQgdGVyY2loOiBtw7t0ZWJlcmxlciAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gRmF6bGEgYsO8ecO8azogJHtlLm9yaWdpbj8/InZhbHVlIn0sICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/ImVsZW1lbnRzIn0gc2FoaXAgb2xtYWzEsXlkxLEuYDpgRmF6bGEgYsO8ecO8azogJHtlLm9yaWdpbj8/InZhbHVlIn0sICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSBvbG1hbMSxeWTEsS5gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGYXpsYSBrw7zDp8O8azogJHtlLm9yaWdpbn0sICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH0gc2FoaXAgb2xtYWzEsXlkxLEuYDpgRmF6bGEga8O8w6fDvGs6ICR7ZS5vcmlnaW59LCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gb2xtYWzEsXlkxLEuYH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEbDonNpdCBtZXRpbjogIiR7aS5wcmVmaXh9IiBpbGUgYmHFn2xhbWFsxLEuYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BGw6JzaXQgbWV0aW46ICIke2kuc3VmZml4fSIgaWxlIGJpdG1lbGkuYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YEbDonNpdCBtZXRpbjogIiR7aS5pbmNsdWRlc30iIGlodGl2w6IgZXRtZWxpLmA6aS5mb3JtYXQ9PT0icmVnZXgiP2BGw6JzaXQgbWV0aW46ICR7aS5wYXR0ZXJufSBuYWvFn8SxbmEgdXltYWzEsS5gOmBGw6JzaXQgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYEbDonNpdCBzYXnEsTogJHtlLmRpdmlzb3J9IGthdMSxIG9sbWFsxLF5ZMSxLmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYFRhbsSxbm1heWFuIGFuYWh0YXIgJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmAke2Uub3JpZ2lufSBpw6dpbiB0YW7EsW5tYXlhbiBhbmFodGFyIHZhci5gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkdpcmVuIHRhbsSxbmFtYWTEsS4iO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW4gdGFuxLFubWF5YW4ga8SxeW1ldCB2YXIuYDtkZWZhdWx0OnJldHVybiJLxLF5bWV0IHRhbsSxbmFtYWTEsS4ifX19O2Z1bmN0aW9uIFpmKCl7cmV0dXJue2xvY2FsZUVycm9yOkVmKCl9fWNvbnN0IFJmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifSxmaWxlOnt1bml0OiLYqNin24zZvNizIix2ZXJiOiLZiNmE2LHZiiJ9LGFycmF5Ont1bml0OiLYqtmI2qnZiiIsdmVyYjoi2YjZhNix2YoifSxzZXQ6e3VuaXQ6Itiq2YjaqdmKIix2ZXJiOiLZiNmE2LHZiiJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLZiNix2YjYr9mKIixlbWFpbDoi2KjYsduM2prZhtin2YTbjNqpIix1cmw6ItuM2Ygg2KLYsSDYp9mEIixlbW9qaToi2KfbjNmF2YjYrNmKIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLZhtuM2bzZhyDYp9mIINmI2K7YqiIsZGF0ZToi2YbbkNm82YciLHRpbWU6ItmI2K7YqiIsZHVyYXRpb246ItmF2YjYr9mHIixpcHY0OiLYryBJUHY0INm+2KrZhyIsaXB2Njoi2K8gSVB2NiDZvtiq2YciLGNpZHJ2NDoi2K8gSVB2NCDYs9in2K3ZhyIsY2lkcnY2OiLYryBJUHY2INiz2KfYrdmHIixiYXNlNjQ6ImJhc2U2NC1lbmNvZGVkINmF2KrZhiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwtZW5jb2RlZCDZhdiq2YYiLGpzb25fc3RyaW5nOiJKU09OINmF2KrZhiIsZTE2NDoi2K8gRS4xNjQg2LTZhduQ2LHZhyIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItmI2LHZiNiv2YoifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLYudiv2K8iLGFycmF5OiLYp9ix25AifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g2YbYp9iz2YUg2YjYsdmI2K/Zijog2KjYp9uM2K8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9INmI2KfbjCwg2YXaq9ixICR7c30g2KrYsdmE2KfYs9mHINi02YhgOmDZhtin2LPZhSDZiNix2YjYr9mKOiDYqNin24zYryAke2l9INmI2KfbjCwg2YXaq9ixICR7c30g2KrYsdmE2KfYs9mHINi02YhgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNmG2KfYs9mFINmI2LHZiNiv2Yo6INio2KfbjNivICR7ayhlLnZhbHVlc1swXSl9INmI2KfbjGA6YNmG2KfYs9mFINin2YbYqtiu2KfYqDog2KjYp9uM2K8g24zZiCDZhNmHICR7XyhlLnZhbHVlcywifCIpfSDahdiu2Ycg2YjYp9uMYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNqJ24zYsSDZhNmI24w6ICR7ZS5vcmlnaW4/PyLYp9ix2LLamtiqIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i2LnZhti12LHZiNmG2YcifSDZiNmE2LHZimA6YNqJ24zYsSDZhNmI24w6ICR7ZS5vcmlnaW4/PyLYp9ix2LLamtiqIn0g2KjYp9uM2K8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9INmI2YpgfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DaiduM2LEg2qnZiNqG2YbbjDogJHtlLm9yaWdpbn0g2KjYp9uM2K8gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDZiNmE2LHZimA6YNqJ24zYsSDaqdmI2obZhtuMOiAke2Uub3JpZ2lufSDYqNin24zYryAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g2YjZimB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2kucHJlZml4fSIg2LPYsdmHINm+24zZhCDYtNmKYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICIke2kuc3VmZml4fSIg2LPYsdmHINm+2KfbjCDYqtmHINmI2LHYs9mK2pbZimA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivICIke2kuaW5jbHVkZXN9IiDZiNmE2LHZimA6aS5mb3JtYXQ9PT0icmVnZXgiP2DZhtin2LPZhSDZhdiq2YY6INio2KfbjNivINivICR7aS5wYXR0ZXJufSDYs9ix2Ycg2YXYt9in2KjZgtiqINmI2YTYsdmKYDpgJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9INmG2KfYs9mFINiv24xgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g2YbYp9iz2YUg2LnYr9ivOiDYqNin24zYryDYryAke2UuZGl2aXNvcn0g2YXYttix2Kgg2YjZimA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNmG2KfYs9mFICR7ZS5rZXlzLmxlbmd0aD4xPyLaqdmE24zaidmI2YbZhyI6Itqp2YTbjNqJIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g2YbYp9iz2YUg2qnZhNuM2okg2b7ZhyAke2Uub3JpZ2lufSDaqduQYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLZhtin2LPZhdmHINmI2LHZiNiv2YoiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g2YbYp9iz2YUg2LnZhti12LEg2b7ZhyAke2Uub3JpZ2lufSDaqduQYDtkZWZhdWx0OnJldHVybiLZhtin2LPZhdmHINmI2LHZiNiv2YoifX19O2Z1bmN0aW9uIENmKCl7cmV0dXJue2xvY2FsZUVycm9yOlJmKCl9fWNvbnN0IEFmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrw7N3Iix2ZXJiOiJtaWXEhyJ9LGZpbGU6e3VuaXQ6ImJhanTDs3ciLHZlcmI6Im1pZcSHIn0sYXJyYXk6e3VuaXQ6ImVsZW1lbnTDs3ciLHZlcmI6Im1pZcSHIn0sc2V0Ont1bml0OiJlbGVtZW50w7N3Iix2ZXJiOiJtaWXEhyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJ3eXJhxbxlbmllIixlbWFpbDoiYWRyZXMgZW1haWwiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6ImRhdGEgaSBnb2R6aW5hIHcgZm9ybWFjaWUgSVNPIixkYXRlOiJkYXRhIHcgZm9ybWFjaWUgSVNPIix0aW1lOiJnb2R6aW5hIHcgZm9ybWFjaWUgSVNPIixkdXJhdGlvbjoiY3phcyB0cndhbmlhIElTTyIsaXB2NDoiYWRyZXMgSVB2NCIsaXB2NjoiYWRyZXMgSVB2NiIsY2lkcnY0OiJ6YWtyZXMgSVB2NCIsY2lkcnY2OiJ6YWtyZXMgSVB2NiIsYmFzZTY0OiJjacSFZyB6bmFrw7N3IHpha29kb3dhbnkgdyBmb3JtYWNpZSBiYXNlNjQiLGJhc2U2NHVybDoiY2nEhWcgem5ha8OzdyB6YWtvZG93YW55IHcgZm9ybWFjaWUgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2nEhWcgem5ha8OzdyB3IGZvcm1hY2llIEpTT04iLGUxNjQ6ImxpY3piYSBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6IndlasWbY2llIn0sbz17bmFuOiJOYU4iLG51bWJlcjoibGljemJhIixhcnJheToidGFibGljYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOaWVwcmF3aWTFgm93ZSBkYW5lIHdlasWbY2lvd2U6IG9jemVraXdhbm8gaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9LCBvdHJ6eW1hbm8gJHtzfWA6YE5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZTogb2N6ZWtpd2FubyAke2l9LCBvdHJ6eW1hbm8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlOiBvY3pla2l3YW5vICR7ayhlLnZhbHVlc1swXSl9YDpgTmllcHJhd2lkxYJvd2Egb3BjamE6IG9jemVraXdhbm8gamVkbmVqIHogd2FydG/Fm2NpICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BaYSBkdcW8YSB3YXJ0b8WbxIc6IG9jemVraXdhbm8sIMW8ZSAke2Uub3JpZ2luPz8id2FydG/Fm8SHIn0gYsSZZHppZSBtaWXEhyAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50w7N3In1gOmBaYnl0IGR1xbwoeS9hL2UpOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgd3lub3NpxIcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gWmEgbWHFgmEgd2FydG/Fm8SHOiBvY3pla2l3YW5vLCDFvGUgJHtlLm9yaWdpbj8/IndhcnRvxZvEhyJ9IGLEmWR6aWUgbWllxIcgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudMOzdyJ9YDpgWmJ5dCBtYcWCKHkvYS9lKTogb2N6ZWtpd2FubywgxbxlICR7ZS5vcmlnaW4/PyJ3YXJ0b8WbxIcifSBixJlkemllIHd5bm9zacSHICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphY3p5bmHEhyBzacSZIG9kICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YE5pZXByYXdpZMWCb3d5IGNpxIVnIHpuYWvDs3c6IG11c2kga2/FhGN6ecSHIHNpxJkgbmEgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BOaWVwcmF3aWTFgm93eSBjacSFZyB6bmFrw7N3OiBtdXNpIHphd2llcmHEhyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gTmllcHJhd2lkxYJvd3kgY2nEhWcgem5ha8OzdzogbXVzaSBvZHBvd2lhZGHEhyB3em9yY293aSAke2kucGF0dGVybn1gOmBOaWVwcmF3aWTFgm93KHkvYS9lKSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTmllcHJhd2lkxYJvd2EgbGljemJhOiBtdXNpIGJ5xIcgd2llbG9rcm90bm/Fm2NpxIUgJHtlLmRpdmlzb3J9YDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5gTmllcm96cG96bmFuZSBrbHVjemUke2Uua2V5cy5sZW5ndGg+MT8icyI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE5pZXByYXdpZMWCb3d5IGtsdWN6IHcgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIk5pZXByYXdpZMWCb3dlIGRhbmUgd2VqxZtjaW93ZSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBOaWVwcmF3aWTFgm93YSB3YXJ0b8WbxIcgdyAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmllcHJhd2lkxYJvd2UgZGFuZSB3ZWrFm2Npb3dlIn19fTtmdW5jdGlvbiBMZigpe3JldHVybntsb2NhbGVFcnJvcjpBZigpfX1jb25zdCBNZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlcyIsdmVyYjoidGVyIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6InRlciJ9LGFycmF5Ont1bml0OiJpdGVucyIsdmVyYjoidGVyIn0sc2V0Ont1bml0OiJpdGVucyIsdmVyYjoidGVyIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InBhZHLDo28iLGVtYWlsOiJlbmRlcmXDp28gZGUgZS1tYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJkYXRhIGUgaG9yYSBJU08iLGRhdGU6ImRhdGEgSVNPIix0aW1lOiJob3JhIElTTyIsZHVyYXRpb246ImR1cmHDp8OjbyBJU08iLGlwdjQ6ImVuZGVyZcOnbyBJUHY0IixpcHY2OiJlbmRlcmXDp28gSVB2NiIsY2lkcnY0OiJmYWl4YSBkZSBJUHY0IixjaWRydjY6ImZhaXhhIGRlIElQdjYiLGJhc2U2NDoidGV4dG8gY29kaWZpY2FkbyBlbSBiYXNlNjQiLGJhc2U2NHVybDoiVVJMIGNvZGlmaWNhZGEgZW0gYmFzZTY0Iixqc29uX3N0cmluZzoidGV4dG8gSlNPTiIsZTE2NDoibsO6bWVybyBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImVudHJhZGEifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJuw7ptZXJvIixudWxsOiJudWxvIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YFRpcG8gaW52w6FsaWRvOiBlc3BlcmFkbyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHJlY2ViaWRvICR7c31gOmBUaXBvIGludsOhbGlkbzogZXNwZXJhZG8gJHtpfSwgcmVjZWJpZG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gRW50cmFkYSBpbnbDoWxpZGE6IGVzcGVyYWRvICR7ayhlLnZhbHVlc1swXSl9YDpgT3DDp8OjbyBpbnbDoWxpZGE6IGVzcGVyYWRhIHVtYSBkYXMgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YE11aXRvIGdyYW5kZTogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW4/PyJ2YWxvciJ9IHRpdmVzc2UgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG9zIn1gOmBNdWl0byBncmFuZGU6IGVzcGVyYWRvIHF1ZSAke2Uub3JpZ2luPz8idmFsb3IifSBmb3NzZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BNdWl0byBwZXF1ZW5vOiBlc3BlcmFkbyBxdWUgJHtlLm9yaWdpbn0gdGl2ZXNzZSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgTXVpdG8gcGVxdWVubzogZXNwZXJhZG8gcXVlICR7ZS5vcmlnaW59IGZvc3NlICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgY29tZcOnYXIgY29tICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YFRleHRvIGludsOhbGlkbzogZGV2ZSB0ZXJtaW5hciBjb20gIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BUZXh0byBpbnbDoWxpZG86IGRldmUgaW5jbHVpciAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gVGV4dG8gaW52w6FsaWRvOiBkZXZlIGNvcnJlc3BvbmRlciBhbyBwYWRyw6NvICR7aS5wYXR0ZXJufWA6YCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fSBpbnbDoWxpZG9gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTsO6bWVybyBpbnbDoWxpZG86IGRldmUgc2VyIG3Dumx0aXBsbyBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGF2ZSR7ZS5rZXlzLmxlbmd0aD4xPyJzIjoiIn0gZGVzY29uaGVjaWRhJHtlLmtleXMubGVuZ3RoPjE/InMiOiIifTogJHtfKGUua2V5cywiLCAiKX1gO2Nhc2UiaW52YWxpZF9rZXkiOnJldHVybmBDaGF2ZSBpbnbDoWxpZGEgZW0gJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkVudHJhZGEgaW52w6FsaWRhIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYFZhbG9yIGludsOhbGlkbyBlbSAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iQ2FtcG8gaW52w6FsaWRvIn19fTtmdW5jdGlvbiBxZigpe3JldHVybntsb2NhbGVFcnJvcjpNZigpfX1jb25zdCBGZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiY2FyYWN0ZXJlIix2ZXJiOiJzxIMgYWlixIMifSxmaWxlOnt1bml0OiJvY3RlyJtpIix2ZXJiOiJzxIMgYWlixIMifSxhcnJheTp7dW5pdDoiZWxlbWVudGUiLHZlcmI6InPEgyBhaWLEgyJ9LHNldDp7dW5pdDoiZWxlbWVudGUiLHZlcmI6InPEgyBhaWLEgyJ9LG1hcDp7dW5pdDoiaW50csSDcmkiLHZlcmI6InPEgyBhaWLEgyJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiJpbnRyYXJlIixlbWFpbDoiYWRyZXPEgyBkZSBlbWFpbCIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiZGF0xIMgyJlpIG9yxIMgSVNPIixkYXRlOiJkYXTEgyBJU08iLHRpbWU6Im9yxIMgSVNPIixkdXJhdGlvbjoiZHVyYXTEgyBJU08iLGlwdjQ6ImFkcmVzxIMgSVB2NCIsaXB2NjoiYWRyZXPEgyBJUHY2IixtYWM6ImFkcmVzxIMgTUFDIixjaWRydjQ6ImludGVydmFsIElQdjQiLGNpZHJ2NjoiaW50ZXJ2YWwgSVB2NiIsYmFzZTY0OiLImWlyIGNvZGF0IGJhc2U2NCIsYmFzZTY0dXJsOiLImWlyIGNvZGF0IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IsiZaXIgSlNPTiIsZTE2NDoibnVtxINyIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoiaW50cmFyZSJ9LG89e25hbjoiTmFOIixzdHJpbmc6IsiZaXIiLG51bWJlcjoibnVtxINyIixib29sZWFuOiJib29sZWFuIixmdW5jdGlvbjoiZnVuY8ibaWUiLGFycmF5OiJtYXRyaWNlIixvYmplY3Q6Im9iaWVjdCIsdW5kZWZpbmVkOiJuZWRlZmluaXQiLHN5bWJvbDoic2ltYm9sIixiaWdpbnQ6Im51bcSDciBtYXJlIix2b2lkOiJ2b2lkIixuZXZlcjoibmV2ZXIiLG1hcDoiaGFydMSDIixzZXQ6InNldCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm5gSW50cmFyZSBpbnZhbGlkxIM6IGHImXRlcHRhdCAke2l9LCBwcmltaXQgJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gSW50cmFyZSBpbnZhbGlkxIM6IGHImXRlcHRhdCAke2soZS52YWx1ZXNbMF0pfWA6YE9wyJtpdW5lIGludmFsaWTEgzogYciZdGVwdGF0IHVuYSBkaW50cmUgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YFByZWEgbWFyZTogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW4/PyJ2YWxvYXJlYSJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50ZSJ9YDpgUHJlYSBtYXJlOiBhyJl0ZXB0YXQgY2EgJHtlLm9yaWdpbj8/InZhbG9hcmVhIn0gc8SDIGZpZSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmVhIG1pYzogYciZdGVwdGF0IGNhICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgUHJlYSBtaWM6IGHImXRlcHRhdCBjYSAke2Uub3JpZ2lufSBzxIMgZmllICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIMOubmNlYXDEgyBjdSAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIHNlIHRlcm1pbmUgY3UgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIGluY2x1ZMSDICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DImGlyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIHNlIHBvdHJpdmVhc2PEgyBjdSBtb2RlbHVsICR7aS5wYXR0ZXJufWA6YEZvcm1hdCBpbnZhbGlkOiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTnVtxINyIGludmFsaWQ6IHRyZWJ1aWUgc8SDIGZpZSBtdWx0aXBsdSBkZSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBDaGVpIG5lcmVjdW5vc2N1dGU6ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQ2hlaWUgaW52YWxpZMSDIMOubiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iSW50cmFyZSBpbnZhbGlkxIMiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gVmFsb2FyZSBpbnZhbGlkxIMgw65uICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiJJbnRyYXJlIGludmFsaWTEgyJ9fX07ZnVuY3Rpb24gSmYoKXtyZXR1cm57bG9jYWxlRXJyb3I6RmYoKX19ZnVuY3Rpb24geXModCxuLHIsbyl7Y29uc3QgZT1NYXRoLmFicyh0KSxpPWUlMTAsYT1lJTEwMDtyZXR1cm4gYT49MTEmJmE8PTE5P286aT09PTE/bjppPj0yJiZpPD00P3I6b31jb25zdCBIZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDp7b25lOiLRgdC40LzQstC+0LsiLGZldzoi0YHQuNC80LLQvtC70LAiLG1hbnk6ItGB0LjQvNCy0L7Qu9C+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sZmlsZTp7dW5pdDp7b25lOiLQsdCw0LnRgiIsZmV3OiLQsdCw0LnRgtCwIixtYW55OiLQsdCw0LnRgiJ9LHZlcmI6ItC40LzQtdGC0YwifSxhcnJheTp7dW5pdDp7b25lOiLRjdC70LXQvNC10L3RgiIsZmV3OiLRjdC70LXQvNC10L3RgtCwIixtYW55OiLRjdC70LXQvNC10L3RgtC+0LIifSx2ZXJiOiLQuNC80LXRgtGMIn0sc2V0Ont1bml0OntvbmU6ItGN0LvQtdC80LXQvdGCIixmZXc6ItGN0LvQtdC80LXQvdGC0LAiLG1hbnk6ItGN0LvQtdC80LXQvdGC0L7QsiJ9LHZlcmI6ItC40LzQtdGC0YwifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi0LLQstC+0LQiLGVtYWlsOiJlbWFpbCDQsNC00YDQtdGBIix1cmw6IlVSTCIsZW1vamk6ItGN0LzQvtC00LfQuCIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPINC00LDRgtCwINC4INCy0YDQtdC80Y8iLGRhdGU6IklTTyDQtNCw0YLQsCIsdGltZToiSVNPINCy0YDQtdC80Y8iLGR1cmF0aW9uOiJJU08g0LTQu9C40YLQtdC70YzQvdC+0YHRgtGMIixpcHY0OiJJUHY0INCw0LTRgNC10YEiLGlwdjY6IklQdjYg0LDQtNGA0LXRgSIsY2lkcnY0OiJJUHY0INC00LjQsNC/0LDQt9C+0L0iLGNpZHJ2NjoiSVB2NiDQtNC40LDQv9Cw0LfQvtC9IixiYXNlNjQ6ItGB0YLRgNC+0LrQsCDQsiDRhNC+0YDQvNCw0YLQtSBiYXNlNjQiLGJhc2U2NHVybDoi0YHRgtGA0L7QutCwINCyINGE0L7RgNC80LDRgtC1IGJhc2U2NHVybCIsanNvbl9zdHJpbmc6IkpTT04g0YHRgtGA0L7QutCwIixlMTY0OiLQvdC+0LzQtdGAIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi0LLQstC+0LQifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLRh9C40YHQu9C+IixhcnJheToi0LzQsNGB0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC/0L7Qu9GD0YfQtdC90L4gJHtzfWA6YNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCAke2l9LCDQv9C+0LvRg9GH0LXQvdC+ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0LXQstC10YDQvdGL0Lkg0LLQstC+0LQ6INC+0LbQuNC00LDQu9C+0YHRjCAke2soZS52YWx1ZXNbMF0pfWA6YNCd0LXQstC10YDQvdGL0Lkg0LLQsNGA0LjQsNC90YI6INC+0LbQuNC00LDQu9C+0YHRjCDQvtC00L3QviDQuNC3ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO2lmKGEpe2NvbnN0IHM9TnVtYmVyKGUubWF4aW11bSksYz15cyhzLGEudW5pdC5vbmUsYS51bml0LmZldyxhLnVuaXQubWFueSk7cmV0dXJuYNCh0LvQuNGI0LrQvtC8INCx0L7Qu9GM0YjQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QuNC1In0g0LHRg9C00LXRgiDQuNC80LXRgtGMICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2N9YH1yZXR1cm5g0KHQu9C40YjQutC+0Lwg0LHQvtC70YzRiNC+0LUg0LfQvdCw0YfQtdC90LjQtTog0L7QttC40LTQsNC70L7RgdGMLCDRh9GC0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC40LUifSDQsdGD0LTQtdGCICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7aWYoYSl7Y29uc3Qgcz1OdW1iZXIoZS5taW5pbXVtKSxjPXlzKHMsYS51bml0Lm9uZSxhLnVuaXQuZmV3LGEudW5pdC5tYW55KTtyZXR1cm5g0KHQu9C40YjQutC+0Lwg0LzQsNC70LXQvdGM0LrQvtC1INC30L3QsNGH0LXQvdC40LU6INC+0LbQuNC00LDQu9C+0YHRjCwg0YfRgtC+ICR7ZS5vcmlnaW59INCx0YPQtNC10YIg0LjQvNC10YLRjCAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHtjfWB9cmV0dXJuYNCh0LvQuNGI0LrQvtC8INC80LDQu9C10L3RjNC60L7QtSDQt9C90LDRh9C10L3QuNC1OiDQvtC20LjQtNCw0LvQvtGB0YwsINGH0YLQviAke2Uub3JpZ2lufSDQsdGD0LTQtdGCICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINC90LDRh9C40L3QsNGC0YzRgdGPINGBICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0LfQsNC60LDQvdGH0LjQstCw0YLRjNGB0Y8g0L3QsCAiJHtpLnN1ZmZpeH0iYDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YNCd0LXQstC10YDQvdCw0Y8g0YHRgtGA0L7QutCwOiDQtNC+0LvQttC90LAg0YHQvtC00LXRgNC20LDRgtGMICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DQndC10LLQtdGA0L3QsNGPINGB0YLRgNC+0LrQsDog0LTQvtC70LbQvdCwINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRiNCw0LHQu9C+0L3RgyAke2kucGF0dGVybn1gOmDQndC10LLQtdGA0L3Ri9C5ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDQndC10LLQtdGA0L3QvtC1INGH0LjRgdC70L46INC00L7Qu9C20L3QviDQsdGL0YLRjCDQutGA0LDRgtC90YvQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQsNGB0L/QvtC30L3QsNC90L0ke2Uua2V5cy5sZW5ndGg+MT8i0YvQtSI6ItGL0LkifSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLQuCI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQstC10YDQvdGL0Lkg0LrQu9GO0Ycg0LIgJHtlLm9yaWdpbn1gO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuItCd0LXQstC10YDQvdGL0LUg0LLRhdC+0LTQvdGL0LUg0LTQsNC90L3Ri9C1IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYNCd0LXQstC10YDQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4i0J3QtdCy0LXRgNC90YvQtSDQstGF0L7QtNC90YvQtSDQtNCw0L3QvdGL0LUifX19O2Z1bmN0aW9uIFZmKCl7cmV0dXJue2xvY2FsZUVycm9yOkhmKCl9fWNvbnN0IEtmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJ6bmFrb3YiLHZlcmI6ImltZXRpIn0sZmlsZTp7dW5pdDoiYmFqdG92Iix2ZXJiOiJpbWV0aSJ9LGFycmF5Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn0sc2V0Ont1bml0OiJlbGVtZW50b3YiLHZlcmI6ImltZXRpIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6InZub3MiLGVtYWlsOiJlLXBvxaF0bmkgbmFzbG92Iix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08gZGF0dW0gaW4gxI1hcyIsZGF0ZToiSVNPIGRhdHVtIix0aW1lOiJJU08gxI1hcyIsZHVyYXRpb246IklTTyB0cmFqYW5qZSIsaXB2NDoiSVB2NCBuYXNsb3YiLGlwdjY6IklQdjYgbmFzbG92IixjaWRydjQ6Im9ic2VnIElQdjQiLGNpZHJ2Njoib2JzZWcgSVB2NiIsYmFzZTY0OiJiYXNlNjQga29kaXJhbiBuaXoiLGJhc2U2NHVybDoiYmFzZTY0dXJsIGtvZGlyYW4gbml6Iixqc29uX3N0cmluZzoiSlNPTiBuaXoiLGUxNjQ6IkUuMTY0IMWhdGV2aWxrYSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6InZub3MifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLFoXRldmlsbyIsYXJyYXk6InRhYmVsYSJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2BOZXZlbGphdmVuIHZub3M6IHByacSNYWtvdmFubyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIHByZWpldG8gJHtzfWA6YE5ldmVsamF2ZW4gdm5vczogcHJpxI1ha292YW5vICR7aX0sIHByZWpldG8gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gTmV2ZWxqYXZlbiB2bm9zOiBwcmnEjWFrb3Zhbm8gJHtrKGUudmFsdWVzWzBdKX1gOmBOZXZlbGphdm5hIG1vxb5ub3N0OiBwcmnEjWFrb3Zhbm8gZW5vIGl6bWVkICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gaW1lbG8gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8iZWxlbWVudG92In1gOmBQcmV2ZWxpa286IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbj8/InZyZWRub3N0In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gUHJlbWFqaG5vOiBwcmnEjWFrb3Zhbm8sIGRhIGJvICR7ZS5vcmlnaW59IGltZWxvICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBQcmVtYWpobm86IHByacSNYWtvdmFubywgZGEgYm8gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5ldmVsamF2ZW4gbml6OiBtb3JhIHNlIHphxI1ldGkgeiAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BOZXZlbGphdmVuIG5pejogbW9yYSBzZSBrb27EjWF0aSB6ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTmV2ZWxqYXZlbiBuaXo6IG1vcmEgdnNlYm92YXRpICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BOZXZlbGphdmVuIG5pejogbW9yYSB1c3RyZXphdGkgdnpvcmN1ICR7aS5wYXR0ZXJufWA6YE5ldmVsamF2ZW4gJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE5ldmVsamF2bm8gxaF0ZXZpbG86IG1vcmEgYml0aSB2ZcSNa3JhdG5payAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOZXByZXBvem5hbiR7ZS5rZXlzLmxlbmd0aD4xPyJpIGtsanXEjWkiOiIga2xqdcSNIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gTmV2ZWxqYXZlbiBrbGp1xI0gdiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTmV2ZWxqYXZlbiB2bm9zIjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYE5ldmVsamF2bmEgdnJlZG5vc3QgdiAke2Uub3JpZ2lufWA7ZGVmYXVsdDpyZXR1cm4iTmV2ZWxqYXZlbiB2bm9zIn19fTtmdW5jdGlvbiBCZigpe3JldHVybntsb2NhbGVFcnJvcjpLZigpfX1jb25zdCBXZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoidGVja2VuIix2ZXJiOiJhdHQgaGEifSxmaWxlOnt1bml0OiJieXRlcyIsdmVyYjoiYXR0IGhhIn0sYXJyYXk6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifSxzZXQ6e3VuaXQ6Im9iamVrdCIsdmVyYjoiYXR0IGlubmVow6VsbGEifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoicmVndWxqw6RydCB1dHRyeWNrIixlbWFpbDoiZS1wb3N0YWRyZXNzIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08tZGF0dW0gb2NoIHRpZCIsZGF0ZToiSVNPLWRhdHVtIix0aW1lOiJJU08tdGlkIixkdXJhdGlvbjoiSVNPLXZhcmFrdGlnaGV0IixpcHY0OiJJUHY0LWludGVydmFsbCIsaXB2NjoiSVB2Ni1pbnRlcnZhbGwiLGNpZHJ2NDoiSVB2NC1zcGVrdHJ1bSIsY2lkcnY2OiJJUHY2LXNwZWt0cnVtIixiYXNlNjQ6ImJhc2U2NC1rb2RhZCBzdHLDpG5nIixiYXNlNjR1cmw6ImJhc2U2NHVybC1rb2RhZCBzdHLDpG5nIixqc29uX3N0cmluZzoiSlNPTi1zdHLDpG5nIixlMTY0OiJFLjE2NC1udW1tZXIiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiJtYWxsLWxpdGVyYWwifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJhbnRhbCIsYXJyYXk6Imxpc3RhIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIGZpY2sgJHtzfWA6YE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCAke2l9LCBmaWNrICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YE9naWx0aWcgaW5tYXRuaW5nOiBmw7ZydsOkbnRhdCAke2soZS52YWx1ZXNbMF0pfWA6YE9naWx0aWd0IHZhbDogZsO2cnbDpG50YWRlIGVuIGF2ICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJlbGVtZW50In1gOmBGw7ZyIHN0b3IodCk6IGbDtnJ2w6RudGF0ICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyI+PSI6Ij4iLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEbDtnIgbGl0ZSh0KTogZsO2cnbDpG50YWRlICR7ZS5vcmlnaW4/PyJ2w6RyZGV0In0gYXR0IGhhICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmBGw7ZyIGxpdGUodCk6IGbDtnJ2w6RudGFkZSAke2Uub3JpZ2luPz8idsOkcmRldCJ9IGF0dCBoYSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9gT2dpbHRpZyBzdHLDpG5nOiBtw6VzdGUgYsO2cmphIG1lZCAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBzbHV0YSBtZWQgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBpbm5laMOlbGxhICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2BPZ2lsdGlnIHN0csOkbmc6IG3DpXN0ZSBtYXRjaGEgbcO2bnN0cmV0ICIke2kucGF0dGVybn0iYDpgT2dpbHRpZyh0KSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gT2dpbHRpZ3QgdGFsOiBtw6VzdGUgdmFyYSBlbiBtdWx0aXBlbCBhdiAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmAke2Uua2V5cy5sZW5ndGg+MT8iT2vDpG5kYSBueWNrbGFyIjoiT2vDpG5kIG55Y2tlbCJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYE9naWx0aWcgbnlja2VsIGkgJHtlLm9yaWdpbj8/InbDpHJkZXQifWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iT2dpbHRpZyBpbnB1dCI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBPZ2lsdGlndCB2w6RyZGUgaSAke2Uub3JpZ2luPz8idsOkcmRldCJ9YDtkZWZhdWx0OnJldHVybiJPZ2lsdGlnIGlucHV0In19fTtmdW5jdGlvbiBHZigpe3JldHVybntsb2NhbGVFcnJvcjpXZigpfX1jb25zdCBYZj0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi4K6O4K604K+B4K6k4K+N4K6k4K+B4K6V4K+N4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sZmlsZTp7dW5pdDoi4K6q4K+I4K6f4K+N4K6f4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn0sYXJyYXk6e3VuaXQ6IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSIsdmVyYjoi4K6V4K+K4K6j4K+N4K6f4K6/4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjSJ9LHNldDp7dW5pdDoi4K6J4K6x4K+B4K6q4K+N4K6q4K+B4K6V4K6z4K+NIix2ZXJiOiLgrpXgr4rgrqPgr43grp/grr/grrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IuCuieCus+CvjeCus+CvgOCun+CvgSIsZW1haWw6IuCuruCuv+CuqeCvjeCuqeCunuCvjeCumuCusuCvjSDgrq7gr4HgrpXgrrXgrrDgrr8iLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyDgrqTgr4fgrqTgrr8g4K6o4K+H4K6w4K6u4K+NIixkYXRlOiJJU08g4K6k4K+H4K6k4K6/Iix0aW1lOiJJU08g4K6o4K+H4K6w4K6u4K+NIixkdXJhdGlvbjoiSVNPIOCuleCuvuCusiDgroXgrrPgrrXgr4EiLGlwdjQ6IklQdjQg4K6u4K+B4K6V4K614K6w4K6/IixpcHY2OiJJUHY2IOCuruCvgeCuleCuteCusOCuvyIsY2lkcnY0OiJJUHY0IOCuteCusOCuruCvjeCuquCvgSIsY2lkcnY2OiJJUHY2IOCuteCusOCuruCvjeCuquCvgSIsYmFzZTY0OiJiYXNlNjQtZW5jb2RlZCDgrprgrrDgrq7gr40iLGJhc2U2NHVybDoiYmFzZTY0dXJsLWVuY29kZWQg4K6a4K6w4K6u4K+NIixqc29uX3N0cmluZzoiSlNPTiDgrprgrrDgrq7gr40iLGUxNjQ6IkUuMTY0IOCujuCuo+CvjSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ImlucHV0In0sbz17bmFuOiJOYU4iLG51bWJlcjoi4K6O4K6j4K+NIixhcnJheToi4K6F4K6j4K6/IixudWxsOiLgrrXgr4bgrrHgr4Hgrq7gr4gifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4K6k4K614K6x4K6+4K6pIOCuieCus+CvjeCus+CvgOCun+CvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwg4K6q4K+G4K6x4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7c31gOmDgrqTgrrXgrrHgrr7grqkg4K6J4K6z4K+N4K6z4K+A4K6f4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtpfSwg4K6q4K+G4K6x4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2soZS52YWx1ZXNbMF0pfWA6YOCupOCuteCuseCuvuCuqSDgrrXgrr/grrDgr4Hgrqrgr43grqrgrq7gr406IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke18oZS52YWx1ZXMsInwiKX0g4K6H4K6y4K+NIOCukuCuqeCvjeCuseCvgWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dgrq7grr/grpUg4K6q4K+G4K6w4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbj8/IuCuruCupOCuv+CuquCvjeCuquCvgSJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuCuieCuseCvgeCuquCvjeCuquCvgeCuleCus+CvjSJ9IOCuhuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6u4K6/4K6VIOCuquCvhuCusOCuv+Cur+CupOCvgTog4K6O4K6k4K6/4K6w4K+N4K6q4K6+4K6w4K+N4K6V4K+N4K6V4K6q4K+N4K6q4K6f4K+N4K6f4K6k4K+BICR7ZS5vcmlnaW4/PyLgrq7grqTgrr/grqrgr43grqrgr4EifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2Dgrq7grr/grpXgrprgr40g4K6a4K6/4K6x4K6/4K6v4K6k4K+BOiDgro7grqTgrr/grrDgr43grqrgrr7grrDgr43grpXgr43grpXgrqrgr43grqrgrp/gr43grp/grqTgr4EgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDgrobgrpUg4K6H4K6w4K+B4K6V4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6YOCuruCuv+CuleCumuCvjSDgrprgrr/grrHgrr/grq/grqTgr4E6IOCujuCupOCuv+CusOCvjeCuquCuvuCusOCvjeCuleCvjeCuleCuquCvjeCuquCun+CvjeCun+CupOCvgSAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0g4K6G4K6VIOCuh+CusOCvgeCuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5wcmVmaXh9IiDgrofgrrLgr40g4K6k4K+K4K6f4K6Z4K+N4K6VIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogIiR7aS5zdWZmaXh9IiDgrofgrrLgr40g4K6u4K+B4K6f4K6/4K614K6f4K+I4K6vIOCuteCvh+Cuo+CvjeCun+CvgeCuruCvjWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DgrqTgrrXgrrHgrr7grqkg4K6a4K6w4K6u4K+NOiAiJHtpLmluY2x1ZGVzfSIg4K6QIOCuieCus+CvjeCus+Cun+CuleCvjeCulSDgrrXgr4fgrqPgr43grp/gr4Hgrq7gr41gOmkuZm9ybWF0PT09InJlZ2V4Ij9g4K6k4K614K6x4K6+4K6pIOCumuCusOCuruCvjTogJHtpLnBhdHRlcm59IOCuruCvgeCuseCviOCuquCuvuCun+CvjeCun+CvgeCun+CuqeCvjSDgrqrgr4rgrrDgr4Hgrqjgr43grqQg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDpg4K6k4K614K6x4K6+4K6pICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDgrqTgrrXgrrHgrr7grqkg4K6O4K6j4K+NOiAke2UuZGl2aXNvcn0g4K6H4K6p4K+NIOCuquCusuCuruCuvuCulSDgrofgrrDgr4HgrpXgr43grpUg4K614K+H4K6j4K+N4K6f4K+B4K6u4K+NYDtjYXNlInVucmVjb2duaXplZF9rZXlzIjpyZXR1cm5g4K6F4K6f4K+I4K6v4K6+4K6z4K6u4K+NIOCupOCvhuCusOCuv+Cur+CuvuCupCDgrrXgrr/grprgr4gke2Uua2V5cy5sZW5ndGg+MT8i4K6V4K6z4K+NIjoiIn06ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gJHtlLm9yaWdpbn0g4K6H4K6y4K+NIOCupOCuteCuseCuvuCuqSDgrrXgrr/grprgr4hgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIuCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4EiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g4K6H4K6y4K+NIOCupOCuteCuseCuvuCuqSDgrq7grqTgrr/grqrgr43grqrgr4FgO2RlZmF1bHQ6cmV0dXJuIuCupOCuteCuseCuvuCuqSDgrongrrPgr43grrPgr4Dgrp/gr4EifX19O2Z1bmN0aW9uIFlmKCl7cmV0dXJue2xvY2FsZUVycm9yOlhmKCl9fWNvbnN0IFFmPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiLguJXguLHguKfguK3guLHguIHguKnguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9LGZpbGU6e3VuaXQ6IuC5hOC4muC4leC5jCIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In0sYXJyYXk6e3VuaXQ6IuC4o+C4suC4ouC4geC4suC4oyIsdmVyYjoi4LiE4Lin4Lij4Lih4Li1In0sc2V0Ont1bml0OiLguKPguLLguKLguIHguLLguKMiLHZlcmI6IuC4hOC4p+C4o+C4oeC4tSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLguILguYnguK3guKHguLnguKXguJfguLXguYjguJvguYnguK3guJkiLGVtYWlsOiLguJfguLXguYjguK3guKLguLnguYjguK3guLXguYDguKHguKUiLHVybDoiVVJMIixlbW9qaToi4Lit4Li04LmC4Lih4LiI4Li0Iix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLguKfguLHguJnguJfguLXguYjguYDguKfguKXguLLguYHguJrguJogSVNPIixkYXRlOiLguKfguLHguJnguJfguLXguYjguYHguJrguJogSVNPIix0aW1lOiLguYDguKfguKXguLLguYHguJrguJogSVNPIixkdXJhdGlvbjoi4LiK4LmI4Lin4LiH4LmA4Lin4Lil4Liy4LmB4Lia4LiaIElTTyIsaXB2NDoi4LiX4Li14LmI4Lit4Lii4Li54LmIIElQdjQiLGlwdjY6IuC4l+C4teC5iOC4reC4ouC4ueC5iCBJUHY2IixjaWRydjQ6IuC4iuC5iOC4p+C4hyBJUCDguYHguJrguJogSVB2NCIsY2lkcnY2OiLguIrguYjguKfguIcgSVAg4LmB4Lia4LiaIElQdjYiLGJhc2U2NDoi4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4LmB4Lia4LiaIEJhc2U2NCIsYmFzZTY0dXJsOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogQmFzZTY0IOC4quC4s+C4q+C4o+C4seC4miBVUkwiLGpzb25fc3RyaW5nOiLguILguYnguK3guITguKfguLLguKHguYHguJrguJogSlNPTiIsZTE2NDoi4LmA4Lia4Lit4Lij4LmM4LmC4LiX4Lij4Lio4Lix4Lie4LiX4LmM4Lij4Liw4Lir4Lin4LmI4Liy4LiH4Lib4Lij4Liw4LmA4LiX4LioIChFLjE2NCkiLGp3dDoi4LmC4LiX4LmA4LiE4LiZIEpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lib4LmJ4Lit4LiZIn0sbz17bmFuOiJOYU4iLG51bWJlcjoi4LiV4Lix4Lin4LmA4Lil4LiCIixhcnJheToi4Lit4Liy4Lij4LmM4LmA4Lij4Lii4LmMIChBcnJheSkiLG51bGw6IuC5hOC4oeC5iOC4oeC4teC4hOC5iOC4siAobnVsbCkifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9g4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR9IOC5geC4leC5iOC5hOC4lOC5ieC4o+C4seC4miAke3N9YDpg4Lib4Lij4Liw4LmA4Lig4LiX4LiC4LmJ4Lit4Lih4Li54Lil4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtpfSDguYHguJXguYjguYTguJTguYnguKPguLHguJogJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9g4LiE4LmI4Liy4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguITguKfguKPguYDguJvguYfguJkgJHtrKGUudmFsdWVzWzBdKX1gOmDguJXguLHguKfguYDguKXguLfguK3guIHguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4hOC4p+C4o+C5gOC4m+C5h+C4meC4q+C4meC4tuC5iOC4h+C5g+C4mSAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/IuC5hOC4oeC5iOC5gOC4geC4tOC4mSI6IuC4meC5ieC4reC4ouC4geC4p+C5iOC4siIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g4LmA4LiB4Li04LiZ4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2luPz8i4LiE4LmI4LiyIn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuC4o+C4suC4ouC4geC4suC4oyJ9YDpg4LmA4LiB4Li04LiZ4LiB4Liz4Lir4LiZ4LiUOiAke2Uub3JpZ2luPz8i4LiE4LmI4LiyIn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWF4aW11bS50b1N0cmluZygpfWB9Y2FzZSJ0b29fc21hbGwiOntjb25zdCBpPWUuaW5jbHVzaXZlPyLguK3guKLguYjguLLguIfguJnguYnguK3guKIiOiLguKHguLLguIHguIHguKfguYjguLIiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOC4meC5ieC4reC4ouC4geC4p+C5iOC4suC4geC4s+C4q+C4meC4lDogJHtlLm9yaWdpbn0g4LiE4Lin4Lij4Lih4Li1JHtpfSAke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDguJnguYnguK3guKLguIHguKfguYjguLLguIHguLPguKvguJnguJQ6ICR7ZS5vcmlnaW59IOC4hOC4p+C4o+C4oeC4tSR7aX0gJHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguILguLbguYnguJnguJXguYnguJnguJTguYnguKfguKIgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g4Lij4Li54Lib4LmB4Lia4Lia4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHOiDguILguYnguK3guITguKfguLLguKHguJXguYnguK3guIfguKXguIfguJfguYnguLLguKLguJTguYnguKfguKIgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DguKPguLnguJvguYHguJrguJrguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC4guC5ieC4reC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4oeC4tSAiJHtpLmluY2x1ZGVzfSIg4Lit4Lii4Li54LmI4LmD4LiZ4LiC4LmJ4Lit4LiE4Lin4Liy4LihYDppLmZvcm1hdD09PSJyZWdleCI/YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiV4LmJ4Lit4LiH4LiV4Lij4LiH4LiB4Lix4Lia4Lij4Li54Lib4LmB4Lia4Lia4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiUICR7aS5wYXR0ZXJufWA6YOC4o+C4ueC4m+C5geC4muC4muC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYOC4leC4seC4p+C5gOC4peC4guC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzog4LiV4LmJ4Lit4LiH4LmA4Lib4LmH4LiZ4LiI4Liz4LiZ4Lin4LiZ4LiX4Li14LmI4Lir4Liy4Lij4LiU4LmJ4Lin4LiiICR7ZS5kaXZpc29yfSDguYTguJTguYnguKXguIfguJXguLHguKdgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDguJ7guJrguITguLXguKLguYzguJfguLXguYjguYTguKHguYjguKPguLnguYnguIjguLHguIE6ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5g4LiE4Li14Lii4LmM4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiH4LmD4LiZICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc6IOC5hOC4oeC5iOC4leC4o+C4h+C4geC4seC4muC4o+C4ueC4m+C5geC4muC4muC4ouC4ueC5gOC4meC4teC4ouC4meC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmDguILguYnguK3guKHguLnguKXguYTguKHguYjguJbguLnguIHguJXguYnguK3guIfguYPguJkgJHtlLm9yaWdpbn1gO2RlZmF1bHQ6cmV0dXJuIuC4guC5ieC4reC4oeC4ueC4peC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hyJ9fX07ZnVuY3Rpb24gZWcoKXtyZXR1cm57bG9jYWxlRXJyb3I6UWYoKX19Y29uc3QgdGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6ImthcmFrdGVyIix2ZXJiOiJvbG1hbMSxIn0sZmlsZTp7dW5pdDoiYmF5dCIsdmVyYjoib2xtYWzEsSJ9LGFycmF5Ont1bml0OiLDtsSfZSIsdmVyYjoib2xtYWzEsSJ9LHNldDp7dW5pdDoiw7bEn2UiLHZlcmI6Im9sbWFsxLEifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoiZ2lyZGkiLGVtYWlsOiJlLXBvc3RhIGFkcmVzaSIsdXJsOiJVUkwiLGVtb2ppOiJlbW9qaSIsdXVpZDoiVVVJRCIsdXVpZHY0OiJVVUlEdjQiLHV1aWR2NjoiVVVJRHY2IixuYW5vaWQ6Im5hbm9pZCIsZ3VpZDoiR1VJRCIsY3VpZDoiY3VpZCIsY3VpZDI6ImN1aWQyIix1bGlkOiJVTElEIix4aWQ6IlhJRCIsa3N1aWQ6IktTVUlEIixkYXRldGltZToiSVNPIHRhcmloIHZlIHNhYXQiLGRhdGU6IklTTyB0YXJpaCIsdGltZToiSVNPIHNhYXQiLGR1cmF0aW9uOiJJU08gc8O8cmUiLGlwdjQ6IklQdjQgYWRyZXNpIixpcHY2OiJJUHY2IGFkcmVzaSIsY2lkcnY0OiJJUHY0IGFyYWzEscSfxLEiLGNpZHJ2NjoiSVB2NiBhcmFsxLHEn8SxIixiYXNlNjQ6ImJhc2U2NCBpbGUgxZ9pZnJlbGVubWnFnyBtZXRpbiIsYmFzZTY0dXJsOiJiYXNlNjR1cmwgaWxlIMWfaWZyZWxlbm1pxZ8gbWV0aW4iLGpzb25fc3RyaW5nOiJKU09OIGRpemVzaSIsZTE2NDoiRS4xNjQgc2F5xLFzxLEiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLFnmFibG9uIGRpemVzaSJ9LG89e25hbjoiTmFOIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YEdlw6dlcnNpeiBkZcSfZXI6IGJla2xlbmVuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgYWzEsW5hbiAke3N9YDpgR2XDp2Vyc2l6IGRlxJ9lcjogYmVrbGVuZW4gJHtpfSwgYWzEsW5hbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BHZcOnZXJzaXogZGXEn2VyOiBiZWtsZW5lbiAke2soZS52YWx1ZXNbMF0pfWA6YEdlw6dlcnNpeiBzZcOnZW5lazogYcWfYcSfxLFkYWtpbGVyZGVuIGJpcmkgb2xtYWzEsTogJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YMOHb2sgYsO8ecO8azogYmVrbGVuZW4gJHtlLm9yaWdpbj8/ImRlxJ9lciJ9ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IsO2xJ9lIn1gOmDDh29rIGLDvHnDvGs6IGJla2xlbmVuICR7ZS5vcmlnaW4/PyJkZcSfZXIifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2DDh29rIGvDvMOnw7xrOiBiZWtsZW5lbiAke2Uub3JpZ2lufSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpgw4dvayBrw7zDp8O8azogYmVrbGVuZW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YEdlw6dlcnNpeiBtZXRpbjogIiR7aS5wcmVmaXh9IiBpbGUgYmHFn2xhbWFsxLFgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YEdlw6dlcnNpeiBtZXRpbjogIiR7aS5zdWZmaXh9IiBpbGUgYml0bWVsaWA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2BHZcOnZXJzaXogbWV0aW46ICIke2kuaW5jbHVkZXN9IiBpw6dlcm1lbGlgOmkuZm9ybWF0PT09InJlZ2V4Ij9gR2XDp2Vyc2l6IG1ldGluOiAke2kucGF0dGVybn0gZGVzZW5pbmUgdXltYWzEsWA6YEdlw6dlcnNpeiAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gR2XDp2Vyc2l6IHNhecSxOiAke2UuZGl2aXNvcn0gaWxlIHRhbSBiw7Zsw7xuZWJpbG1lbGlgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBUYW7EsW5tYXlhbiBhbmFodGFyJHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGnDp2luZGUgZ2XDp2Vyc2l6IGFuYWh0YXJgO2Nhc2UiaW52YWxpZF91bmlvbiI6cmV0dXJuIkdlw6dlcnNpeiBkZcSfZXIiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gacOnaW5kZSBnZcOnZXJzaXogZGXEn2VyYDtkZWZhdWx0OnJldHVybiJHZcOnZXJzaXogZGXEn2VyIn19fTtmdW5jdGlvbiBuZygpe3JldHVybntsb2NhbGVFcnJvcjp0ZygpfX1jb25zdCByZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi0YHQuNC80LLQvtC70ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In0sZmlsZTp7dW5pdDoi0LHQsNC50YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxhcnJheTp7dW5pdDoi0LXQu9C10LzQtdC90YLRltCyIix2ZXJiOiLQvNCw0YLQuNC80LUifSxzZXQ6e3VuaXQ6ItC10LvQtdC80LXQvdGC0ZbQsiIsdmVyYjoi0LzQsNGC0LjQvNC1In19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6ItCy0YXRltC00L3RliDQtNCw0L3RliIsZW1haWw6ItCw0LTRgNC10YHQsCDQtdC70LXQutGC0YDQvtC90L3QvtGXINC/0L7RiNGC0LgiLHVybDoiVVJMIixlbW9qaToi0LXQvNC+0LTQt9GWIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiLQtNCw0YLQsCDRgtCwINGH0LDRgSBJU08iLGRhdGU6ItC00LDRgtCwIElTTyIsdGltZToi0YfQsNGBIElTTyIsZHVyYXRpb246ItGC0YDQuNCy0LDQu9GW0YHRgtGMIElTTyIsaXB2NDoi0LDQtNGA0LXRgdCwIElQdjQiLGlwdjY6ItCw0LTRgNC10YHQsCBJUHY2IixjaWRydjQ6ItC00ZbQsNC/0LDQt9C+0L0gSVB2NCIsY2lkcnY2OiLQtNGW0LDQv9Cw0LfQvtC9IElQdjYiLGJhc2U2NDoi0YDRj9C00L7QuiDRgyDQutC+0LTRg9Cy0LDQvdC90ZYgYmFzZTY0IixiYXNlNjR1cmw6ItGA0Y/QtNC+0Log0YMg0LrQvtC00YPQstCw0L3QvdGWIGJhc2U2NHVybCIsanNvbl9zdHJpbmc6ItGA0Y/QtNC+0LogSlNPTiIsZTE2NDoi0L3QvtC80LXRgCBFLjE2NCIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6ItCy0YXRltC00L3RliDQtNCw0L3RliJ9LG89e25hbjoiTmFOIixudW1iZXI6ItGH0LjRgdC70L4iLGFycmF5OiLQvNCw0YHQuNCyIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sINC+0YLRgNC40LzQsNC90L4gJHtzfWA6YNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyAke2l9LCDQvtGC0YDQuNC80LDQvdC+ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNCd0LXQv9GA0LDQstC40LvRjNC90ZYg0LLRhdGW0LTQvdGWINC00LDQvdGWOiDQvtGH0ZbQutGD0ZTRgtGM0YHRjyAke2soZS52YWx1ZXNbMF0pfWA6YNCd0LXQv9GA0LDQstC40LvRjNC90LAg0L7Qv9GG0ZbRjzog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8g0L7QtNC90LUg0LcgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNCX0LDQvdCw0LTRgtC+INCy0LXQu9C40LrQtTog0L7Rh9GW0LrRg9GU0YLRjNGB0Y8sINGJ0L4gJHtlLm9yaWdpbj8/ItC30L3QsNGH0LXQvdC90Y8ifSAke2EudmVyYn0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0Pz8i0LXQu9C10LzQtdC90YLRltCyIn1gOmDQl9Cw0L3QsNC00YLQviDQstC10LvQuNC60LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW4/PyLQt9C90LDRh9C10L3QvdGPIn0g0LHRg9C00LUgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g0JfQsNC90LDQtNGC0L4g0LzQsNC70LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg0JfQsNC90LDQtNGC0L4g0LzQsNC70LU6INC+0YfRltC60YPRlNGC0YzRgdGPLCDRidC+ICR7ZS5vcmlnaW59INCx0YPQtNC1ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0L/QvtGH0LjQvdCw0YLQuNGB0Y8g0LcgIiR7aS5wcmVmaXh9ImA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5INGA0Y/QtNC+0Lo6INC/0L7QstC40L3QtdC9INC30LDQutGW0L3Rh9GD0LLQsNGC0LjRgdGPINC90LAgIiR7aS5zdWZmaXh9ImA6aS5mb3JtYXQ9PT0iaW5jbHVkZXMiP2DQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0YDRj9C00L7Qujog0L/QvtCy0LjQvdC10L0g0LzRltGB0YLQuNGC0LggIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRgNGP0LTQvtC6OiDQv9C+0LLQuNC90LXQvSDQstGW0LTQv9C+0LLRltC00LDRgtC4INGI0LDQsdC70L7QvdGDICR7aS5wYXR0ZXJufWA6YNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QtSDRh9C40YHQu9C+OiDQv9C+0LLQuNC90L3QviDQsdGD0YLQuCDQutGA0LDRgtC90LjQvCAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmDQndC10YDQvtC30L/RltC30L3QsNC90LjQuSDQutC70Y7RhyR7ZS5rZXlzLmxlbmd0aD4xPyLRliI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYNCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDQutC70Y7RhyDRgyAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i0J3QtdC/0YDQsNCy0LjQu9GM0L3RliDQstGF0ZbQtNC90ZYg0LTQsNC90ZYiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5g0J3QtdC/0YDQsNCy0LjQu9GM0L3QtSDQt9C90LDRh9C10L3QvdGPINGDICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLQndC10L/RgNCw0LLQuNC70YzQvdGWINCy0YXRltC00L3RliDQtNCw0L3RliJ9fX07ZnVuY3Rpb24gaGwoKXtyZXR1cm57bG9jYWxlRXJyb3I6cmcoKX19ZnVuY3Rpb24gaWcoKXtyZXR1cm4gaGwoKX1jb25zdCBvZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi2K3YsdmI2YEiLHZlcmI6ItuB2YjZhtinIn0sZmlsZTp7dW5pdDoi2KjYp9im2bnYsyIsdmVyYjoi24HZiNmG2KcifSxhcnJheTp7dW5pdDoi2KLYptm52YXYsiIsdmVyYjoi24HZiNmG2KcifSxzZXQ6e3VuaXQ6Itii2KbZudmF2LIiLHZlcmI6ItuB2YjZhtinIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Itin2YYg2b7ZuSIsZW1haWw6Itin24wg2YXbjNmEINin24zaiNix24zYsyIsdXJsOiLbjNmIINii2LEg2KfbjNmEIixlbW9qaToi2KfbjNmF2YjYrNuMIix1dWlkOiLbjNmIINuM2Ygg2KLYptuMINqI24wiLHV1aWR2NDoi24zZiCDbjNmIINii2KbbjCDaiNuMINmI24wgNCIsdXVpZHY2OiLbjNmIINuM2Ygg2KLYptuMINqI24wg2YjbjCA2IixuYW5vaWQ6ItmG24zZhtmIINii2KbbjCDaiNuMIixndWlkOiLYrNuMINuM2Ygg2KLYptuMINqI24wiLGN1aWQ6Itiz24wg24zZiCDYotim24wg2ojbjCIsY3VpZDI6Itiz24wg24zZiCDYotim24wg2ojbjCAyIix1bGlkOiLbjNmIINin24zZhCDYotim24wg2ojbjCIseGlkOiLYp9uM2qnYsyDYotim24wg2ojbjCIsa3N1aWQ6Itqp25Ig2KfbjNizINuM2Ygg2KLYptuMINqI24wiLGRhdGV0aW1lOiLYotim24wg2KfbjNizINin2Ygg2ojbjNm5INm52KfYptmFIixkYXRlOiLYotim24wg2KfbjNizINin2Ygg2KrYp9ix24zYriIsdGltZToi2KLYptuMINin24zYsyDYp9mIINmI2YLYqiIsZHVyYXRpb246Itii2KbbjCDYp9uM2LMg2KfZiCDZhdiv2KoiLGlwdjQ6Itii2KbbjCDZvtuMINmI24wgNCDYp9uM2ojYsduM2LMiLGlwdjY6Itii2KbbjCDZvtuMINmI24wgNiDYp9uM2ojYsduM2LMiLGNpZHJ2NDoi2KLYptuMINm+24wg2YjbjCA0INix24zZhtisIixjaWRydjY6Itii2KbbjCDZvtuMINmI24wgNiDYsduM2YbYrCIsYmFzZTY0OiLYqNuM2LMgNjQg2KfZhiDaqdmI2ojaiCDYs9m52LHZhtqvIixiYXNlNjR1cmw6Itio24zYsyA2NCDbjNmIINii2LEg2KfbjNmEINin2YYg2qnZiNqI2ogg2LPZudix2YbaryIsanNvbl9zdHJpbmc6Itis25Ig2KfbjNizINin2Ygg2KfbjNmGINiz2bnYsdmG2q8iLGUxNjQ6Itin24wgMTY0INmG2YXYqNixIixqd3Q6Itis25Ig2ojYqNmE24zZiCDZuduMIix0ZW1wbGF0ZV9saXRlcmFsOiLYp9mGINm+2bkifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiLZhtmF2KjYsSIsYXJyYXk6Itii2LHbkiIsbnVsbDoi2YbZhCJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DYutmE2Lcg2KfZhiDZvtm5OiBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0g2YXYqtmI2YLYuSDYqtq+2KfYjCAke3N9INmF2YjYtdmI2YQg24HZiNinYDpg2LrZhNi3INin2YYg2b7ZuTogJHtpfSDZhdiq2YjZgti5INiq2r7Yp9iMICR7c30g2YXZiNi12YjZhCDbgdmI2KdgfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YNi62YTYtyDYp9mGINm+2bk6ICR7ayhlLnZhbHVlc1swXSl9INmF2KrZiNmC2Lkg2KravtinYDpg2LrZhNi3INii2b7YtNmGOiAke18oZS52YWx1ZXMsInwiKX0g2YXbjNq6INiz25Ig2KfbjNqpINmF2KrZiNmC2Lkg2KravtinYDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YNio24HYqiDYqNqR2Kc6ICR7ZS5vcmlnaW4/PyLZiNuM2YTbjNmIIn0g2qnbkiAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLYudmG2KfYtdixIn0g24HZiNmG25Ig2YXYqtmI2YLYuSDYqtq+25JgOmDYqNuB2Kog2KjakdinOiAke2Uub3JpZ2luPz8i2YjbjNmE24zZiCJ9INqp2KcgJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9INuB2YjZhtinINmF2KrZiNmC2Lkg2KravtinYH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g2KjbgdiqINqG2r7ZiNm52Kc6ICR7ZS5vcmlnaW59INqp25IgJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSDbgdmI2YbbkiDZhdiq2YjZgti5INiq2r7bkmA6YNio24HYqiDahtq+2YjZudinOiAke2Uub3JpZ2lufSDaqdinICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSDbgdmI2YbYpyDZhdiq2YjZgti5INiq2r7Yp2B9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2DYutmE2Lcg2LPZudix2YbarzogIiR7aS5wcmVmaXh9IiDYs9uSINi02LHZiNi5INuB2YjZhtinINqG2KfbgduM25JgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YNi62YTYtyDYs9m52LHZhtqvOiAiJHtpLnN1ZmZpeH0iINm+2LEg2K7YqtmFINuB2YjZhtinINqG2KfbgduM25JgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g2LrZhNi3INiz2bnYsdmG2q86ICIke2kuaW5jbHVkZXN9IiDYtNin2YXZhCDbgdmI2YbYpyDahtin24HbjNuSYDppLmZvcm1hdD09PSJyZWdleCI/YNi62YTYtyDYs9m52LHZhtqvOiDZvtuM2bnYsdmGICR7aS5wYXR0ZXJufSDYs9uSINmF24zahiDbgdmI2YbYpyDahtin24HbjNuSYDpg2LrZhNi3ICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDYutmE2Lcg2YbZhdio2LE6ICR7ZS5kaXZpc29yfSDaqdinINmF2LbYp9i52YEg24HZiNmG2Kcg2obYp9uB24zbkmA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYNi624zYsSDYqtiz2YTbjNmFINi02K/bgSDaqduMJHtlLmtleXMubGVuZ3RoPjE/ItiyIjoiIn06ICR7XyhlLmtleXMsItiMICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59INmF24zauiDYutmE2Lcg2qnbjGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i2LrZhNi3INin2YYg2b7ZuSI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmAke2Uub3JpZ2lufSDZhduM2rog2LrZhNi3INmI24zZhNuM2YhgO2RlZmF1bHQ6cmV0dXJuIti62YTYtyDYp9mGINm+2bkifX19O2Z1bmN0aW9uIGFnKCl7cmV0dXJue2xvY2FsZUVycm9yOm9nKCl9fWNvbnN0IHNnPSgpPT57Y29uc3QgdD17c3RyaW5nOnt1bml0OiJiZWxnaSIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LGZpbGU6e3VuaXQ6ImJheXQiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifSxhcnJheTp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LHNldDp7dW5pdDoiZWxlbWVudCIsdmVyYjoiYm/igJhsaXNoaSBrZXJhayJ9LG1hcDp7dW5pdDoieW96dXYiLHZlcmI6ImJv4oCYbGlzaGkga2VyYWsifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoia2lyaXNoIixlbWFpbDoiZWxla3Ryb24gcG9jaHRhIG1hbnppbGkiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTTyBzYW5hIHZhIHZhcXRpIixkYXRlOiJJU08gc2FuYSIsdGltZToiSVNPIHZhcXQiLGR1cmF0aW9uOiJJU08gZGF2b21peWxpayIsaXB2NDoiSVB2NCBtYW56aWwiLGlwdjY6IklQdjYgbWFuemlsIixtYWM6Ik1BQyBtYW56aWwiLGNpZHJ2NDoiSVB2NCBkaWFwYXpvbiIsY2lkcnY2OiJJUHY2IGRpYXBhem9uIixiYXNlNjQ6ImJhc2U2NCBrb2RsYW5nYW4gc2F0ciIsYmFzZTY0dXJsOiJiYXNlNjR1cmwga29kbGFuZ2FuIHNhdHIiLGpzb25fc3RyaW5nOiJKU09OIHNhdHIiLGUxNjQ6IkUuMTY0IHJhcWFtIixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoia2lyaXNoIn0sbz17bmFuOiJOYU4iLG51bWJlcjoicmFxYW0iLGFycmF5OiJtYXNzaXYifTtyZXR1cm4gZT0+e3N3aXRjaChlLmNvZGUpe2Nhc2UiaW52YWxpZF90eXBlIjp7Y29uc3QgaT1vW2UuZXhwZWN0ZWRdPz9lLmV4cGVjdGVkLGE9UyhlLmlucHV0KSxzPW9bYV0/P2E7cmV0dXJuL15bQS1aXS8udGVzdChlLmV4cGVjdGVkKT9gTm90b+KAmGfigJhyaSBraXJpc2g6IGt1dGlsZ2FuIGluc3RhbmNlb2YgJHtlLmV4cGVjdGVkfSwgcWFidWwgcWlsaW5nYW4gJHtzfWA6YE5vdG/igJhn4oCYcmkga2lyaXNoOiBrdXRpbGdhbiAke2l9LCBxYWJ1bCBxaWxpbmdhbiAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2BOb3Rv4oCYZ+KAmHJpIGtpcmlzaDoga3V0aWxnYW4gJHtrKGUudmFsdWVzWzBdKX1gOmBOb3Rv4oCYZ+KAmHJpIHZhcmlhbnQ6IHF1eWlkYWdpbGFyZGFuIGJpcmkga3V0aWxnYW4gJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YEp1ZGEga2F0dGE6IGt1dGlsZ2FuICR7ZS5vcmlnaW4/PyJxaXltYXQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9ICR7YS52ZXJifWA6YEp1ZGEga2F0dGE6IGt1dGlsZ2FuICR7ZS5vcmlnaW4/PyJxaXltYXQifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BKdWRhIGtpY2hpazoga3V0aWxnYW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fSAke2EudmVyYn1gOmBKdWRhIGtpY2hpazoga3V0aWxnYW4gJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YE5vdG/igJhn4oCYcmkgc2F0cjogIiR7aS5wcmVmaXh9IiBiaWxhbiBib3NobGFuaXNoaSBrZXJha2A6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtpLnN1ZmZpeH0iIGJpbGFuIHR1Z2FzaGkga2VyYWtgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gTm90b+KAmGfigJhyaSBzYXRyOiAiJHtpLmluY2x1ZGVzfSIgbmkgb+KAmHogaWNoaWdhIG9saXNoaSBrZXJha2A6aS5mb3JtYXQ9PT0icmVnZXgiP2BOb3Rv4oCYZ+KAmHJpIHNhdHI6ICR7aS5wYXR0ZXJufSBzaGFibG9uaWdhIG1vcyBrZWxpc2hpIGtlcmFrYDpgTm90b+KAmGfigJhyaSAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH1gfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gTm90b+KAmGfigJhyaSByYXFhbTogJHtlLmRpdmlzb3J9IG5pbmcga2FycmFsaXNpIGJv4oCYbGlzaGkga2VyYWtgO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBOb21h4oCZbHVtIGthbGl0JHtlLmtleXMubGVuZ3RoPjE/ImxhciI6IiJ9OiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IGRhZ2kga2FsaXQgbm90b+KAmGfigJhyaWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iTm90b+KAmGfigJhyaSBraXJpc2giO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0gZGEgbm90b+KAmGfigJhyaSBxaXltYXRgO2RlZmF1bHQ6cmV0dXJuIk5vdG/igJhn4oCYcmkga2lyaXNoIn19fTtmdW5jdGlvbiBjZygpe3JldHVybntsb2NhbGVFcnJvcjpzZygpfX1jb25zdCB1Zz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoia8O9IHThu7EiLHZlcmI6ImPDsyJ9LGZpbGU6e3VuaXQ6ImJ5dGUiLHZlcmI6ImPDsyJ9LGFycmF5Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn0sc2V0Ont1bml0OiJwaOG6p24gdOG7rSIsdmVyYjoiY8OzIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6IsSR4bqndSB2w6BvIixlbWFpbDoixJHhu4thIGNo4buJIGVtYWlsIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJuZ8OgeSBnaeG7nSBJU08iLGRhdGU6Im5nw6B5IElTTyIsdGltZToiZ2nhu50gSVNPIixkdXJhdGlvbjoia2hv4bqjbmcgdGjhu51pIGdpYW4gSVNPIixpcHY0OiLEkeG7i2EgY2jhu4kgSVB2NCIsaXB2NjoixJHhu4thIGNo4buJIElQdjYiLGNpZHJ2NDoiZOG6o2kgSVB2NCIsY2lkcnY2OiJk4bqjaSBJUHY2IixiYXNlNjQ6ImNodeG7l2kgbcOjIGjDs2EgYmFzZTY0IixiYXNlNjR1cmw6ImNodeG7l2kgbcOjIGjDs2EgYmFzZTY0dXJsIixqc29uX3N0cmluZzoiY2h14buXaSBKU09OIixlMTY0OiJz4buRIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoixJHhuqd1IHbDoG8ifSxvPXtuYW46Ik5hTiIsbnVtYmVyOiJz4buRIixhcnJheToibeG6o25nIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YMSQ4bqndSB2w6BvIGtow7RuZyBo4bujcCBs4buHOiBtb25nIMSR4bujaSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIG5o4bqtbiDEkcaw4bujYyAke3N9YDpgxJDhuqd1IHbDoG8ga2jDtG5nIGjhu6NwIGzhu4c6IG1vbmcgxJHhu6NpICR7aX0sIG5o4bqtbiDEkcaw4bujYyAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgJHtrKGUudmFsdWVzWzBdKX1gOmBUw7l5IGNo4buNbiBraMO0bmcgaOG7o3AgbOG7hzogbW9uZyDEkeG7o2kgbeG7mXQgdHJvbmcgY8OhYyBnacOhIHRy4buLICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BRdcOhIGzhu5tuOiBtb25nIMSR4bujaSAke2Uub3JpZ2luPz8iZ2nDoSB0cuG7iyJ9ICR7YS52ZXJifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyJwaOG6p24gdOG7rSJ9YDpgUXXDoSBs4bubbjogbW9uZyDEkeG7o2kgJHtlLm9yaWdpbj8/Imdpw6EgdHLhu4sifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX1gfWNhc2UidG9vX3NtYWxsIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPj0iOiI+IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BRdcOhIG5o4buPOiBtb25nIMSR4bujaSAke2Uub3JpZ2lufSAke2EudmVyYn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9ICR7YS51bml0fWA6YFF1w6Egbmjhu486IG1vbmcgxJHhu6NpICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfWB9Y2FzZSJpbnZhbGlkX2Zvcm1hdCI6e2NvbnN0IGk9ZTtyZXR1cm4gaS5mb3JtYXQ9PT0ic3RhcnRzX3dpdGgiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kgYuG6r3QgxJHhuqd1IGLhurFuZyAiJHtpLnByZWZpeH0iYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2BDaHXhu5dpIGtow7RuZyBo4bujcCBs4buHOiBwaOG6o2kga+G6v3QgdGjDumMgYuG6sW5nICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGJhbyBn4buTbSAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9gQ2h14buXaSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGto4bubcCB24bubaSBt4bqrdSAke2kucGF0dGVybn1gOmAke3JbaS5mb3JtYXRdPz9lLmZvcm1hdH0ga2jDtG5nIGjhu6NwIGzhu4dgfWNhc2Uibm90X211bHRpcGxlX29mIjpyZXR1cm5gU+G7kSBraMO0bmcgaOG7o3AgbOG7hzogcGjhuqNpIGzDoCBi4buZaSBz4buRIGPhu6dhICR7ZS5kaXZpc29yfWA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYEtow7NhIGtow7RuZyDEkcaw4bujYyBuaOG6rW4gZOG6oW5nOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYEtow7NhIGtow7RuZyBo4bujcCBs4buHIHRyb25nICR7ZS5vcmlnaW59YDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hyI7Y2FzZSJpbnZhbGlkX2VsZW1lbnQiOnJldHVybmBHacOhIHRy4buLIGtow7RuZyBo4bujcCBs4buHIHRyb25nICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLEkOG6p3UgdsOgbyBraMO0bmcgaOG7o3AgbOG7hyJ9fX07ZnVuY3Rpb24gbGcoKXtyZXR1cm57bG9jYWxlRXJyb3I6dWcoKX19Y29uc3QgZGc9KCk9Pntjb25zdCB0PXtzdHJpbmc6e3VuaXQ6IuWtl+espiIsdmVyYjoi5YyF5ZCrIn0sZmlsZTp7dW5pdDoi5a2X6IqCIix2ZXJiOiLljIXlkKsifSxhcnJheTp7dW5pdDoi6aG5Iix2ZXJiOiLljIXlkKsifSxzZXQ6e3VuaXQ6IumhuSIsdmVyYjoi5YyF5ZCrIn19O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIHRbZV0/P251bGx9Y29uc3Qgcj17cmVnZXg6Iui+k+WFpSIsZW1haWw6IueUteWtkOmCruS7tiIsdXJsOiJVUkwiLGVtb2ppOiLooajmg4XnrKblj7ciLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IklTT+aXpeacn+aXtumXtCIsZGF0ZToiSVNP5pel5pyfIix0aW1lOiJJU0/ml7bpl7QiLGR1cmF0aW9uOiJJU0/ml7bplb8iLGlwdjQ6IklQdjTlnLDlnYAiLGlwdjY6IklQdjblnLDlnYAiLGNpZHJ2NDoiSVB2NOe9keautSIsY2lkcnY2OiJJUHY2572R5q61IixiYXNlNjQ6ImJhc2U2NOe8lueggeWtl+espuS4siIsYmFzZTY0dXJsOiJiYXNlNjR1cmznvJbnoIHlrZfnrKbkuLIiLGpzb25fc3RyaW5nOiJKU09O5a2X56ym5LiyIixlMTY0OiJFLjE2NOWPt+eggSIsand0OiJKV1QiLHRlbXBsYXRlX2xpdGVyYWw6Iui+k+WFpSJ9LG89e25hbjoiTmFOIixudW1iZXI6IuaVsOWtlyIsYXJyYXk6IuaVsOe7hCIsbnVsbDoi56m65YC8KG51bGwpIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YOaXoOaViOi+k+WFpe+8muacn+acmyBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH3vvIzlrp7pmYXmjqXmlLYgJHtzfWA6YOaXoOaViOi+k+WFpe+8muacn+acmyAke2l977yM5a6e6ZmF5o6l5pS2ICR7c31gfWNhc2UiaW52YWxpZF92YWx1ZSI6cmV0dXJuIGUudmFsdWVzLmxlbmd0aD09PTE/YOaXoOaViOi+k+WFpe+8muacn+acmyAke2soZS52YWx1ZXNbMF0pfWA6YOaXoOaViOmAiemhue+8muacn+acm+S7peS4i+S5i+S4gCAke18oZS52YWx1ZXMsInwiKX1gO2Nhc2UidG9vX2JpZyI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ijw9IjoiPCIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pWw5YC86L+H5aSn77ya5pyf5pybICR7ZS5vcmlnaW4/PyLlgLwifSAke2l9JHtlLm1heGltdW0udG9TdHJpbmcoKX0gJHthLnVuaXQ/PyLkuKrlhYPntKAifWA6YOaVsOWAvOi/h+Wkp++8muacn+acmyAke2Uub3JpZ2luPz8i5YC8In0gJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pWw5YC86L+H5bCP77ya5pyf5pybICR7ZS5vcmlnaW59ICR7aX0ke2UubWluaW11bS50b1N0cmluZygpfSAke2EudW5pdH1gOmDmlbDlgLzov4flsI/vvJrmnJ/mnJsgJHtlLm9yaWdpbn0gJHtpfSR7ZS5taW5pbXVtLnRvU3RyaW5nKCl9YH1jYXNlImludmFsaWRfZm9ybWF0Ijp7Y29uc3QgaT1lO3JldHVybiBpLmZvcm1hdD09PSJzdGFydHNfd2l0aCI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+S7pSAiJHtpLnByZWZpeH0iIOW8gOWktGA6aS5mb3JtYXQ9PT0iZW5kc193aXRoIj9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75LulICIke2kuc3VmZml4fSIg57uT5bC+YDppLmZvcm1hdD09PSJpbmNsdWRlcyI/YOaXoOaViOWtl+espuS4su+8muW/hemhu+WMheWQqyAiJHtpLmluY2x1ZGVzfSJgOmkuZm9ybWF0PT09InJlZ2V4Ij9g5peg5pWI5a2X56ym5Liy77ya5b+F6aG75ruh6Laz5q2j5YiZ6KGo6L6+5byPICR7aS5wYXR0ZXJufWA6YOaXoOaViCR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDml6DmlYjmlbDlrZfvvJrlv4XpobvmmK8gJHtlLmRpdmlzb3J9IOeahOWAjeaVsGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOWHuueOsOacquefpeeahOmUrihrZXkpOiAke18oZS5rZXlzLCIsICIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reeahOmUrihrZXkp5peg5pWIYDtjYXNlImludmFsaWRfdW5pb24iOnJldHVybiLml6DmlYjovpPlhaUiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gJHtlLm9yaWdpbn0g5Lit5YyF5ZCr5peg5pWI5YC8KHZhbHVlKWA7ZGVmYXVsdDpyZXR1cm4i5peg5pWI6L6T5YWlIn19fTtmdW5jdGlvbiBtZygpe3JldHVybntsb2NhbGVFcnJvcjpkZygpfX1jb25zdCBwZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoi5a2X5YWDIix2ZXJiOiLmk4HmnIkifSxmaWxlOnt1bml0OiLkvY3lhYPntYQiLHZlcmI6IuaTgeaciSJ9LGFycmF5Ont1bml0OiLpoIXnm64iLHZlcmI6IuaTgeaciSJ9LHNldDp7dW5pdDoi6aCF55uuIix2ZXJiOiLmk4HmnIkifX07ZnVuY3Rpb24gbihlKXtyZXR1cm4gdFtlXT8/bnVsbH1jb25zdCByPXtyZWdleDoi6Ly45YWlIixlbWFpbDoi6YO15Lu25Zyw5Z2AIix1cmw6IlVSTCIsZW1vamk6ImVtb2ppIix1dWlkOiJVVUlEIix1dWlkdjQ6IlVVSUR2NCIsdXVpZHY2OiJVVUlEdjYiLG5hbm9pZDoibmFub2lkIixndWlkOiJHVUlEIixjdWlkOiJjdWlkIixjdWlkMjoiY3VpZDIiLHVsaWQ6IlVMSUQiLHhpZDoiWElEIixrc3VpZDoiS1NVSUQiLGRhdGV0aW1lOiJJU08g5pel5pyf5pmC6ZaTIixkYXRlOiJJU08g5pel5pyfIix0aW1lOiJJU08g5pmC6ZaTIixkdXJhdGlvbjoiSVNPIOacn+mWkyIsaXB2NDoiSVB2NCDkvY3lnYAiLGlwdjY6IklQdjYg5L2N5Z2AIixjaWRydjQ6IklQdjQg56+E5ZyNIixjaWRydjY6IklQdjYg56+E5ZyNIixiYXNlNjQ6ImJhc2U2NCDnt6jnorzlrZfkuLIiLGJhc2U2NHVybDoiYmFzZTY0dXJsIOe3qOeivOWtl+S4siIsanNvbl9zdHJpbmc6IkpTT04g5a2X5LiyIixlMTY0OiJFLjE2NCDmlbjlgLwiLGp3dDoiSldUIix0ZW1wbGF0ZV9saXRlcmFsOiLovLjlhaUifSxvPXtuYW46Ik5hTiJ9O3JldHVybiBlPT57c3dpdGNoKGUuY29kZSl7Y2FzZSJpbnZhbGlkX3R5cGUiOntjb25zdCBpPW9bZS5leHBlY3RlZF0/P2UuZXhwZWN0ZWQsYT1TKGUuaW5wdXQpLHM9b1thXT8/YTtyZXR1cm4vXltBLVpdLy50ZXN0KGUuZXhwZWN0ZWQpP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogaW5zdGFuY2VvZiAke2UuZXhwZWN0ZWR977yM5L2G5pS25YiwICR7c31gOmDnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtpfe+8jOS9huaUtuWIsCAke3N9YH1jYXNlImludmFsaWRfdmFsdWUiOnJldHVybiBlLnZhbHVlcy5sZW5ndGg9PT0xP2DnhKHmlYjnmoTovLjlhaXlgLzvvJrpoJDmnJ/ngrogJHtrKGUudmFsdWVzWzBdKX1gOmDnhKHmlYjnmoTpgbjpoIXvvJrpoJDmnJ/ngrrku6XkuIvlhbbkuK3kuYvkuIAgJHtfKGUudmFsdWVzLCJ8Iil9YDtjYXNlInRvb19iaWciOntjb25zdCBpPWUuaW5jbHVzaXZlPyI8PSI6IjwiLGE9bihlLm9yaWdpbik7cmV0dXJuIGE/YOaVuOWAvOmBjuWkp++8mumgkOacnyAke2Uub3JpZ2luPz8i5YC8In0g5oeJ54K6ICR7aX0ke2UubWF4aW11bS50b1N0cmluZygpfSAke2EudW5pdD8/IuWAi+WFg+e0oCJ9YDpg5pW45YC86YGO5aSn77ya6aCQ5pyfICR7ZS5vcmlnaW4/PyLlgLwifSDmh4nngrogJHtpfSR7ZS5tYXhpbXVtLnRvU3RyaW5nKCl9YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9g5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX0gJHthLnVuaXR9YDpg5pW45YC86YGO5bCP77ya6aCQ5pyfICR7ZS5vcmlnaW59IOaHieeCuiAke2l9JHtlLm1pbmltdW0udG9TdHJpbmcoKX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5LulICIke2kucHJlZml4fSIg6ZaL6aCtYDppLmZvcm1hdD09PSJlbmRzX3dpdGgiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjku6UgIiR7aS5zdWZmaXh9IiDntZDlsL5gOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g54Sh5pWI55qE5a2X5Liy77ya5b+F6aCI5YyF5ZCrICIke2kuaW5jbHVkZXN9ImA6aS5mb3JtYXQ9PT0icmVnZXgiP2DnhKHmlYjnmoTlrZfkuLLvvJrlv4XpoIjnrKblkIjmoLzlvI8gJHtpLnBhdHRlcm59YDpg54Sh5pWI55qEICR7cltpLmZvcm1hdF0/P2UuZm9ybWF0fWB9Y2FzZSJub3RfbXVsdGlwbGVfb2YiOnJldHVybmDnhKHmlYjnmoTmlbjlrZfvvJrlv4XpoIjngrogJHtlLmRpdmlzb3J9IOeahOWAjeaVuGA7Y2FzZSJ1bnJlY29nbml6ZWRfa2V5cyI6cmV0dXJuYOeEoeazleitmOWIpeeahOmNteWAvCR7ZS5rZXlzLmxlbmd0aD4xPyLlgJEiOiIife+8miR7XyhlLmtleXMsIuOAgSIpfWA7Y2FzZSJpbnZhbGlkX2tleSI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reacieeEoeaViOeahOmNteWAvGA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4i54Sh5pWI55qE6Ly45YWl5YC8IjtjYXNlImludmFsaWRfZWxlbWVudCI6cmV0dXJuYCR7ZS5vcmlnaW59IOS4reacieeEoeaViOeahOWAvGA7ZGVmYXVsdDpyZXR1cm4i54Sh5pWI55qE6Ly45YWl5YC8In19fTtmdW5jdGlvbiBmZygpe3JldHVybntsb2NhbGVFcnJvcjpwZygpfX1jb25zdCBnZz0oKT0+e2NvbnN0IHQ9e3N0cmluZzp7dW5pdDoiw6BtaSIsdmVyYjoibsOtIn0sZmlsZTp7dW5pdDoiYnl0ZXMiLHZlcmI6Im7DrSJ9LGFycmF5Ont1bml0OiJua2FuIix2ZXJiOiJuw60ifSxzZXQ6e3VuaXQ6Im5rYW4iLHZlcmI6Im7DrSJ9fTtmdW5jdGlvbiBuKGUpe3JldHVybiB0W2VdPz9udWxsfWNvbnN0IHI9e3JlZ2V4OiLhurnMgHLhu40gw6xiw6F34buNbMOpIixlbWFpbDoiw6Bkw61y4bq5zIFzw6wgw6xt4bq5zIFsw6wiLHVybDoiVVJMIixlbW9qaToiZW1vamkiLHV1aWQ6IlVVSUQiLHV1aWR2NDoiVVVJRHY0Iix1dWlkdjY6IlVVSUR2NiIsbmFub2lkOiJuYW5vaWQiLGd1aWQ6IkdVSUQiLGN1aWQ6ImN1aWQiLGN1aWQyOiJjdWlkMiIsdWxpZDoiVUxJRCIseGlkOiJYSUQiLGtzdWlkOiJLU1VJRCIsZGF0ZXRpbWU6IsOga8Oza8OyIElTTyIsZGF0ZToi4buNauG7jcyBIElTTyIsdGltZToiw6Brw7Nrw7IgSVNPIixkdXJhdGlvbjoiw6Brw7Nrw7IgdMOzIHDDqSBJU08iLGlwdjQ6IsOgZMOtcuG6ucyBc8OsIElQdjQiLGlwdjY6IsOgZMOtcuG6ucyBc8OsIElQdjYiLGNpZHJ2NDoiw6BnYsOoZ2LDqCBJUHY0IixjaWRydjY6IsOgZ2LDqGdiw6ggSVB2NiIsYmFzZTY0OiLhu43MgHLhu43MgCB0w60gYSBr4buNzIEgbsOtIGJhc2U2NCIsYmFzZTY0dXJsOiLhu43MgHLhu43MgCBiYXNlNjR1cmwiLGpzb25fc3RyaW5nOiLhu43MgHLhu43MgCBKU09OIixlMTY0OiJu4buNzIFtYsOgIEUuMTY0Iixqd3Q6IkpXVCIsdGVtcGxhdGVfbGl0ZXJhbDoi4bq5zIBy4buNIMOsYsOhd+G7jWzDqSJ9LG89e25hbjoiTmFOIixudW1iZXI6Im7hu43MgW1iw6AiLGFycmF5OiJha29w4buNIn07cmV0dXJuIGU9Pntzd2l0Y2goZS5jb2RlKXtjYXNlImludmFsaWRfdHlwZSI6e2NvbnN0IGk9b1tlLmV4cGVjdGVkXT8/ZS5leHBlY3RlZCxhPVMoZS5pbnB1dCkscz1vW2FdPz9hO3JldHVybi9eW0EtWl0vLnRlc3QoZS5leHBlY3RlZCk/YMOMYsOhd+G7jWzDqSBh4bmjw6zhuaNlOiBhIG7DrSBsw6F0aSBmaSBpbnN0YW5jZW9mICR7ZS5leHBlY3RlZH0sIMOgbeG7jcyAIGEgcsOtICR7c31gOmDDjGLDoXfhu41sw6kgYeG5o8Os4bmjZTogYSBuw60gbMOhdGkgZmkgJHtpfSwgw6Bt4buNzIAgYSByw60gJHtzfWB9Y2FzZSJpbnZhbGlkX3ZhbHVlIjpyZXR1cm4gZS52YWx1ZXMubGVuZ3RoPT09MT9gw4xiw6F34buNbMOpIGHhuaPDrOG5o2U6IGEgbsOtIGzDoXRpIGZpICR7ayhlLnZhbHVlc1swXSl9YDpgw4DhuaPDoHnDoG4gYeG5o8Os4bmjZTogeWFuIOG7jcyAa2FuIGzDoXJhICR7XyhlLnZhbHVlcywifCIpfWA7Y2FzZSJ0b29fYmlnIjp7Y29uc3QgaT1lLmluY2x1c2l2ZT8iPD0iOiI8IixhPW4oZS5vcmlnaW4pO3JldHVybiBhP2BUw7MgcOG7jcyAIGrDuTogYSBuw60gbMOhdGkgauG6ucyBIHDDqSAke2Uub3JpZ2luPz8iaXllIn0gJHthLnZlcmJ9ICR7aX0ke2UubWF4aW11bX0gJHthLnVuaXR9YDpgVMOzIHDhu43MgCBqw7k6IGEgbsOtIGzDoXRpIGrhurnMgSAke2l9JHtlLm1heGltdW19YH1jYXNlInRvb19zbWFsbCI6e2NvbnN0IGk9ZS5pbmNsdXNpdmU/Ij49IjoiPiIsYT1uKGUub3JpZ2luKTtyZXR1cm4gYT9gS8OpcsOpIGp1OiBhIG7DrSBsw6F0aSBq4bq5zIEgcMOpICR7ZS5vcmlnaW59ICR7YS52ZXJifSAke2l9JHtlLm1pbmltdW19ICR7YS51bml0fWA6YEvDqXLDqSBqdTogYSBuw60gbMOhdGkgauG6ucyBICR7aX0ke2UubWluaW11bX1gfWNhc2UiaW52YWxpZF9mb3JtYXQiOntjb25zdCBpPWU7cmV0dXJuIGkuZm9ybWF0PT09InN0YXJ0c193aXRoIj9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBi4bq5zIBy4bq5zIAgcOG6ucyAbMO6ICIke2kucHJlZml4fSJgOmkuZm9ybWF0PT09ImVuZHNfd2l0aCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgcGFyw60gcOG6ucyAbMO6ICIke2kuc3VmZml4fSJgOmkuZm9ybWF0PT09ImluY2x1ZGVzIj9g4buMzIBy4buNzIAgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBuw60gIiR7aS5pbmNsdWRlc30iYDppLmZvcm1hdD09PSJyZWdleCI/YOG7jMyAcuG7jcyAIGHhuaPDrOG5o2U6IGdi4buNzIFk4buNzIAgYsOhIMOgcOG6ueG6uXLhurkgbXUgJHtpLnBhdHRlcm59YDpgQeG5o8Os4bmjZTogJHtyW2kuZm9ybWF0XT8/ZS5mb3JtYXR9YH1jYXNlIm5vdF9tdWx0aXBsZV9vZiI6cmV0dXJuYE7hu43MgW1iw6AgYeG5o8Os4bmjZTogZ2Lhu43MgWThu43MgCBq4bq5zIEgw6h5w6AgcMOtcMOtbiB0aSAke2UuZGl2aXNvcn1gO2Nhc2UidW5yZWNvZ25pemVkX2tleXMiOnJldHVybmBC4buNdMOsbsOsIMOgw6xt4buNzIA6ICR7XyhlLmtleXMsIiwgIil9YDtjYXNlImludmFsaWRfa2V5IjpyZXR1cm5gQuG7jXTDrG7DrCBh4bmjw6zhuaNlIG7DrW7DuiAke2Uub3JpZ2lufWA7Y2FzZSJpbnZhbGlkX3VuaW9uIjpyZXR1cm4iw4xiw6F34buNbMOpIGHhuaPDrOG5o2UiO2Nhc2UiaW52YWxpZF9lbGVtZW50IjpyZXR1cm5gSXllIGHhuaPDrOG5o2UgbsOtbsO6ICR7ZS5vcmlnaW59YDtkZWZhdWx0OnJldHVybiLDjGLDoXfhu41sw6kgYeG5o8Os4bmjZSJ9fX07ZnVuY3Rpb24gdmcoKXtyZXR1cm57bG9jYWxlRXJyb3I6Z2coKX19Y29uc3QgRGk9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGFyOnpwLGF6OlRwLGJlOlVwLGJnOk9wLGNhOk5wLGNzOlpwLGRhOkNwLGRlOkxwLGVsOnFwLGVuOmdsLGVvOkhwLGVzOktwLGZhOldwLGZpOlhwLGZyOlFwLGZyQ0E6dGYsaGU6cmYsaHI6YWYsaHU6Y2YsaHk6bGYsaWQ6bWYsaXM6ZmYsaXQ6dmYsamE6JGYsa2E6YmYsa2g6a2Ysa206dmwsa286d2YsbHQ6emYsbWs6VGYsbXM6VWYsbmw6T2Ysbm86TmYsb3RhOlpmLHBsOkxmLHBzOkNmLHB0OnFmLHJvOkpmLHJ1OlZmLHNsOkJmLHN2OkdmLHRhOllmLHRoOmVnLHRyOm5nLHVhOmlnLHVrOmhsLHVyOmFnLHV6OmNnLHZpOmxnLHlvOnZnLHpoQ046bWcsemhUVzpmZ30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTt2YXIga3M7Y29uc3QgTmk9U3ltYm9sKCJab2RPdXRwdXQiKSxFaT1TeW1ib2woIlpvZElucHV0Iik7Y2xhc3MgJGx7Y29uc3RydWN0b3IoKXt0aGlzLl9tYXA9bmV3IFdlYWtNYXAsdGhpcy5faWRtYXA9bmV3IE1hcH1hZGQobiwuLi5yKXtjb25zdCBvPXJbMF07cmV0dXJuIHRoaXMuX21hcC5zZXQobixvKSxvJiZ0eXBlb2Ygbz09Im9iamVjdCImJiJpZCJpbiBvJiZ0aGlzLl9pZG1hcC5zZXQoby5pZCxuKSx0aGlzfWNsZWFyKCl7cmV0dXJuIHRoaXMuX21hcD1uZXcgV2Vha01hcCx0aGlzLl9pZG1hcD1uZXcgTWFwLHRoaXN9cmVtb3ZlKG4pe2NvbnN0IHI9dGhpcy5fbWFwLmdldChuKTtyZXR1cm4gciYmdHlwZW9mIHI9PSJvYmplY3QiJiYiaWQiaW4gciYmdGhpcy5faWRtYXAuZGVsZXRlKHIuaWQpLHRoaXMuX21hcC5kZWxldGUobiksdGhpc31nZXQobil7Y29uc3Qgcj1uLl96b2QucGFyZW50O2lmKHIpe2NvbnN0IG89ey4uLnRoaXMuZ2V0KHIpPz97fX07ZGVsZXRlIG8uaWQ7Y29uc3QgZT17Li4ubywuLi50aGlzLl9tYXAuZ2V0KG4pfTtyZXR1cm4gT2JqZWN0LmtleXMoZSkubGVuZ3RoP2U6dm9pZCAwfXJldHVybiB0aGlzLl9tYXAuZ2V0KG4pfWhhcyhuKXtyZXR1cm4gdGhpcy5fbWFwLmhhcyhuKX19ZnVuY3Rpb24gS24oKXtyZXR1cm4gbmV3ICRsfShrcz1nbG9iYWxUaGlzKS5fX3pvZF9nbG9iYWxSZWdpc3RyeT8/KGtzLl9fem9kX2dsb2JhbFJlZ2lzdHJ5PUtuKCkpO2NvbnN0IHJlPWdsb2JhbFRoaXMuX196b2RfZ2xvYmFsUmVnaXN0cnk7ZnVuY3Rpb24gX2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsLi4uaChuKX0pfWZ1bmN0aW9uIGJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGNvZXJjZTohMCwuLi5oKG4pfSl9ZnVuY3Rpb24gWmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJlbWFpbCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBEbih0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Imd1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gUmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIENpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXVpZCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLHZlcnNpb246InY0IiwuLi5oKG4pfSl9ZnVuY3Rpb24gQWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1dWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsdmVyc2lvbjoidjYiLC4uLmgobil9KX1mdW5jdGlvbiBMaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InV1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSx2ZXJzaW9uOiJ2NyIsLi4uaChuKX0pfWZ1bmN0aW9uIEJuKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoidXJsIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIE1pKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZW1vamkiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gcWkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJuYW5vaWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gRmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJjdWlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEppKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiY3VpZDIiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gSGkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJ1bGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFZpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoieGlkIixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIEtpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoia3N1aWQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gQmkodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJpcHY0IixjaGVjazoic3RyaW5nX2Zvcm1hdCIsYWJvcnQ6ITEsLi4uaChuKX0pfWZ1bmN0aW9uIFdpKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiaXB2NiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiB5bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6Im1hYyIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBHaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNpZHJ2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBYaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImNpZHJ2NiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBZaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBRaSh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImJhc2U2NHVybCIsY2hlY2s6InN0cmluZ19mb3JtYXQiLGFib3J0OiExLC4uLmgobil9KX1mdW5jdGlvbiBlbyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6ImUxNjQiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9ZnVuY3Rpb24gdG8odCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJqd3QiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixhYm9ydDohMSwuLi5oKG4pfSl9Y29uc3Qgbm89e0FueTpudWxsLE1pbnV0ZTotMSxTZWNvbmQ6MCxNaWxsaXNlY29uZDozLE1pY3Jvc2Vjb25kOjZ9O2Z1bmN0aW9uIGtsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZXRpbWUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixvZmZzZXQ6ITEsbG9jYWw6ITEscHJlY2lzaW9uOm51bGwsLi4uaChuKX0pfWZ1bmN0aW9uIFNsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzdHJpbmciLGZvcm1hdDoiZGF0ZSIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLmgobil9KX1mdW5jdGlvbiB3bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToic3RyaW5nIixmb3JtYXQ6InRpbWUiLGNoZWNrOiJzdHJpbmdfZm9ybWF0IixwcmVjaXNpb246bnVsbCwuLi5oKG4pfSl9ZnVuY3Rpb24gSWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN0cmluZyIsZm9ybWF0OiJkdXJhdGlvbiIsY2hlY2s6InN0cmluZ19mb3JtYXQiLC4uLmgobil9KX1mdW5jdGlvbiB6bCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVja3M6W10sLi4uaChuKX0pfWZ1bmN0aW9uIHhsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNvZXJjZTohMCxjaGVja3M6W10sLi4uaChuKX0pfWZ1bmN0aW9uIFRsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InNhZmVpbnQiLC4uLmgobil9KX1mdW5jdGlvbiBqbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToibnVtYmVyIixjaGVjazoibnVtYmVyX2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJmbG9hdDMyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gVWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoiZmxvYXQ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIFBsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJudW1iZXIiLGNoZWNrOiJudW1iZXJfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6ImludDMyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gT2wodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bWJlciIsY2hlY2s6Im51bWJlcl9mb3JtYXQiLGFib3J0OiExLGZvcm1hdDoidWludDMyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gRGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJvb2xlYW4iLC4uLmgobil9KX1mdW5jdGlvbiBObCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYm9vbGVhbiIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBFbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IiwuLi5oKG4pfSl9ZnVuY3Rpb24gWmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImJpZ2ludCIsY29lcmNlOiEwLC4uLmgobil9KX1mdW5jdGlvbiBSbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiYmlnaW50IixjaGVjazoiYmlnaW50X2Zvcm1hdCIsYWJvcnQ6ITEsZm9ybWF0OiJpbnQ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIENsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJiaWdpbnQiLGNoZWNrOiJiaWdpbnRfZm9ybWF0IixhYm9ydDohMSxmb3JtYXQ6InVpbnQ2NCIsLi4uaChuKX0pfWZ1bmN0aW9uIEFsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzeW1ib2wiLC4uLmgobil9KX1mdW5jdGlvbiBMbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToidW5kZWZpbmVkIiwuLi5oKG4pfSl9ZnVuY3Rpb24gTWwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bGwiLC4uLmgobil9KX1mdW5jdGlvbiBxbCh0KXtyZXR1cm4gbmV3IHQoe3R5cGU6ImFueSJ9KX1mdW5jdGlvbiBGbCh0KXtyZXR1cm4gbmV3IHQoe3R5cGU6InVua25vd24ifSl9ZnVuY3Rpb24gSmwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im5ldmVyIiwuLi5oKG4pfSl9ZnVuY3Rpb24gSGwodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InZvaWQiLC4uLmgobil9KX1mdW5jdGlvbiBWbCh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToiZGF0ZSIsLi4uaChuKX0pfWZ1bmN0aW9uIEtsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJkYXRlIixjb2VyY2U6ITAsLi4uaChuKX0pfWZ1bmN0aW9uIEJsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJuYW4iLC4uLmgobil9KX1mdW5jdGlvbiBoZSh0LG4pe3JldHVybiBuZXcgU2koe2NoZWNrOiJsZXNzX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiBpZSh0LG4pe3JldHVybiBuZXcgU2koe2NoZWNrOiJsZXNzX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiAkZSh0LG4pe3JldHVybiBuZXcgd2koe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITF9KX1mdW5jdGlvbiB0ZSh0LG4pe3JldHVybiBuZXcgd2koe2NoZWNrOiJncmVhdGVyX3RoYW4iLC4uLmgobiksdmFsdWU6dCxpbmNsdXNpdmU6ITB9KX1mdW5jdGlvbiBXbih0KXtyZXR1cm4gJGUoMCx0KX1mdW5jdGlvbiBHbih0KXtyZXR1cm4gaGUoMCx0KX1mdW5jdGlvbiBYbih0KXtyZXR1cm4gaWUoMCx0KX1mdW5jdGlvbiBZbih0KXtyZXR1cm4gdGUoMCx0KX1mdW5jdGlvbiBqZSh0LG4pe3JldHVybiBuZXcgWmMoe2NoZWNrOiJtdWx0aXBsZV9vZiIsLi4uaChuKSx2YWx1ZTp0fSl9ZnVuY3Rpb24gRWUodCxuKXtyZXR1cm4gbmV3IEFjKHtjaGVjazoibWF4X3NpemUiLC4uLmgobiksbWF4aW11bTp0fSl9ZnVuY3Rpb24gX2UodCxuKXtyZXR1cm4gbmV3IExjKHtjaGVjazoibWluX3NpemUiLC4uLmgobiksbWluaW11bTp0fSl9ZnVuY3Rpb24gWGUodCxuKXtyZXR1cm4gbmV3IE1jKHtjaGVjazoic2l6ZV9lcXVhbHMiLC4uLmgobiksc2l6ZTp0fSl9ZnVuY3Rpb24gWWUodCxuKXtyZXR1cm4gbmV3IHFjKHtjaGVjazoibWF4X2xlbmd0aCIsLi4uaChuKSxtYXhpbXVtOnR9KX1mdW5jdGlvbiBiZSh0LG4pe3JldHVybiBuZXcgRmMoe2NoZWNrOiJtaW5fbGVuZ3RoIiwuLi5oKG4pLG1pbmltdW06dH0pfWZ1bmN0aW9uIFFlKHQsbil7cmV0dXJuIG5ldyBKYyh7Y2hlY2s6Imxlbmd0aF9lcXVhbHMiLC4uLmgobiksbGVuZ3RoOnR9KX1mdW5jdGlvbiBqdCh0LG4pe3JldHVybiBuZXcgSGMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InJlZ2V4IiwuLi5oKG4pLHBhdHRlcm46dH0pfWZ1bmN0aW9uIFV0KHQpe3JldHVybiBuZXcgVmMoe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6Imxvd2VyY2FzZSIsLi4uaCh0KX0pfWZ1bmN0aW9uIFB0KHQpe3JldHVybiBuZXcgS2Moe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6InVwcGVyY2FzZSIsLi4uaCh0KX0pfWZ1bmN0aW9uIE90KHQsbil7cmV0dXJuIG5ldyBCYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoiaW5jbHVkZXMiLC4uLmgobiksaW5jbHVkZXM6dH0pfWZ1bmN0aW9uIER0KHQsbil7cmV0dXJuIG5ldyBXYyh7Y2hlY2s6InN0cmluZ19mb3JtYXQiLGZvcm1hdDoic3RhcnRzX3dpdGgiLC4uLmgobikscHJlZml4OnR9KX1mdW5jdGlvbiBOdCh0LG4pe3JldHVybiBuZXcgR2Moe2NoZWNrOiJzdHJpbmdfZm9ybWF0Iixmb3JtYXQ6ImVuZHNfd2l0aCIsLi4uaChuKSxzdWZmaXg6dH0pfWZ1bmN0aW9uIFFuKHQsbixyKXtyZXR1cm4gbmV3IFhjKHtjaGVjazoicHJvcGVydHkiLHByb3BlcnR5OnQsc2NoZW1hOm4sLi4uaChyKX0pfWZ1bmN0aW9uIEV0KHQsbil7cmV0dXJuIG5ldyBZYyh7Y2hlY2s6Im1pbWVfdHlwZSIsbWltZTp0LC4uLmgobil9KX1mdW5jdGlvbiBnZSh0KXtyZXR1cm4gbmV3IFFjKHtjaGVjazoib3ZlcndyaXRlIix0eDp0fSl9ZnVuY3Rpb24gWnQodCl7cmV0dXJuIGdlKG49Pm4ubm9ybWFsaXplKHQpKX1mdW5jdGlvbiBSdCgpe3JldHVybiBnZSh0PT50LnRyaW0oKSl9ZnVuY3Rpb24gQ3QoKXtyZXR1cm4gZ2UodD0+dC50b0xvd2VyQ2FzZSgpKX1mdW5jdGlvbiBBdCgpe3JldHVybiBnZSh0PT50LnRvVXBwZXJDYXNlKCkpfWZ1bmN0aW9uIEx0KCl7cmV0dXJuIGdlKHQ9PlpzKHQpKX1mdW5jdGlvbiBXbCh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJhcnJheSIsZWxlbWVudDpuLC4uLmgocil9KX1mdW5jdGlvbiBoZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLC4uLmgocil9KX1mdW5jdGlvbiAkZyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpuLGluY2x1c2l2ZTohMSwuLi5oKHIpfSl9ZnVuY3Rpb24gX2codCxuLHIsbyl7cmV0dXJuIG5ldyB0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczpyLGRpc2NyaW1pbmF0b3I6biwuLi5oKG8pfSl9ZnVuY3Rpb24gYmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0Om4scmlnaHQ6cn0pfWZ1bmN0aW9uIHlnKHQsbixyLG8pe2NvbnN0IGU9ciBpbnN0YW5jZW9mIEksaT1lP286cixhPWU/cjpudWxsO3JldHVybiBuZXcgdCh7dHlwZToidHVwbGUiLGl0ZW1zOm4scmVzdDphLC4uLmgoaSl9KX1mdW5jdGlvbiBrZyh0LG4scixvKXtyZXR1cm4gbmV3IHQoe3R5cGU6InJlY29yZCIsa2V5VHlwZTpuLHZhbHVlVHlwZTpyLC4uLmgobyl9KX1mdW5jdGlvbiBTZyh0LG4scixvKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im1hcCIsa2V5VHlwZTpuLHZhbHVlVHlwZTpyLC4uLmgobyl9KX1mdW5jdGlvbiB3Zyh0LG4scil7cmV0dXJuIG5ldyB0KHt0eXBlOiJzZXQiLHZhbHVlVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiBJZyh0LG4scil7Y29uc3Qgbz1BcnJheS5pc0FycmF5KG4pP09iamVjdC5mcm9tRW50cmllcyhuLm1hcChlPT5bZSxlXSkpOm47cmV0dXJuIG5ldyB0KHt0eXBlOiJlbnVtIixlbnRyaWVzOm8sLi4uaChyKX0pfWZ1bmN0aW9uIHpnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImVudW0iLGVudHJpZXM6biwuLi5oKHIpfSl9ZnVuY3Rpb24geGcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToibGl0ZXJhbCIsdmFsdWVzOkFycmF5LmlzQXJyYXkobik/bjpbbl0sLi4uaChyKX0pfWZ1bmN0aW9uIEdsKHQsbil7cmV0dXJuIG5ldyB0KHt0eXBlOiJmaWxlIiwuLi5oKG4pfSl9ZnVuY3Rpb24gVGcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InRyYW5zZm9ybSIsdHJhbnNmb3JtOm59KX1mdW5jdGlvbiBqZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gVWcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im51bGxhYmxlIixpbm5lclR5cGU6bn0pfWZ1bmN0aW9uIFBnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImRlZmF1bHQiLGlubmVyVHlwZTpuLGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIHI9PSJmdW5jdGlvbiI/cigpOkxuKHIpfX0pfWZ1bmN0aW9uIE9nKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6Im5vbm9wdGlvbmFsIixpbm5lclR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gRGcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InN1Y2Nlc3MiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gTmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToiY2F0Y2giLGlubmVyVHlwZTpuLGNhdGNoVmFsdWU6dHlwZW9mIHI9PSJmdW5jdGlvbiI/cjooKT0+cn0pfWZ1bmN0aW9uIEVnKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6InBpcGUiLGluOm4sb3V0OnJ9KX1mdW5jdGlvbiBaZyh0LG4pe3JldHVybiBuZXcgdCh7dHlwZToicmVhZG9ubHkiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gUmcodCxuLHIpe3JldHVybiBuZXcgdCh7dHlwZToidGVtcGxhdGVfbGl0ZXJhbCIscGFydHM6biwuLi5oKHIpfSl9ZnVuY3Rpb24gQ2codCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImxhenkiLGdldHRlcjpufSl9ZnVuY3Rpb24gQWcodCxuKXtyZXR1cm4gbmV3IHQoe3R5cGU6InByb21pc2UiLGlubmVyVHlwZTpufSl9ZnVuY3Rpb24gWGwodCxuLHIpe2NvbnN0IG89aChyKTtyZXR1cm4gby5hYm9ydD8/KG8uYWJvcnQ9ITApLG5ldyB0KHt0eXBlOiJjdXN0b20iLGNoZWNrOiJjdXN0b20iLGZuOm4sLi4ub30pfWZ1bmN0aW9uIFlsKHQsbixyKXtyZXR1cm4gbmV3IHQoe3R5cGU6ImN1c3RvbSIsY2hlY2s6ImN1c3RvbSIsZm46biwuLi5oKHIpfSl9ZnVuY3Rpb24gUWwodCxuKXtjb25zdCByPWVkKG89PihvLmFkZElzc3VlPWU9PntpZih0eXBlb2YgZT09InN0cmluZyIpby5pc3N1ZXMucHVzaChNZShlLG8udmFsdWUsci5fem9kLmRlZikpO2Vsc2V7Y29uc3QgaT1lO2kuZmF0YWwmJihpLmNvbnRpbnVlPSExKSxpLmNvZGU/PyhpLmNvZGU9ImN1c3RvbSIpLGkuaW5wdXQ/PyhpLmlucHV0PW8udmFsdWUpLGkuaW5zdD8/KGkuaW5zdD1yKSxpLmNvbnRpbnVlPz8oaS5jb250aW51ZT0hci5fem9kLmRlZi5hYm9ydCksby5pc3N1ZXMucHVzaChNZShpKSl9fSx0KG8udmFsdWUsbykpLG4pO3JldHVybiByfWZ1bmN0aW9uIGVkKHQsbil7Y29uc3Qgcj1uZXcgcSh7Y2hlY2s6ImN1c3RvbSIsLi4uaChuKX0pO3JldHVybiByLl96b2QuY2hlY2s9dCxyfWZ1bmN0aW9uIHRkKHQpe2NvbnN0IG49bmV3IHEoe2NoZWNrOiJkZXNjcmliZSJ9KTtyZXR1cm4gbi5fem9kLm9uYXR0YWNoPVtyPT57Y29uc3Qgbz1yZS5nZXQocik/P3t9O3JlLmFkZChyLHsuLi5vLGRlc2NyaXB0aW9uOnR9KX1dLG4uX3pvZC5jaGVjaz0oKT0+e30sbn1mdW5jdGlvbiBuZCh0KXtjb25zdCBuPW5ldyBxKHtjaGVjazoibWV0YSJ9KTtyZXR1cm4gbi5fem9kLm9uYXR0YWNoPVtyPT57Y29uc3Qgbz1yZS5nZXQocik/P3t9O3JlLmFkZChyLHsuLi5vLC4uLnR9KX1dLG4uX3pvZC5jaGVjaz0oKT0+e30sbn1mdW5jdGlvbiByZCh0LG4pe2NvbnN0IHI9aChuKTtsZXQgbz1yLnRydXRoeT8/WyJ0cnVlIiwiMSIsInllcyIsIm9uIiwieSIsImVuYWJsZWQiXSxlPXIuZmFsc3k/P1siZmFsc2UiLCIwIiwibm8iLCJvZmYiLCJuIiwiZGlzYWJsZWQiXTtyLmNhc2UhPT0ic2Vuc2l0aXZlIiYmKG89by5tYXAoJD0+dHlwZW9mICQ9PSJzdHJpbmciPyQudG9Mb3dlckNhc2UoKTokKSxlPWUubWFwKCQ9PnR5cGVvZiAkPT0ic3RyaW5nIj8kLnRvTG93ZXJDYXNlKCk6JCkpO2NvbnN0IGk9bmV3IFNldChvKSxhPW5ldyBTZXQoZSkscz10LkNvZGVjPz9PaSxjPXQuQm9vbGVhbj8/eGksdT10LlN0cmluZz8/VHQsbD1uZXcgdSh7dHlwZToic3RyaW5nIixlcnJvcjpyLmVycm9yfSksZz1uZXcgYyh7dHlwZToiYm9vbGVhbiIsZXJyb3I6ci5lcnJvcn0pLHY9bmV3IHMoe3R5cGU6InBpcGUiLGluOmwsb3V0OmcsdHJhbnNmb3JtOigoJCx5KT0+e2xldCBGPSQ7cmV0dXJuIHIuY2FzZSE9PSJzZW5zaXRpdmUiJiYoRj1GLnRvTG93ZXJDYXNlKCkpLGkuaGFzKEYpPyEwOmEuaGFzKEYpPyExOih5Lmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3ZhbHVlIixleHBlY3RlZDoic3RyaW5nYm9vbCIsdmFsdWVzOlsuLi5pLC4uLmFdLGlucHV0OnkudmFsdWUsaW5zdDp2LGNvbnRpbnVlOiExfSkse30pfSkscmV2ZXJzZVRyYW5zZm9ybTooKCQseSk9PiQ9PT0hMD9vWzBdfHwidHJ1ZSI6ZVswXXx8ImZhbHNlIiksZXJyb3I6ci5lcnJvcn0pO3JldHVybiB2fWZ1bmN0aW9uIE10KHQsbixyLG89e30pe2NvbnN0IGU9aChvKSxpPXsuLi5oKG8pLGNoZWNrOiJzdHJpbmdfZm9ybWF0Iix0eXBlOiJzdHJpbmciLGZvcm1hdDpuLGZuOnR5cGVvZiByPT0iZnVuY3Rpb24iP3I6cz0+ci50ZXN0KHMpLC4uLmV9O3JldHVybiByIGluc3RhbmNlb2YgUmVnRXhwJiYoaS5wYXR0ZXJuPXIpLG5ldyB0KGkpfWZ1bmN0aW9uIEZlKHQpe2xldCBuPXQ/LnRhcmdldD8/ImRyYWZ0LTIwMjAtMTIiO3JldHVybiBuPT09ImRyYWZ0LTQiJiYobj0iZHJhZnQtMDQiKSxuPT09ImRyYWZ0LTciJiYobj0iZHJhZnQtMDciKSx7cHJvY2Vzc29yczp0LnByb2Nlc3NvcnM/P3t9LG1ldGFkYXRhUmVnaXN0cnk6dD8ubWV0YWRhdGE/P3JlLHRhcmdldDpuLHVucmVwcmVzZW50YWJsZTp0Py51bnJlcHJlc2VudGFibGU/PyJ0aHJvdyIsb3ZlcnJpZGU6dD8ub3ZlcnJpZGU/PygoKT0+e30pLGlvOnQ/LmlvPz8ib3V0cHV0Iixjb3VudGVyOjAsc2VlbjpuZXcgTWFwLGN5Y2xlczp0Py5jeWNsZXM/PyJyZWYiLHJldXNlZDp0Py5yZXVzZWQ/PyJpbmxpbmUiLGV4dGVybmFsOnQ/LmV4dGVybmFsPz92b2lkIDB9fWZ1bmN0aW9uIEUodCxuLHI9e3BhdGg6W10sc2NoZW1hUGF0aDpbXX0pe3ZhciBvO2NvbnN0IGU9dC5fem9kLmRlZixpPW4uc2Vlbi5nZXQodCk7aWYoaSlyZXR1cm4gaS5jb3VudCsrLHIuc2NoZW1hUGF0aC5pbmNsdWRlcyh0KSYmKGkuY3ljbGU9ci5wYXRoKSxpLnNjaGVtYTtjb25zdCBhPXtzY2hlbWE6e30sY291bnQ6MSxjeWNsZTp2b2lkIDAscGF0aDpyLnBhdGh9O24uc2Vlbi5zZXQodCxhKTtjb25zdCBzPXQuX3pvZC50b0pTT05TY2hlbWE/LigpO2lmKHMpYS5zY2hlbWE9cztlbHNle2NvbnN0IGw9ey4uLnIsc2NoZW1hUGF0aDpbLi4uci5zY2hlbWFQYXRoLHRdLHBhdGg6ci5wYXRofTtpZih0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWEpdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hKG4sYS5zY2hlbWEsbCk7ZWxzZXtjb25zdCB2PWEuc2NoZW1hLCQ9bi5wcm9jZXNzb3JzW2UudHlwZV07aWYoISQpdGhyb3cgbmV3IEVycm9yKGBbdG9KU09OU2NoZW1hXTogTm9uLXJlcHJlc2VudGFibGUgdHlwZSBlbmNvdW50ZXJlZDogJHtlLnR5cGV9YCk7JCh0LG4sdixsKX1jb25zdCBnPXQuX3pvZC5wYXJlbnQ7ZyYmKGEucmVmfHwoYS5yZWY9ZyksRShnLG4sbCksbi5zZWVuLmdldChnKS5pc1BhcmVudD0hMCl9Y29uc3QgYz1uLm1ldGFkYXRhUmVnaXN0cnkuZ2V0KHQpO3JldHVybiBjJiZPYmplY3QuYXNzaWduKGEuc2NoZW1hLGMpLG4uaW89PT0iaW5wdXQiJiZlZSh0KSYmKGRlbGV0ZSBhLnNjaGVtYS5leGFtcGxlcyxkZWxldGUgYS5zY2hlbWEuZGVmYXVsdCksbi5pbz09PSJpbnB1dCImJiJfcHJlZmF1bHQiaW4gYS5zY2hlbWEmJigobz1hLnNjaGVtYSkuZGVmYXVsdD8/KG8uZGVmYXVsdD1hLnNjaGVtYS5fcHJlZmF1bHQpKSxkZWxldGUgYS5zY2hlbWEuX3ByZWZhdWx0LG4uc2Vlbi5nZXQodCkuc2NoZW1hfWZ1bmN0aW9uIEplKHQsbil7Y29uc3Qgcj10LnNlZW4uZ2V0KG4pO2lmKCFyKXRocm93IG5ldyBFcnJvcigiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC4iKTtjb25zdCBvPW5ldyBNYXA7Zm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz10Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KGFbMF0pPy5pZDtpZihzKXtjb25zdCBjPW8uZ2V0KHMpO2lmKGMmJmMhPT1hWzBdKXRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlIHNjaGVtYSBpZCAiJHtzfSIgZGV0ZWN0ZWQgZHVyaW5nIEpTT04gU2NoZW1hIGNvbnZlcnNpb24uIFR3byBkaWZmZXJlbnQgc2NoZW1hcyBjYW5ub3Qgc2hhcmUgdGhlIHNhbWUgaWQgd2hlbiBjb252ZXJ0ZWQgdG9nZXRoZXIuYCk7by5zZXQocyxhWzBdKX19Y29uc3QgZT1hPT57Y29uc3Qgcz10LnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7aWYodC5leHRlcm5hbCl7Y29uc3QgZz10LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChhWzBdKT8uaWQsdj10LmV4dGVybmFsLnVyaT8/KHk9PnkpO2lmKGcpcmV0dXJue3JlZjp2KGcpfTtjb25zdCAkPWFbMV0uZGVmSWQ/P2FbMV0uc2NoZW1hLmlkPz9gc2NoZW1hJHt0LmNvdW50ZXIrK31gO3JldHVybiBhWzFdLmRlZklkPSQse2RlZklkOiQscmVmOmAke3YoIl9fc2hhcmVkIil9Iy8ke3N9LyR7JH1gfX1pZihhWzFdPT09cilyZXR1cm57cmVmOiIjIn07Y29uc3QgdT1gIy8ke3N9L2AsbD1hWzFdLnNjaGVtYS5pZD8/YF9fc2NoZW1hJHt0LmNvdW50ZXIrK31gO3JldHVybntkZWZJZDpsLHJlZjp1K2x9fSxpPWE9PntpZihhWzFdLnNjaGVtYS4kcmVmKXJldHVybjtjb25zdCBzPWFbMV0se3JlZjpjLGRlZklkOnV9PWUoYSk7cy5kZWY9ey4uLnMuc2NoZW1hfSx1JiYocy5kZWZJZD11KTtjb25zdCBsPXMuc2NoZW1hO2Zvcihjb25zdCBnIGluIGwpZGVsZXRlIGxbZ107bC4kcmVmPWN9O2lmKHQuY3ljbGVzPT09InRocm93Iilmb3IoY29uc3QgYSBvZiB0LnNlZW4uZW50cmllcygpKXtjb25zdCBzPWFbMV07aWYocy5jeWNsZSl0aHJvdyBuZXcgRXJyb3IoYEN5Y2xlIGRldGVjdGVkOiAjLyR7cy5jeWNsZT8uam9pbigiLyIpfS88cm9vdD4KClNldCB0aGUgXGBjeWNsZXNcYCBwYXJhbWV0ZXIgdG8gXGAicmVmIlxgIHRvIHJlc29sdmUgY3ljbGljYWwgc2NoZW1hcyB3aXRoIGRlZnMuYCl9Zm9yKGNvbnN0IGEgb2YgdC5zZWVuLmVudHJpZXMoKSl7Y29uc3Qgcz1hWzFdO2lmKG49PT1hWzBdKXtpKGEpO2NvbnRpbnVlfWlmKHQuZXh0ZXJuYWwpe2NvbnN0IHU9dC5leHRlcm5hbC5yZWdpc3RyeS5nZXQoYVswXSk/LmlkO2lmKG4hPT1hWzBdJiZ1KXtpKGEpO2NvbnRpbnVlfX1pZih0Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KGFbMF0pPy5pZCl7aShhKTtjb250aW51ZX1pZihzLmN5Y2xlKXtpKGEpO2NvbnRpbnVlfWlmKHMuY291bnQ+MSYmdC5yZXVzZWQ9PT0icmVmIil7aShhKTtjb250aW51ZX19fWZ1bmN0aW9uIEhlKHQsbil7Y29uc3Qgcj10LnNlZW4uZ2V0KG4pO2lmKCFyKXRocm93IG5ldyBFcnJvcigiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC4iKTtjb25zdCBvPXM9Pntjb25zdCBjPXQuc2Vlbi5nZXQocyk7aWYoYy5yZWY9PT1udWxsKXJldHVybjtjb25zdCB1PWMuZGVmPz9jLnNjaGVtYSxsPXsuLi51fSxnPWMucmVmO2lmKGMucmVmPW51bGwsZyl7byhnKTtjb25zdCAkPXQuc2Vlbi5nZXQoZykseT0kLnNjaGVtYTtpZih5LiRyZWYmJih0LnRhcmdldD09PSJkcmFmdC0wNyJ8fHQudGFyZ2V0PT09ImRyYWZ0LTA0Inx8dC50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiKT8odS5hbGxPZj11LmFsbE9mPz9bXSx1LmFsbE9mLnB1c2goeSkpOk9iamVjdC5hc3NpZ24odSx5KSxPYmplY3QuYXNzaWduKHUsbCkscy5fem9kLnBhcmVudD09PWcpZm9yKGNvbnN0IFIgaW4gdSlSPT09IiRyZWYifHxSPT09ImFsbE9mInx8UiBpbiBsfHxkZWxldGUgdVtSXTtpZih5LiRyZWYmJiQuZGVmKWZvcihjb25zdCBSIGluIHUpUj09PSIkcmVmInx8Uj09PSJhbGxPZiJ8fFIgaW4gJC5kZWYmJkpTT04uc3RyaW5naWZ5KHVbUl0pPT09SlNPTi5zdHJpbmdpZnkoJC5kZWZbUl0pJiZkZWxldGUgdVtSXX1jb25zdCB2PXMuX3pvZC5wYXJlbnQ7aWYodiYmdiE9PWcpe28odik7Y29uc3QgJD10LnNlZW4uZ2V0KHYpO2lmKCQ/LnNjaGVtYS4kcmVmJiYodS4kcmVmPSQuc2NoZW1hLiRyZWYsJC5kZWYpKWZvcihjb25zdCB5IGluIHUpeT09PSIkcmVmInx8eT09PSJhbGxPZiJ8fHkgaW4gJC5kZWYmJkpTT04uc3RyaW5naWZ5KHVbeV0pPT09SlNPTi5zdHJpbmdpZnkoJC5kZWZbeV0pJiZkZWxldGUgdVt5XX10Lm92ZXJyaWRlKHt6b2RTY2hlbWE6cyxqc29uU2NoZW1hOnUscGF0aDpjLnBhdGg/P1tdfSl9O2Zvcihjb25zdCBzIG9mWy4uLnQuc2Vlbi5lbnRyaWVzKCldLnJldmVyc2UoKSlvKHNbMF0pO2NvbnN0IGU9e307aWYodC50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/ZS4kc2NoZW1hPSJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYSI6dC50YXJnZXQ9PT0iZHJhZnQtMDciP2UuJHNjaGVtYT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIjp0LnRhcmdldD09PSJkcmFmdC0wNCI/ZS4kc2NoZW1hPSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiOnQudGFyZ2V0LHQuZXh0ZXJuYWw/LnVyaSl7Y29uc3Qgcz10LmV4dGVybmFsLnJlZ2lzdHJ5LmdldChuKT8uaWQ7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJTY2hlbWEgaXMgbWlzc2luZyBhbiBgaWRgIHByb3BlcnR5Iik7ZS4kaWQ9dC5leHRlcm5hbC51cmkocyl9T2JqZWN0LmFzc2lnbihlLHIuZGVmPz9yLnNjaGVtYSk7Y29uc3QgaT10Lm1ldGFkYXRhUmVnaXN0cnkuZ2V0KG4pPy5pZDtpIT09dm9pZCAwJiZlLmlkPT09aSYmZGVsZXRlIGUuaWQ7Y29uc3QgYT10LmV4dGVybmFsPy5kZWZzPz97fTtmb3IoY29uc3QgcyBvZiB0LnNlZW4uZW50cmllcygpKXtjb25zdCBjPXNbMV07Yy5kZWYmJmMuZGVmSWQmJihjLmRlZi5pZD09PWMuZGVmSWQmJmRlbGV0ZSBjLmRlZi5pZCxhW2MuZGVmSWRdPWMuZGVmKX10LmV4dGVybmFsfHxPYmplY3Qua2V5cyhhKS5sZW5ndGg+MCYmKHQudGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiP2UuJGRlZnM9YTplLmRlZmluaXRpb25zPWEpO3RyeXtjb25zdCBzPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocywifnN0YW5kYXJkIix7dmFsdWU6ey4uLm5bIn5zdGFuZGFyZCJdLGpzb25TY2hlbWE6e2lucHV0OnZ0KG4sImlucHV0Iix0LnByb2Nlc3NvcnMpLG91dHB1dDp2dChuLCJvdXRwdXQiLHQucHJvY2Vzc29ycyl9fSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExfSksc31jYXRjaHt0aHJvdyBuZXcgRXJyb3IoIkVycm9yIGNvbnZlcnRpbmcgc2NoZW1hIHRvIEpTT04uIil9fWZ1bmN0aW9uIGVlKHQsbil7Y29uc3Qgcj1uPz97c2VlbjpuZXcgU2V0fTtpZihyLnNlZW4uaGFzKHQpKXJldHVybiExO3Iuc2Vlbi5hZGQodCk7Y29uc3Qgbz10Ll96b2QuZGVmO2lmKG8udHlwZT09PSJ0cmFuc2Zvcm0iKXJldHVybiEwO2lmKG8udHlwZT09PSJhcnJheSIpcmV0dXJuIGVlKG8uZWxlbWVudCxyKTtpZihvLnR5cGU9PT0ic2V0IilyZXR1cm4gZWUoby52YWx1ZVR5cGUscik7aWYoby50eXBlPT09ImxhenkiKXJldHVybiBlZShvLmdldHRlcigpLHIpO2lmKG8udHlwZT09PSJwcm9taXNlInx8by50eXBlPT09Im9wdGlvbmFsInx8by50eXBlPT09Im5vbm9wdGlvbmFsInx8by50eXBlPT09Im51bGxhYmxlInx8by50eXBlPT09InJlYWRvbmx5Inx8by50eXBlPT09ImRlZmF1bHQifHxvLnR5cGU9PT0icHJlZmF1bHQiKXJldHVybiBlZShvLmlubmVyVHlwZSxyKTtpZihvLnR5cGU9PT0iaW50ZXJzZWN0aW9uIilyZXR1cm4gZWUoby5sZWZ0LHIpfHxlZShvLnJpZ2h0LHIpO2lmKG8udHlwZT09PSJyZWNvcmQifHxvLnR5cGU9PT0ibWFwIilyZXR1cm4gZWUoby5rZXlUeXBlLHIpfHxlZShvLnZhbHVlVHlwZSxyKTtpZihvLnR5cGU9PT0icGlwZSIpcmV0dXJuIHQuX3pvZC50cmFpdHMuaGFzKCIkWm9kQ29kZWMiKT8hMDplZShvLmluLHIpfHxlZShvLm91dCxyKTtpZihvLnR5cGU9PT0ib2JqZWN0Iil7Zm9yKGNvbnN0IGUgaW4gby5zaGFwZSlpZihlZShvLnNoYXBlW2VdLHIpKXJldHVybiEwO3JldHVybiExfWlmKG8udHlwZT09PSJ1bmlvbiIpe2Zvcihjb25zdCBlIG9mIG8ub3B0aW9ucylpZihlZShlLHIpKXJldHVybiEwO3JldHVybiExfWlmKG8udHlwZT09PSJ0dXBsZSIpe2Zvcihjb25zdCBlIG9mIG8uaXRlbXMpaWYoZWUoZSxyKSlyZXR1cm4hMDtyZXR1cm4hIShvLnJlc3QmJmVlKG8ucmVzdCxyKSl9cmV0dXJuITF9Y29uc3QgaWQ9KHQsbj17fSk9PnI9Pntjb25zdCBvPUZlKHsuLi5yLHByb2Nlc3NvcnM6bn0pO3JldHVybiBFKHQsbyksSmUobyx0KSxIZShvLHQpfSx2dD0odCxuLHI9e30pPT5vPT57Y29uc3R7bGlicmFyeU9wdGlvbnM6ZSx0YXJnZXQ6aX09bz8/e30sYT1GZSh7Li4uZT8/e30sdGFyZ2V0OmksaW86bixwcm9jZXNzb3JzOnJ9KTtyZXR1cm4gRSh0LGEpLEplKGEsdCksSGUoYSx0KX0sTGc9e2d1aWQ6InV1aWQiLHVybDoidXJpIixkYXRldGltZToiZGF0ZS10aW1lIixqc29uX3N0cmluZzoianNvbi1zdHJpbmciLHJlZ2V4OiIifSxvZD0odCxuLHIsbyk9Pntjb25zdCBlPXI7ZS50eXBlPSJzdHJpbmciO2NvbnN0e21pbmltdW06aSxtYXhpbXVtOmEsZm9ybWF0OnMscGF0dGVybnM6Yyxjb250ZW50RW5jb2Rpbmc6dX09dC5fem9kLmJhZztpZih0eXBlb2YgaT09Im51bWJlciImJihlLm1pbkxlbmd0aD1pKSx0eXBlb2YgYT09Im51bWJlciImJihlLm1heExlbmd0aD1hKSxzJiYoZS5mb3JtYXQ9TGdbc10/P3MsZS5mb3JtYXQ9PT0iIiYmZGVsZXRlIGUuZm9ybWF0LHM9PT0idGltZSImJmRlbGV0ZSBlLmZvcm1hdCksdSYmKGUuY29udGVudEVuY29kaW5nPXUpLGMmJmMuc2l6ZT4wKXtjb25zdCBsPVsuLi5jXTtsLmxlbmd0aD09PTE/ZS5wYXR0ZXJuPWxbMF0uc291cmNlOmwubGVuZ3RoPjEmJihlLmFsbE9mPVsuLi5sLm1hcChnPT4oey4uLm4udGFyZ2V0PT09ImRyYWZ0LTA3Inx8bi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/e3R5cGU6InN0cmluZyJ9Ont9LHBhdHRlcm46Zy5zb3VyY2V9KSldKX19LGFkPSh0LG4scixvKT0+e2NvbnN0IGU9cix7bWluaW11bTppLG1heGltdW06YSxmb3JtYXQ6cyxtdWx0aXBsZU9mOmMsZXhjbHVzaXZlTWF4aW11bTp1LGV4Y2x1c2l2ZU1pbmltdW06bH09dC5fem9kLmJhZzt0eXBlb2Ygcz09InN0cmluZyImJnMuaW5jbHVkZXMoImludCIpP2UudHlwZT0iaW50ZWdlciI6ZS50eXBlPSJudW1iZXIiO2NvbnN0IGc9dHlwZW9mIGw9PSJudW1iZXIiJiZsPj0oaT8/TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSx2PXR5cGVvZiB1PT0ibnVtYmVyIiYmdTw9KGE/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSksJD1uLnRhcmdldD09PSJkcmFmdC0wNCJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIjtnPyQ/KGUubWluaW11bT1sLGUuZXhjbHVzaXZlTWluaW11bT0hMCk6ZS5leGNsdXNpdmVNaW5pbXVtPWw6dHlwZW9mIGk9PSJudW1iZXIiJiYoZS5taW5pbXVtPWkpLHY/JD8oZS5tYXhpbXVtPXUsZS5leGNsdXNpdmVNYXhpbXVtPSEwKTplLmV4Y2x1c2l2ZU1heGltdW09dTp0eXBlb2YgYT09Im51bWJlciImJihlLm1heGltdW09YSksdHlwZW9mIGM9PSJudW1iZXIiJiYoZS5tdWx0aXBsZU9mPWMpfSxzZD0odCxuLHIsbyk9PntyLnR5cGU9ImJvb2xlYW4ifSxjZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHVkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlN5bWJvbHMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGxkPSh0LG4scixvKT0+e24udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8oci50eXBlPSJzdHJpbmciLHIubnVsbGFibGU9ITAsci5lbnVtPVtudWxsXSk6ci50eXBlPSJudWxsIn0sZGQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiVW5kZWZpbmVkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxtZD0odCxuLHIsbyk9PntpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxwZD0odCxuLHIsbyk9PntyLm5vdD17fX0sZmQ9KHQsbixyLG8pPT57fSxnZD0odCxuLHIsbyk9Pnt9LHZkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkRhdGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LGhkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZixpPW9pKGUuZW50cmllcyk7aS5ldmVyeShhPT50eXBlb2YgYT09Im51bWJlciIpJiYoci50eXBlPSJudW1iZXIiKSxpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ic3RyaW5nIikmJihyLnR5cGU9InN0cmluZyIpLHIuZW51bT1pfSwkZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1bXTtmb3IoY29uc3QgYSBvZiBlLnZhbHVlcylpZihhPT09dm9pZCAwKXtpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJMaXRlcmFsIGB1bmRlZmluZWRgIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfWVsc2UgaWYodHlwZW9mIGE9PSJiaWdpbnQiKXtpZihuLnVucmVwcmVzZW50YWJsZT09PSJ0aHJvdyIpdGhyb3cgbmV3IEVycm9yKCJCaWdJbnQgbGl0ZXJhbHMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIik7aS5wdXNoKE51bWJlcihhKSl9ZWxzZSBpLnB1c2goYSk7aWYoaS5sZW5ndGghPT0wKWlmKGkubGVuZ3RoPT09MSl7Y29uc3QgYT1pWzBdO3IudHlwZT1hPT09bnVsbD8ibnVsbCI6dHlwZW9mIGEsbi50YXJnZXQ9PT0iZHJhZnQtMDQifHxuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/ci5lbnVtPVthXTpyLmNvbnN0PWF9ZWxzZSBpLmV2ZXJ5KGE9PnR5cGVvZiBhPT0ibnVtYmVyIikmJihyLnR5cGU9Im51bWJlciIpLGkuZXZlcnkoYT0+dHlwZW9mIGE9PSJzdHJpbmciKSYmKHIudHlwZT0ic3RyaW5nIiksaS5ldmVyeShhPT50eXBlb2YgYT09ImJvb2xlYW4iKSYmKHIudHlwZT0iYm9vbGVhbiIpLGkuZXZlcnkoYT0+YT09PW51bGwpJiYoci50eXBlPSJudWxsIiksci5lbnVtPWl9LF9kPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIk5hTiBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sYmQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9dC5fem9kLnBhdHRlcm47aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJQYXR0ZXJuIG5vdCBmb3VuZCBpbiB0ZW1wbGF0ZSBsaXRlcmFsIik7ZS50eXBlPSJzdHJpbmciLGUucGF0dGVybj1pLnNvdXJjZX0seWQ9KHQsbixyLG8pPT57Y29uc3QgZT1yLGk9e3R5cGU6InN0cmluZyIsZm9ybWF0OiJiaW5hcnkiLGNvbnRlbnRFbmNvZGluZzoiYmluYXJ5In0se21pbmltdW06YSxtYXhpbXVtOnMsbWltZTpjfT10Ll96b2QuYmFnO2EhPT12b2lkIDAmJihpLm1pbkxlbmd0aD1hKSxzIT09dm9pZCAwJiYoaS5tYXhMZW5ndGg9cyksYz9jLmxlbmd0aD09PTE/KGkuY29udGVudE1lZGlhVHlwZT1jWzBdLE9iamVjdC5hc3NpZ24oZSxpKSk6KE9iamVjdC5hc3NpZ24oZSxpKSxlLmFueU9mPWMubWFwKHU9Pih7Y29udGVudE1lZGlhVHlwZTp1fSkpKTpPYmplY3QuYXNzaWduKGUsaSl9LGtkPSh0LG4scixvKT0+e3IudHlwZT0iYm9vbGVhbiJ9LFNkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIkN1c3RvbSB0eXBlcyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0sd2Q9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiRnVuY3Rpb24gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LElkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIlRyYW5zZm9ybXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hIil9LHpkPSh0LG4scixvKT0+e2lmKG4udW5yZXByZXNlbnRhYmxlPT09InRocm93Iil0aHJvdyBuZXcgRXJyb3IoIk1hcCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWEiKX0seGQ9KHQsbixyLG8pPT57aWYobi51bnJlcHJlc2VudGFibGU9PT0idGhyb3ciKXRocm93IG5ldyBFcnJvcigiU2V0IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYSIpfSxUZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmLHttaW5pbXVtOmEsbWF4aW11bTpzfT10Ll96b2QuYmFnO3R5cGVvZiBhPT0ibnVtYmVyIiYmKGUubWluSXRlbXM9YSksdHlwZW9mIHM9PSJudW1iZXIiJiYoZS5tYXhJdGVtcz1zKSxlLnR5cGU9ImFycmF5IixlLml0ZW1zPUUoaS5lbGVtZW50LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJpdGVtcyJdfSl9LGpkPSh0LG4scixvKT0+e2NvbnN0IGU9cixpPXQuX3pvZC5kZWY7ZS50eXBlPSJvYmplY3QiLGUucHJvcGVydGllcz17fTtjb25zdCBhPWkuc2hhcGU7Zm9yKGNvbnN0IHUgaW4gYSllLnByb3BlcnRpZXNbdV09RShhW3VdLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJwcm9wZXJ0aWVzIix1XX0pO2NvbnN0IHM9bmV3IFNldChPYmplY3Qua2V5cyhhKSksYz1uZXcgU2V0KFsuLi5zXS5maWx0ZXIodT0+e2NvbnN0IGw9aS5zaGFwZVt1XS5fem9kO3JldHVybiBuLmlvPT09ImlucHV0Ij9sLm9wdGluPT09dm9pZCAwOmwub3B0b3V0PT09dm9pZCAwfSkpO2Muc2l6ZT4wJiYoZS5yZXF1aXJlZD1BcnJheS5mcm9tKGMpKSxpLmNhdGNoYWxsPy5fem9kLmRlZi50eXBlPT09Im5ldmVyIj9lLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPSExOmkuY2F0Y2hhbGw/aS5jYXRjaGFsbCYmKGUuYWRkaXRpb25hbFByb3BlcnRpZXM9RShpLmNhdGNoYWxsLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhZGRpdGlvbmFsUHJvcGVydGllcyJdfSkpOm4uaW89PT0ib3V0cHV0IiYmKGUuYWRkaXRpb25hbFByb3BlcnRpZXM9ITEpfSxybz0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWYsaT1lLmluY2x1c2l2ZT09PSExLGE9ZS5vcHRpb25zLm1hcCgocyxjKT0+RShzLG4sey4uLm8scGF0aDpbLi4uby5wYXRoLGk/Im9uZU9mIjoiYW55T2YiLGNdfSkpO2k/ci5vbmVPZj1hOnIuYW55T2Y9YX0sVWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9RShlLmxlZnQsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsImFsbE9mIiwwXX0pLGE9RShlLnJpZ2h0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLCJhbGxPZiIsMV19KSxzPXU9PiJhbGxPZiJpbiB1JiZPYmplY3Qua2V5cyh1KS5sZW5ndGg9PT0xLGM9Wy4uLnMoaSk/aS5hbGxPZjpbaV0sLi4ucyhhKT9hLmFsbE9mOlthXV07ci5hbGxPZj1jfSxQZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0iYXJyYXkiO2NvbnN0IGE9bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiI/InByZWZpeEl0ZW1zIjoiaXRlbXMiLHM9bi50YXJnZXQ9PT0iZHJhZnQtMjAyMC0xMiJ8fG4udGFyZ2V0PT09Im9wZW5hcGktMy4wIj8iaXRlbXMiOiJhZGRpdGlvbmFsSXRlbXMiLGM9aS5pdGVtcy5tYXAoKHYsJCk9PkUodixuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCxhLCRdfSkpLHU9aS5yZXN0P0UoaS5yZXN0LG4sey4uLm8scGF0aDpbLi4uby5wYXRoLHMsLi4ubi50YXJnZXQ9PT0ib3BlbmFwaS0zLjAiP1tpLml0ZW1zLmxlbmd0aF06W11dfSk6bnVsbDtuLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8oZS5wcmVmaXhJdGVtcz1jLHUmJihlLml0ZW1zPXUpKTpuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KGUuaXRlbXM9e2FueU9mOmN9LHUmJmUuaXRlbXMuYW55T2YucHVzaCh1KSxlLm1pbkl0ZW1zPWMubGVuZ3RoLHV8fChlLm1heEl0ZW1zPWMubGVuZ3RoKSk6KGUuaXRlbXM9Yyx1JiYoZS5hZGRpdGlvbmFsSXRlbXM9dSkpO2NvbnN0e21pbmltdW06bCxtYXhpbXVtOmd9PXQuX3pvZC5iYWc7dHlwZW9mIGw9PSJudW1iZXIiJiYoZS5taW5JdGVtcz1sKSx0eXBlb2YgZz09Im51bWJlciImJihlLm1heEl0ZW1zPWcpfSxPZD0odCxuLHIsbyk9Pntjb25zdCBlPXIsaT10Ll96b2QuZGVmO2UudHlwZT0ib2JqZWN0Ijtjb25zdCBhPWkua2V5VHlwZSxjPWEuX3pvZC5iYWc/LnBhdHRlcm5zO2lmKGkubW9kZT09PSJsb29zZSImJmMmJmMuc2l6ZT4wKXtjb25zdCBsPUUoaS52YWx1ZVR5cGUsbix7Li4ubyxwYXRoOlsuLi5vLnBhdGgsInBhdHRlcm5Qcm9wZXJ0aWVzIiwiKiJdfSk7ZS5wYXR0ZXJuUHJvcGVydGllcz17fTtmb3IoY29uc3QgZyBvZiBjKWUucGF0dGVyblByb3BlcnRpZXNbZy5zb3VyY2VdPWx9ZWxzZShuLnRhcmdldD09PSJkcmFmdC0wNyJ8fG4udGFyZ2V0PT09ImRyYWZ0LTIwMjAtMTIiKSYmKGUucHJvcGVydHlOYW1lcz1FKGkua2V5VHlwZSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwicHJvcGVydHlOYW1lcyJdfSkpLGUuYWRkaXRpb25hbFByb3BlcnRpZXM9RShpLnZhbHVlVHlwZSxuLHsuLi5vLHBhdGg6Wy4uLm8ucGF0aCwiYWRkaXRpb25hbFByb3BlcnRpZXMiXX0pO2NvbnN0IHU9YS5fem9kLnZhbHVlcztpZih1KXtjb25zdCBsPVsuLi51XS5maWx0ZXIoZz0+dHlwZW9mIGc9PSJzdHJpbmcifHx0eXBlb2YgZz09Im51bWJlciIpO2wubGVuZ3RoPjAmJihlLnJlcXVpcmVkPWwpfX0sRGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9RShlLmlubmVyVHlwZSxuLG8pLGE9bi5zZWVuLmdldCh0KTtuLnRhcmdldD09PSJvcGVuYXBpLTMuMCI/KGEucmVmPWUuaW5uZXJUeXBlLHIubnVsbGFibGU9ITApOnIuYW55T2Y9W2kse3R5cGU6Im51bGwifV19LE5kPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxFZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZSxyLmRlZmF1bHQ9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlLmRlZmF1bHRWYWx1ZSkpfSxaZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5kZWY7RShlLmlubmVyVHlwZSxuLG8pO2NvbnN0IGk9bi5zZWVuLmdldCh0KTtpLnJlZj1lLmlubmVyVHlwZSxuLmlvPT09ImlucHV0IiYmKHIuX3ByZWZhdWx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZS5kZWZhdWx0VmFsdWUpKSl9LFJkPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlO2xldCBhO3RyeXthPWUuY2F0Y2hWYWx1ZSh2b2lkIDApfWNhdGNoe3Rocm93IG5ldyBFcnJvcigiRHluYW1pYyBjYXRjaCB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBTY2hlbWEiKX1yLmRlZmF1bHQ9YX0sQ2Q9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmLGk9ZS5pbi5fem9kLnRyYWl0cy5oYXMoIiRab2RUcmFuc2Zvcm0iKSxhPW4uaW89PT0iaW5wdXQiP2k/ZS5vdXQ6ZS5pbjplLm91dDtFKGEsbixvKTtjb25zdCBzPW4uc2Vlbi5nZXQodCk7cy5yZWY9YX0sQWQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGUsci5yZWFkT25seT0hMH0sTGQ9KHQsbixyLG8pPT57Y29uc3QgZT10Ll96b2QuZGVmO0UoZS5pbm5lclR5cGUsbixvKTtjb25zdCBpPW4uc2Vlbi5nZXQodCk7aS5yZWY9ZS5pbm5lclR5cGV9LGlvPSh0LG4scixvKT0+e2NvbnN0IGU9dC5fem9kLmRlZjtFKGUuaW5uZXJUeXBlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWUuaW5uZXJUeXBlfSxNZD0odCxuLHIsbyk9Pntjb25zdCBlPXQuX3pvZC5pbm5lclR5cGU7RShlLG4sbyk7Y29uc3QgaT1uLnNlZW4uZ2V0KHQpO2kucmVmPWV9LHRpPXtzdHJpbmc6b2QsbnVtYmVyOmFkLGJvb2xlYW46c2QsYmlnaW50OmNkLHN5bWJvbDp1ZCxudWxsOmxkLHVuZGVmaW5lZDpkZCx2b2lkOm1kLG5ldmVyOnBkLGFueTpmZCx1bmtub3duOmdkLGRhdGU6dmQsZW51bTpoZCxsaXRlcmFsOiRkLG5hbjpfZCx0ZW1wbGF0ZV9saXRlcmFsOmJkLGZpbGU6eWQsc3VjY2VzczprZCxjdXN0b206U2QsZnVuY3Rpb246d2QsdHJhbnNmb3JtOklkLG1hcDp6ZCxzZXQ6eGQsYXJyYXk6VGQsb2JqZWN0OmpkLHVuaW9uOnJvLGludGVyc2VjdGlvbjpVZCx0dXBsZTpQZCxyZWNvcmQ6T2QsbnVsbGFibGU6RGQsbm9ub3B0aW9uYWw6TmQsZGVmYXVsdDpFZCxwcmVmYXVsdDpaZCxjYXRjaDpSZCxwaXBlOkNkLHJlYWRvbmx5OkFkLHByb21pc2U6TGQsb3B0aW9uYWw6aW8sbGF6eTpNZH07ZnVuY3Rpb24gb28odCxuKXtpZigiX2lkbWFwImluIHQpe2NvbnN0IG89dCxlPUZlKHsuLi5uLHByb2Nlc3NvcnM6dGl9KSxpPXt9O2Zvcihjb25zdCBjIG9mIG8uX2lkbWFwLmVudHJpZXMoKSl7Y29uc3RbdSxsXT1jO0UobCxlKX1jb25zdCBhPXt9LHM9e3JlZ2lzdHJ5Om8sdXJpOm4/LnVyaSxkZWZzOml9O2UuZXh0ZXJuYWw9cztmb3IoY29uc3QgYyBvZiBvLl9pZG1hcC5lbnRyaWVzKCkpe2NvbnN0W3UsbF09YztKZShlLGwpLGFbdV09SGUoZSxsKX1pZihPYmplY3Qua2V5cyhpKS5sZW5ndGg+MCl7Y29uc3QgYz1lLnRhcmdldD09PSJkcmFmdC0yMDIwLTEyIj8iJGRlZnMiOiJkZWZpbml0aW9ucyI7YS5fX3NoYXJlZD17W2NdOml9fXJldHVybntzY2hlbWFzOmF9fWNvbnN0IHI9RmUoey4uLm4scHJvY2Vzc29yczp0aX0pO3JldHVybiBFKHQsciksSmUocix0KSxIZShyLHQpfWNsYXNzIE1ne2dldCBtZXRhZGF0YVJlZ2lzdHJ5KCl7cmV0dXJuIHRoaXMuY3R4Lm1ldGFkYXRhUmVnaXN0cnl9Z2V0IHRhcmdldCgpe3JldHVybiB0aGlzLmN0eC50YXJnZXR9Z2V0IHVucmVwcmVzZW50YWJsZSgpe3JldHVybiB0aGlzLmN0eC51bnJlcHJlc2VudGFibGV9Z2V0IG92ZXJyaWRlKCl7cmV0dXJuIHRoaXMuY3R4Lm92ZXJyaWRlfWdldCBpbygpe3JldHVybiB0aGlzLmN0eC5pb31nZXQgY291bnRlcigpe3JldHVybiB0aGlzLmN0eC5jb3VudGVyfXNldCBjb3VudGVyKG4pe3RoaXMuY3R4LmNvdW50ZXI9bn1nZXQgc2Vlbigpe3JldHVybiB0aGlzLmN0eC5zZWVufWNvbnN0cnVjdG9yKG4pe2xldCByPW4/LnRhcmdldD8/ImRyYWZ0LTIwMjAtMTIiO3I9PT0iZHJhZnQtNCImJihyPSJkcmFmdC0wNCIpLHI9PT0iZHJhZnQtNyImJihyPSJkcmFmdC0wNyIpLHRoaXMuY3R4PUZlKHtwcm9jZXNzb3JzOnRpLHRhcmdldDpyLC4uLm4/Lm1ldGFkYXRhJiZ7bWV0YWRhdGE6bi5tZXRhZGF0YX0sLi4ubj8udW5yZXByZXNlbnRhYmxlJiZ7dW5yZXByZXNlbnRhYmxlOm4udW5yZXByZXNlbnRhYmxlfSwuLi5uPy5vdmVycmlkZSYme292ZXJyaWRlOm4ub3ZlcnJpZGV9LC4uLm4/LmlvJiZ7aW86bi5pb319KX1wcm9jZXNzKG4scj17cGF0aDpbXSxzY2hlbWFQYXRoOltdfSl7cmV0dXJuIEUobix0aGlzLmN0eCxyKX1lbWl0KG4scil7ciYmKHIuY3ljbGVzJiYodGhpcy5jdHguY3ljbGVzPXIuY3ljbGVzKSxyLnJldXNlZCYmKHRoaXMuY3R4LnJldXNlZD1yLnJldXNlZCksci5leHRlcm5hbCYmKHRoaXMuY3R4LmV4dGVybmFsPXIuZXh0ZXJuYWwpKSxKZSh0aGlzLmN0eCxuKTtjb25zdCBvPUhlKHRoaXMuY3R4LG4pLHsifnN0YW5kYXJkIjplLC4uLml9PW87cmV0dXJuIGl9fWNvbnN0IHFnPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbH0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSxxZD1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJFpvZEFueTpOdSwkWm9kQXJyYXk6QXUsJFpvZEFzeW5jRXJyb3I6eGUsJFpvZEJhc2U2NDprdSwkWm9kQmFzZTY0VVJMOnd1LCRab2RCaWdJbnQ6VGksJFpvZEJpZ0ludEZvcm1hdDpVdSwkWm9kQm9vbGVhbjp4aSwkWm9kQ0lEUnY0OmJ1LCRab2RDSURSdjY6eXUsJFpvZENVSUQ6Y3UsJFpvZENVSUQyOnV1LCRab2RDYXRjaDphbCwkWm9kQ2hlY2s6cSwkWm9kQ2hlY2tCaWdJbnRGb3JtYXQ6Q2MsJFpvZENoZWNrRW5kc1dpdGg6R2MsJFpvZENoZWNrR3JlYXRlclRoYW46d2ksJFpvZENoZWNrSW5jbHVkZXM6QmMsJFpvZENoZWNrTGVuZ3RoRXF1YWxzOkpjLCRab2RDaGVja0xlc3NUaGFuOlNpLCRab2RDaGVja0xvd2VyQ2FzZTpWYywkWm9kQ2hlY2tNYXhMZW5ndGg6cWMsJFpvZENoZWNrTWF4U2l6ZTpBYywkWm9kQ2hlY2tNaW1lVHlwZTpZYywkWm9kQ2hlY2tNaW5MZW5ndGg6RmMsJFpvZENoZWNrTWluU2l6ZTpMYywkWm9kQ2hlY2tNdWx0aXBsZU9mOlpjLCRab2RDaGVja051bWJlckZvcm1hdDpSYywkWm9kQ2hlY2tPdmVyd3JpdGU6UWMsJFpvZENoZWNrUHJvcGVydHk6WGMsJFpvZENoZWNrUmVnZXg6SGMsJFpvZENoZWNrU2l6ZUVxdWFsczpNYywkWm9kQ2hlY2tTdGFydHNXaXRoOldjLCRab2RDaGVja1N0cmluZ0Zvcm1hdDp4dCwkWm9kQ2hlY2tVcHBlckNhc2U6S2MsJFpvZENvZGVjOk9pLCRab2RDdXN0b206ZmwsJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpUdSwkWm9kRGF0ZTpDdSwkWm9kRGVmYXVsdDpubCwkWm9kRGlzY3JpbWluYXRlZFVuaW9uOkh1LCRab2RFMTY0Okl1LCRab2RFbWFpbDppdSwkWm9kRW1vamk6YXUsJFpvZEVuY29kZUVycm9yOkNuLCRab2RFbnVtOkd1LCRab2RFcnJvcjpjaSwkWm9kRXhhY3RPcHRpb25hbDplbCwkWm9kRmlsZTpZdSwkWm9kRnVuY3Rpb246ZGwsJFpvZEdVSUQ6bnUsJFpvZElQdjQ6aHUsJFpvZElQdjY6JHUsJFpvZElTT0RhdGU6ZnUsJFpvZElTT0RhdGVUaW1lOnB1LCRab2RJU09EdXJhdGlvbjp2dSwkWm9kSVNPVGltZTpndSwkWm9kSW50ZXJzZWN0aW9uOlZ1LCRab2RKV1Q6eHUsJFpvZEtTVUlEOm11LCRab2RMYXp5OnBsLCRab2RMaXRlcmFsOlh1LCRab2RNQUM6X3UsJFpvZE1hcDpCdSwkWm9kTmFOOnNsLCRab2ROYW5vSUQ6c3UsJFpvZE5ldmVyOlp1LCRab2ROb25PcHRpb25hbDppbCwkWm9kTnVsbDpEdSwkWm9kTnVsbGFibGU6dGwsJFpvZE51bWJlcjp6aSwkWm9kTnVtYmVyRm9ybWF0Omp1LCRab2RPYmplY3Q6cXUsJFpvZE9iamVjdEpJVDpGdSwkWm9kT3B0aW9uYWw6VWksJFpvZFBpcGU6UGksJFpvZFByZWZhdWx0OnJsLCRab2RQcmVwcm9jZXNzOmNsLCRab2RQcm9taXNlOm1sLCRab2RSZWFkb25seTp1bCwkWm9kUmVhbEVycm9yOnNlLCRab2RSZWNvcmQ6S3UsJFpvZFJlZ2lzdHJ5OiRsLCRab2RTZXQ6V3UsJFpvZFN0cmluZzpUdCwkWm9kU3RyaW5nRm9ybWF0OkwsJFpvZFN1Y2Nlc3M6b2wsJFpvZFN5bWJvbDpQdSwkWm9kVGVtcGxhdGVMaXRlcmFsOmxsLCRab2RUcmFuc2Zvcm06UXUsJFpvZFR1cGxlOmppLCRab2RUeXBlOkksJFpvZFVMSUQ6bHUsJFpvZFVSTDpvdSwkWm9kVVVJRDpydSwkWm9kVW5kZWZpbmVkOk91LCRab2RVbmlvbjpWbiwkWm9kVW5rbm93bjpFdSwkWm9kVm9pZDpSdSwkWm9kWElEOmR1LCRab2RYb3I6SnUsJGJyYW5kOmlpLCRjb25zdHJ1Y3RvcjpkLCRpbnB1dDpFaSwkb3V0cHV0Ok5pLERvYzpldSxKU09OU2NoZW1hOnFnLEpTT05TY2hlbWFHZW5lcmF0b3I6TWcsTkVWRVI6cmksVGltZVByZWNpc2lvbjpubyxfYW55OnFsLF9hcnJheTpXbCxfYmFzZTY0OllpLF9iYXNlNjR1cmw6UWksX2JpZ2ludDpFbCxfYm9vbGVhbjpEbCxfY2F0Y2g6TmcsX2NoZWNrOmVkLF9jaWRydjQ6R2ksX2NpZHJ2NjpYaSxfY29lcmNlZEJpZ2ludDpabCxfY29lcmNlZEJvb2xlYW46TmwsX2NvZXJjZWREYXRlOktsLF9jb2VyY2VkTnVtYmVyOnhsLF9jb2VyY2VkU3RyaW5nOmJsLF9jdWlkOkZpLF9jdWlkMjpKaSxfY3VzdG9tOlhsLF9kYXRlOlZsLF9kZWNvZGU6cGksX2RlY29kZUFzeW5jOmdpLF9kZWZhdWx0OlBnLF9kaXNjcmltaW5hdGVkVW5pb246X2csX2UxNjQ6ZW8sX2VtYWlsOlppLF9lbW9qaTpNaSxfZW5jb2RlOm1pLF9lbmNvZGVBc3luYzpmaSxfZW5kc1dpdGg6TnQsX2VudW06SWcsX2ZpbGU6R2wsX2Zsb2F0MzI6amwsX2Zsb2F0NjQ6VWwsX2d0OiRlLF9ndGU6dGUsX2d1aWQ6RG4sX2luY2x1ZGVzOk90LF9pbnQ6VGwsX2ludDMyOlBsLF9pbnQ2NDpSbCxfaW50ZXJzZWN0aW9uOmJnLF9pcHY0OkJpLF9pcHY2OldpLF9pc29EYXRlOlNsLF9pc29EYXRlVGltZTprbCxfaXNvRHVyYXRpb246SWwsX2lzb1RpbWU6d2wsX2p3dDp0byxfa3N1aWQ6S2ksX2xhenk6Q2csX2xlbmd0aDpRZSxfbGl0ZXJhbDp4ZyxfbG93ZXJjYXNlOlV0LF9sdDpoZSxfbHRlOmllLF9tYWM6eWwsX21hcDpTZyxfbWF4OmllLF9tYXhMZW5ndGg6WWUsX21heFNpemU6RWUsX21pbWU6RXQsX21pbjp0ZSxfbWluTGVuZ3RoOmJlLF9taW5TaXplOl9lLF9tdWx0aXBsZU9mOmplLF9uYW46QmwsX25hbm9pZDpxaSxfbmF0aXZlRW51bTp6ZyxfbmVnYXRpdmU6R24sX25ldmVyOkpsLF9ub25uZWdhdGl2ZTpZbixfbm9ub3B0aW9uYWw6T2csX25vbnBvc2l0aXZlOlhuLF9ub3JtYWxpemU6WnQsX251bGw6TWwsX251bGxhYmxlOlVnLF9udW1iZXI6emwsX29wdGlvbmFsOmpnLF9vdmVyd3JpdGU6Z2UsX3BhcnNlOnl0LF9wYXJzZUFzeW5jOmt0LF9waXBlOkVnLF9wb3NpdGl2ZTpXbixfcHJvbWlzZTpBZyxfcHJvcGVydHk6UW4sX3JlYWRvbmx5OlpnLF9yZWNvcmQ6a2csX3JlZmluZTpZbCxfcmVnZXg6anQsX3NhZmVEZWNvZGU6aGksX3NhZmVEZWNvZGVBc3luYzpfaSxfc2FmZUVuY29kZTp2aSxfc2FmZUVuY29kZUFzeW5jOiRpLF9zYWZlUGFyc2U6U3QsX3NhZmVQYXJzZUFzeW5jOnd0LF9zZXQ6d2csX3NpemU6WGUsX3NsdWdpZnk6THQsX3N0YXJ0c1dpdGg6RHQsX3N0cmluZzpfbCxfc3RyaW5nRm9ybWF0Ok10LF9zdHJpbmdib29sOnJkLF9zdWNjZXNzOkRnLF9zdXBlclJlZmluZTpRbCxfc3ltYm9sOkFsLF90ZW1wbGF0ZUxpdGVyYWw6UmcsX3RvTG93ZXJDYXNlOkN0LF90b1VwcGVyQ2FzZTpBdCxfdHJhbnNmb3JtOlRnLF90cmltOlJ0LF90dXBsZTp5ZyxfdWludDMyOk9sLF91aW50NjQ6Q2wsX3VsaWQ6SGksX3VuZGVmaW5lZDpMbCxfdW5pb246aGcsX3Vua25vd246RmwsX3VwcGVyY2FzZTpQdCxfdXJsOkJuLF91dWlkOlJpLF91dWlkdjQ6Q2ksX3V1aWR2NjpBaSxfdXVpZHY3OkxpLF92b2lkOkhsLF94aWQ6VmksX3hvcjokZyxjbG9uZTphZSxjb25maWc6VixjcmVhdGVTdGFuZGFyZEpTT05TY2hlbWFNZXRob2Q6dnQsY3JlYXRlVG9KU09OU2NoZW1hTWV0aG9kOmlkLGRlY29kZTpCbSxkZWNvZGVBc3luYzpHbSxkZXNjcmliZTp0ZCxlbmNvZGU6S20sZW5jb2RlQXN5bmM6V20sZXh0cmFjdERlZnM6SmUsZmluYWxpemU6SGUsZmxhdHRlbkVycm9yOkZuLGZvcm1hdEVycm9yOkpuLGdsb2JhbENvbmZpZzpndCxnbG9iYWxSZWdpc3RyeTpyZSxpbml0aWFsaXplQ29udGV4dDpGZSxpc1ZhbGlkQmFzZTY0OklpLGlzVmFsaWRCYXNlNjRVUkw6U3UsaXNWYWxpZEpXVDp6dSxsb2NhbGVzOkRpLG1ldGE6bmQscGFyc2U6WXIscGFyc2VBc3luYzpRcixwcmV0dGlmeUVycm9yOmxpLHByb2Nlc3M6RSxyZWdleGVzOkhuLHJlZ2lzdHJ5OktuLHNhZmVEZWNvZGU6WW0sc2FmZURlY29kZUFzeW5jOmVwLHNhZmVFbmNvZGU6WG0sc2FmZUVuY29kZUFzeW5jOlFtLHNhZmVQYXJzZTpkaSxzYWZlUGFyc2VBc3luYzplYyx0b0RvdFBhdGg6UXMsdG9KU09OU2NoZW1hOm9vLHRyZWVpZnlFcnJvcjp1aSx1dGlsOnNpLHZlcnNpb246dHV9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7ZnVuY3Rpb24gYW8odCl7cmV0dXJuISF0Ll96b2R9ZnVuY3Rpb24gRmQodCxuKXtyZXR1cm4gYW8odCk/ZGkodCxuKTp0LnNhZmVQYXJzZShuKX1mdW5jdGlvbiBGZyh0KXtpZighdClyZXR1cm47bGV0IG47aWYoYW8odCk/bj10Ll96b2Q/LmRlZj8uc2hhcGU6bj10LnNoYXBlLCEhbil7aWYodHlwZW9mIG49PSJmdW5jdGlvbiIpdHJ5e3JldHVybiBuKCl9Y2F0Y2h7cmV0dXJufXJldHVybiBufX1mdW5jdGlvbiBKZyh0KXtpZihhbyh0KSl7Y29uc3QgaT10Ll96b2Q/LmRlZjtpZihpKXtpZihpLnZhbHVlIT09dm9pZCAwKXJldHVybiBpLnZhbHVlO2lmKEFycmF5LmlzQXJyYXkoaS52YWx1ZXMpJiZpLnZhbHVlcy5sZW5ndGg+MClyZXR1cm4gaS52YWx1ZXNbMF19fWNvbnN0IHI9dC5fZGVmO2lmKHIpe2lmKHIudmFsdWUhPT12b2lkIDApcmV0dXJuIHIudmFsdWU7aWYoQXJyYXkuaXNBcnJheShyLnZhbHVlcykmJnIudmFsdWVzLmxlbmd0aD4wKXJldHVybiByLnZhbHVlc1swXX1jb25zdCBvPXQudmFsdWU7aWYobyE9PXZvaWQgMClyZXR1cm4gb31jb25zdCBIZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsZW5kc1dpdGg6TnQsZ3Q6JGUsZ3RlOnRlLGluY2x1ZGVzOk90LGxlbmd0aDpRZSxsb3dlcmNhc2U6VXQsbHQ6aGUsbHRlOmllLG1heExlbmd0aDpZZSxtYXhTaXplOkVlLG1pbWU6RXQsbWluTGVuZ3RoOmJlLG1pblNpemU6X2UsbXVsdGlwbGVPZjpqZSxuZWdhdGl2ZTpHbixub25uZWdhdGl2ZTpZbixub25wb3NpdGl2ZTpYbixub3JtYWxpemU6WnQsb3ZlcndyaXRlOmdlLHBvc2l0aXZlOlduLHByb3BlcnR5OlFuLHJlZ2V4Omp0LHNpemU6WGUsc2x1Z2lmeTpMdCxzdGFydHNXaXRoOkR0LHRvTG93ZXJDYXNlOkN0LHRvVXBwZXJDYXNlOkF0LHRyaW06UnQsdXBwZXJjYXNlOlB0fSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOiJNb2R1bGUifSkpLGVyPWQoIlpvZElTT0RhdGVUaW1lIiwodCxuKT0+e3B1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIHNvKHQpe3JldHVybiBrbChlcix0KX1jb25zdCB0cj1kKCJab2RJU09EYXRlIiwodCxuKT0+e2Z1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEpkKHQpe3JldHVybiBTbCh0cix0KX1jb25zdCBucj1kKCJab2RJU09UaW1lIiwodCxuKT0+e2d1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEhkKHQpe3JldHVybiB3bChucix0KX1jb25zdCBycj1kKCJab2RJU09EdXJhdGlvbiIsKHQsbik9Pnt2dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBWZCh0KXtyZXR1cm4gSWwocnIsdCl9Y29uc3QgY289T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLFpvZElTT0RhdGU6dHIsWm9kSVNPRGF0ZVRpbWU6ZXIsWm9kSVNPRHVyYXRpb246cnIsWm9kSVNPVGltZTpucixkYXRlOkpkLGRhdGV0aW1lOnNvLGR1cmF0aW9uOlZkLHRpbWU6SGR9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksS2Q9KHQsbik9PntjaS5pbml0KHQsbiksdC5uYW1lPSJab2RFcnJvciIsT2JqZWN0LmRlZmluZVByb3BlcnRpZXModCx7Zm9ybWF0Ont2YWx1ZTpyPT5Kbih0LHIpfSxmbGF0dGVuOnt2YWx1ZTpyPT5Gbih0LHIpfSxhZGRJc3N1ZTp7dmFsdWU6cj0+e3QuaXNzdWVzLnB1c2gociksdC5tZXNzYWdlPUpTT04uc3RyaW5naWZ5KHQuaXNzdWVzLFVuLDIpfX0sYWRkSXNzdWVzOnt2YWx1ZTpyPT57dC5pc3N1ZXMucHVzaCguLi5yKSx0Lm1lc3NhZ2U9SlNPTi5zdHJpbmdpZnkodC5pc3N1ZXMsVW4sMil9fSxpc0VtcHR5OntnZXQoKXtyZXR1cm4gdC5pc3N1ZXMubGVuZ3RoPT09MH19fSl9LEJkPWQoIlpvZEVycm9yIixLZCksbmU9ZCgiWm9kRXJyb3IiLEtkLHtQYXJlbnQ6RXJyb3J9KSx1bz15dChuZSksbG89a3QobmUpLG1vPVN0KG5lKSxwbz13dChuZSksZm89bWkobmUpLGdvPXBpKG5lKSx2bz1maShuZSksaG89Z2kobmUpLCRvPXZpKG5lKSxfbz1oaShuZSksYm89JGkobmUpLHlvPV9pKG5lKSxTcz1uZXcgV2Vha01hcDtmdW5jdGlvbiBxdCh0LG4scil7Y29uc3Qgbz1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7bGV0IGU9U3MuZ2V0KG8pO2lmKGV8fChlPW5ldyBTZXQsU3Muc2V0KG8sZSkpLCFlLmhhcyhuKSl7ZS5hZGQobik7Zm9yKGNvbnN0IGkgaW4gcil7Y29uc3QgYT1yW2ldO09iamVjdC5kZWZpbmVQcm9wZXJ0eShvLGkse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLGdldCgpe2NvbnN0IHM9YS5iaW5kKHRoaXMpO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxpLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpzfSksc30sc2V0KHMpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGkse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnN9KX19KX19fWNvbnN0IHg9ZCgiWm9kVHlwZSIsKHQsbik9PihJLmluaXQodCxuKSxPYmplY3QuYXNzaWduKHRbIn5zdGFuZGFyZCJdLHtqc29uU2NoZW1hOntpbnB1dDp2dCh0LCJpbnB1dCIpLG91dHB1dDp2dCh0LCJvdXRwdXQiKX19KSx0LnRvSlNPTlNjaGVtYT1pZCh0LHt9KSx0LmRlZj1uLHQudHlwZT1uLnR5cGUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9kZWYiLHt2YWx1ZTpufSksdC5wYXJzZT0ocixvKT0+dW8odCxyLG8se2NhbGxlZTp0LnBhcnNlfSksdC5zYWZlUGFyc2U9KHIsbyk9Pm1vKHQscixvKSx0LnBhcnNlQXN5bmM9YXN5bmMocixvKT0+bG8odCxyLG8se2NhbGxlZTp0LnBhcnNlQXN5bmN9KSx0LnNhZmVQYXJzZUFzeW5jPWFzeW5jKHIsbyk9PnBvKHQscixvKSx0LnNwYT10LnNhZmVQYXJzZUFzeW5jLHQuZW5jb2RlPShyLG8pPT5mbyh0LHIsbyksdC5kZWNvZGU9KHIsbyk9PmdvKHQscixvKSx0LmVuY29kZUFzeW5jPWFzeW5jKHIsbyk9PnZvKHQscixvKSx0LmRlY29kZUFzeW5jPWFzeW5jKHIsbyk9PmhvKHQscixvKSx0LnNhZmVFbmNvZGU9KHIsbyk9PiRvKHQscixvKSx0LnNhZmVEZWNvZGU9KHIsbyk9Pl9vKHQscixvKSx0LnNhZmVFbmNvZGVBc3luYz1hc3luYyhyLG8pPT5ibyh0LHIsbyksdC5zYWZlRGVjb2RlQXN5bmM9YXN5bmMocixvKT0+eW8odCxyLG8pLHF0KHQsIlpvZFR5cGUiLHtjaGVjayguLi5yKXtjb25zdCBvPXRoaXMuZGVmO3JldHVybiB0aGlzLmNsb25lKGZlKG8se2NoZWNrczpbLi4uby5jaGVja3M/P1tdLC4uLnIubWFwKGU9PnR5cGVvZiBlPT0iZnVuY3Rpb24iP3tfem9kOntjaGVjazplLGRlZjp7Y2hlY2s6ImN1c3RvbSJ9LG9uYXR0YWNoOltdfX06ZSldfSkse3BhcmVudDohMH0pfSx3aXRoKC4uLnIpe3JldHVybiB0aGlzLmNoZWNrKC4uLnIpfSxjbG9uZShyLG8pe3JldHVybiBhZSh0aGlzLHIsbyl9LGJyYW5kKCl7cmV0dXJuIHRoaXN9LHJlZ2lzdGVyKHIsbyl7cmV0dXJuIHIuYWRkKHRoaXMsbyksdGhpc30scmVmaW5lKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soSnIocixvKSl9LHN1cGVyUmVmaW5lKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soSHIocixvKSl9LG92ZXJ3cml0ZShyKXtyZXR1cm4gdGhpcy5jaGVjayhnZShyKSl9LG9wdGlvbmFsKCl7cmV0dXJuIEEodGhpcyl9LGV4YWN0T3B0aW9uYWwoKXtyZXR1cm4gd3IodGhpcyl9LG51bGxhYmxlKCl7cmV0dXJuIEJlKHRoaXMpfSxudWxsaXNoKCl7cmV0dXJuIEEoQmUodGhpcykpfSxub25vcHRpb25hbChyKXtyZXR1cm4gVXIodGhpcyxyKX0sYXJyYXkoKXtyZXR1cm4gdyh0aGlzKX0sb3Iocil7cmV0dXJuIGooW3RoaXMscl0pfSxhbmQocil7cmV0dXJuIHN0KHRoaXMscil9LHRyYW5zZm9ybShyKXtyZXR1cm4gJHQodGhpcyxkbihyKSl9LGRlZmF1bHQocil7cmV0dXJuIHhyKHRoaXMscil9LHByZWZhdWx0KHIpe3JldHVybiBqcih0aGlzLHIpfSxjYXRjaChyKXtyZXR1cm4gRHIodGhpcyxyKX0scGlwZShyKXtyZXR1cm4gJHQodGhpcyxyKX0scmVhZG9ubHkoKXtyZXR1cm4gUnIodGhpcyl9LGRlc2NyaWJlKHIpe2NvbnN0IG89dGhpcy5jbG9uZSgpO3JldHVybiByZS5hZGQobyx7ZGVzY3JpcHRpb246cn0pLG99LG1ldGEoLi4ucil7aWYoci5sZW5ndGg9PT0wKXJldHVybiByZS5nZXQodGhpcyk7Y29uc3Qgbz10aGlzLmNsb25lKCk7cmV0dXJuIHJlLmFkZChvLHJbMF0pLG99LGlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfSxpc051bGxhYmxlKCl7cmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3N9LGFwcGx5KHIpe3JldHVybiByKHRoaXMpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZXNjcmlwdGlvbiIse2dldCgpe3JldHVybiByZS5nZXQodCk/LmRlc2NyaXB0aW9ufSxjb25maWd1cmFibGU6ITB9KSx0KSksRnQ9ZCgiX1pvZFN0cmluZyIsKHQsbik9PntUdC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9Pm9kKHQsbyxlKTtjb25zdCByPXQuX3pvZC5iYWc7dC5mb3JtYXQ9ci5mb3JtYXQ/P251bGwsdC5taW5MZW5ndGg9ci5taW5pbXVtPz9udWxsLHQubWF4TGVuZ3RoPXIubWF4aW11bT8/bnVsbCxxdCh0LCJfWm9kU3RyaW5nIix7cmVnZXgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soanQoLi4ubykpfSxpbmNsdWRlcyguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhPdCguLi5vKSl9LHN0YXJ0c1dpdGgoLi4ubyl7cmV0dXJuIHRoaXMuY2hlY2soRHQoLi4ubykpfSxlbmRzV2l0aCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhOdCguLi5vKSl9LG1pbiguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhiZSguLi5vKSl9LG1heCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhZZSguLi5vKSl9LGxlbmd0aCguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhRZSguLi5vKSl9LG5vbmVtcHR5KC4uLm8pe3JldHVybiB0aGlzLmNoZWNrKGJlKDEsLi4ubykpfSxsb3dlcmNhc2Uobyl7cmV0dXJuIHRoaXMuY2hlY2soVXQobykpfSx1cHBlcmNhc2Uobyl7cmV0dXJuIHRoaXMuY2hlY2soUHQobykpfSx0cmltKCl7cmV0dXJuIHRoaXMuY2hlY2soUnQoKSl9LG5vcm1hbGl6ZSguLi5vKXtyZXR1cm4gdGhpcy5jaGVjayhadCguLi5vKSl9LHRvTG93ZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2soQ3QoKSl9LHRvVXBwZXJDYXNlKCl7cmV0dXJuIHRoaXMuY2hlY2soQXQoKSl9LHNsdWdpZnkoKXtyZXR1cm4gdGhpcy5jaGVjayhMdCgpKX19KX0pLGV0PWQoIlpvZFN0cmluZyIsKHQsbik9PntUdC5pbml0KHQsbiksRnQuaW5pdCh0LG4pLHQuZW1haWw9cj0+dC5jaGVjayhaaShKdCxyKSksdC51cmw9cj0+dC5jaGVjayhCbih0dCxyKSksdC5qd3Q9cj0+dC5jaGVjayh0byhhbixyKSksdC5lbW9qaT1yPT50LmNoZWNrKE1pKEh0LHIpKSx0Lmd1aWQ9cj0+dC5jaGVjayhEbihWZSxyKSksdC51dWlkPXI9PnQuY2hlY2soUmkobWUscikpLHQudXVpZHY0PXI9PnQuY2hlY2soQ2kobWUscikpLHQudXVpZHY2PXI9PnQuY2hlY2soQWkobWUscikpLHQudXVpZHY3PXI9PnQuY2hlY2soTGkobWUscikpLHQubmFub2lkPXI9PnQuY2hlY2socWkoVnQscikpLHQuZ3VpZD1yPT50LmNoZWNrKERuKFZlLHIpKSx0LmN1aWQ9cj0+dC5jaGVjayhGaShLdCxyKSksdC5jdWlkMj1yPT50LmNoZWNrKEppKEJ0LHIpKSx0LnVsaWQ9cj0+dC5jaGVjayhIaShXdCxyKSksdC5iYXNlNjQ9cj0+dC5jaGVjayhZaShubixyKSksdC5iYXNlNjR1cmw9cj0+dC5jaGVjayhRaShybixyKSksdC54aWQ9cj0+dC5jaGVjayhWaShHdCxyKSksdC5rc3VpZD1yPT50LmNoZWNrKEtpKFh0LHIpKSx0LmlwdjQ9cj0+dC5jaGVjayhCaShZdCxyKSksdC5pcHY2PXI9PnQuY2hlY2soV2koUXQscikpLHQuY2lkcnY0PXI9PnQuY2hlY2soR2koZW4scikpLHQuY2lkcnY2PXI9PnQuY2hlY2soWGkodG4scikpLHQuZTE2ND1yPT50LmNoZWNrKGVvKG9uLHIpKSx0LmRhdGV0aW1lPXI9PnQuY2hlY2soc28ocikpLHQuZGF0ZT1yPT50LmNoZWNrKEpkKHIpKSx0LnRpbWU9cj0+dC5jaGVjayhIZChyKSksdC5kdXJhdGlvbj1yPT50LmNoZWNrKFZkKHIpKX0pO2Z1bmN0aW9uIHAodCl7cmV0dXJuIF9sKGV0LHQpfWNvbnN0IFo9ZCgiWm9kU3RyaW5nRm9ybWF0IiwodCxuKT0+e0wuaW5pdCh0LG4pLEZ0LmluaXQodCxuKX0pLEp0PWQoIlpvZEVtYWlsIiwodCxuKT0+e2l1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIGtvKHQpe3JldHVybiBaaShKdCx0KX1jb25zdCBWZT1kKCJab2RHVUlEIiwodCxuKT0+e251LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFNvKHQpe3JldHVybiBEbihWZSx0KX1jb25zdCBtZT1kKCJab2RVVUlEIiwodCxuKT0+e3J1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIHdvKHQpe3JldHVybiBSaShtZSx0KX1mdW5jdGlvbiBJbyh0KXtyZXR1cm4gQ2kobWUsdCl9ZnVuY3Rpb24gem8odCl7cmV0dXJuIEFpKG1lLHQpfWZ1bmN0aW9uIHhvKHQpe3JldHVybiBMaShtZSx0KX1jb25zdCB0dD1kKCJab2RVUkwiLCh0LG4pPT57b3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gVG8odCl7cmV0dXJuIEJuKHR0LHQpfWZ1bmN0aW9uIGpvKHQpe3JldHVybiBCbih0dCx7cHJvdG9jb2w6eWksaG9zdG5hbWU6X2MsLi4uaCh0KX0pfWNvbnN0IEh0PWQoIlpvZEVtb2ppIiwodCxuKT0+e2F1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFVvKHQpe3JldHVybiBNaShIdCx0KX1jb25zdCBWdD1kKCJab2ROYW5vSUQiLCh0LG4pPT57c3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gUG8odCl7cmV0dXJuIHFpKFZ0LHQpfWNvbnN0IEt0PWQoIlpvZENVSUQiLCh0LG4pPT57Y3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gT28odCl7cmV0dXJuIEZpKEt0LHQpfWNvbnN0IEJ0PWQoIlpvZENVSUQyIiwodCxuKT0+e3V1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIERvKHQpe3JldHVybiBKaShCdCx0KX1jb25zdCBXdD1kKCJab2RVTElEIiwodCxuKT0+e2x1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE5vKHQpe3JldHVybiBIaShXdCx0KX1jb25zdCBHdD1kKCJab2RYSUQiLCh0LG4pPT57ZHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gRW8odCl7cmV0dXJuIFZpKEd0LHQpfWNvbnN0IFh0PWQoIlpvZEtTVUlEIiwodCxuKT0+e211LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFpvKHQpe3JldHVybiBLaShYdCx0KX1jb25zdCBZdD1kKCJab2RJUHY0IiwodCxuKT0+e2h1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIFJvKHQpe3JldHVybiBCaShZdCx0KX1jb25zdCBpcj1kKCJab2RNQUMiLCh0LG4pPT57X3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gQ28odCl7cmV0dXJuIHlsKGlyLHQpfWNvbnN0IFF0PWQoIlpvZElQdjYiLCh0LG4pPT57JHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gQW8odCl7cmV0dXJuIFdpKFF0LHQpfWNvbnN0IGVuPWQoIlpvZENJRFJ2NCIsKHQsbik9PntidS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBMbyh0KXtyZXR1cm4gR2koZW4sdCl9Y29uc3QgdG49ZCgiWm9kQ0lEUnY2IiwodCxuKT0+e3l1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIE1vKHQpe3JldHVybiBYaSh0bix0KX1jb25zdCBubj1kKCJab2RCYXNlNjQiLCh0LG4pPT57a3UuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gcW8odCl7cmV0dXJuIFlpKG5uLHQpfWNvbnN0IHJuPWQoIlpvZEJhc2U2NFVSTCIsKHQsbik9Pnt3dS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBGbyh0KXtyZXR1cm4gUWkocm4sdCl9Y29uc3Qgb249ZCgiWm9kRTE2NCIsKHQsbik9PntJdS5pbml0KHQsbiksWi5pbml0KHQsbil9KTtmdW5jdGlvbiBKbyh0KXtyZXR1cm4gZW8ob24sdCl9Y29uc3QgYW49ZCgiWm9kSldUIiwodCxuKT0+e3h1LmluaXQodCxuKSxaLmluaXQodCxuKX0pO2Z1bmN0aW9uIEhvKHQpe3JldHVybiB0byhhbix0KX1jb25zdCBaZT1kKCJab2RDdXN0b21TdHJpbmdGb3JtYXQiLCh0LG4pPT57VHUuaW5pdCh0LG4pLFouaW5pdCh0LG4pfSk7ZnVuY3Rpb24gVm8odCxuLHI9e30pe3JldHVybiBNdChaZSx0LG4scil9ZnVuY3Rpb24gS28odCl7cmV0dXJuIE10KFplLCJob3N0bmFtZSIsJGMsdCl9ZnVuY3Rpb24gQm8odCl7cmV0dXJuIE10KFplLCJoZXgiLE5jLHQpfWZ1bmN0aW9uIFdvKHQsbil7Y29uc3Qgcj1uPy5lbmM/PyJoZXgiLG89YCR7dH1fJHtyfWAsZT1IbltvXTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBoYXNoIGZvcm1hdDogJHtvfWApO3JldHVybiBNdChaZSxvLGUsbil9Y29uc3QgbnQ9ZCgiWm9kTnVtYmVyIiwodCxuKT0+e3ppLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+YWQodCxvLGUpLHF0KHQsIlpvZE51bWJlciIse2d0KG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soJGUobyxlKSl9LGd0ZShvLGUpe3JldHVybiB0aGlzLmNoZWNrKHRlKG8sZSkpfSxtaW4obyxlKXtyZXR1cm4gdGhpcy5jaGVjayh0ZShvLGUpKX0sbHQobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhoZShvLGUpKX0sbHRlKG8sZSl7cmV0dXJuIHRoaXMuY2hlY2soaWUobyxlKSl9LG1heChvLGUpe3JldHVybiB0aGlzLmNoZWNrKGllKG8sZSkpfSxpbnQobyl7cmV0dXJuIHRoaXMuY2hlY2soaHQobykpfSxzYWZlKG8pe3JldHVybiB0aGlzLmNoZWNrKGh0KG8pKX0scG9zaXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soJGUoMCxvKSl9LG5vbm5lZ2F0aXZlKG8pe3JldHVybiB0aGlzLmNoZWNrKHRlKDAsbykpfSxuZWdhdGl2ZShvKXtyZXR1cm4gdGhpcy5jaGVjayhoZSgwLG8pKX0sbm9ucG9zaXRpdmUobyl7cmV0dXJuIHRoaXMuY2hlY2soaWUoMCxvKSl9LG11bHRpcGxlT2YobyxlKXtyZXR1cm4gdGhpcy5jaGVjayhqZShvLGUpKX0sc3RlcChvLGUpe3JldHVybiB0aGlzLmNoZWNrKGplKG8sZSkpfSxmaW5pdGUoKXtyZXR1cm4gdGhpc319KTtjb25zdCByPXQuX3pvZC5iYWc7dC5taW5WYWx1ZT1NYXRoLm1heChyLm1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSxyLmV4Y2x1c2l2ZU1pbmltdW0/P051bWJlci5ORUdBVElWRV9JTkZJTklUWSk/P251bGwsdC5tYXhWYWx1ZT1NYXRoLm1pbihyLm1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSxyLmV4Y2x1c2l2ZU1heGltdW0/P051bWJlci5QT1NJVElWRV9JTkZJTklUWSk/P251bGwsdC5pc0ludD0oci5mb3JtYXQ/PyIiKS5pbmNsdWRlcygiaW50Iil8fE51bWJlci5pc1NhZmVJbnRlZ2VyKHIubXVsdGlwbGVPZj8/LjUpLHQuaXNGaW5pdGU9ITAsdC5mb3JtYXQ9ci5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiB6KHQpe3JldHVybiB6bChudCx0KX1jb25zdCBrZT1kKCJab2ROdW1iZXJGb3JtYXQiLCh0LG4pPT57anUuaW5pdCh0LG4pLG50LmluaXQodCxuKX0pO2Z1bmN0aW9uIGh0KHQpe3JldHVybiBUbChrZSx0KX1mdW5jdGlvbiBHbyh0KXtyZXR1cm4gamwoa2UsdCl9ZnVuY3Rpb24gWG8odCl7cmV0dXJuIFVsKGtlLHQpfWZ1bmN0aW9uIFlvKHQpe3JldHVybiBQbChrZSx0KX1mdW5jdGlvbiBRbyh0KXtyZXR1cm4gT2woa2UsdCl9Y29uc3QgcnQ9ZCgiWm9kQm9vbGVhbiIsKHQsbik9Pnt4aS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnNkKHQscixvKX0pO2Z1bmN0aW9uIEQodCl7cmV0dXJuIERsKHJ0LHQpfWNvbnN0IGl0PWQoIlpvZEJpZ0ludCIsKHQsbik9PntUaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PmNkKHQsbyksdC5ndGU9KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5taW49KG8sZSk9PnQuY2hlY2sodGUobyxlKSksdC5ndD0obyxlKT0+dC5jaGVjaygkZShvLGUpKSx0Lmd0ZT0obyxlKT0+dC5jaGVjayh0ZShvLGUpKSx0Lm1pbj0obyxlKT0+dC5jaGVjayh0ZShvLGUpKSx0Lmx0PShvLGUpPT50LmNoZWNrKGhlKG8sZSkpLHQubHRlPShvLGUpPT50LmNoZWNrKGllKG8sZSkpLHQubWF4PShvLGUpPT50LmNoZWNrKGllKG8sZSkpLHQucG9zaXRpdmU9bz0+dC5jaGVjaygkZShCaWdJbnQoMCksbykpLHQubmVnYXRpdmU9bz0+dC5jaGVjayhoZShCaWdJbnQoMCksbykpLHQubm9ucG9zaXRpdmU9bz0+dC5jaGVjayhpZShCaWdJbnQoMCksbykpLHQubm9ubmVnYXRpdmU9bz0+dC5jaGVjayh0ZShCaWdJbnQoMCksbykpLHQubXVsdGlwbGVPZj0obyxlKT0+dC5jaGVjayhqZShvLGUpKTtjb25zdCByPXQuX3pvZC5iYWc7dC5taW5WYWx1ZT1yLm1pbmltdW0/P251bGwsdC5tYXhWYWx1ZT1yLm1heGltdW0/P251bGwsdC5mb3JtYXQ9ci5mb3JtYXQ/P251bGx9KTtmdW5jdGlvbiBlYSh0KXtyZXR1cm4gRWwoaXQsdCl9Y29uc3Qgc249ZCgiWm9kQmlnSW50Rm9ybWF0IiwodCxuKT0+e1V1LmluaXQodCxuKSxpdC5pbml0KHQsbil9KTtmdW5jdGlvbiB0YSh0KXtyZXR1cm4gUmwoc24sdCl9ZnVuY3Rpb24gbmEodCl7cmV0dXJuIENsKHNuLHQpfWNvbnN0IG9yPWQoIlpvZFN5bWJvbCIsKHQsbik9PntQdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnVkKHQscil9KTtmdW5jdGlvbiByYSh0KXtyZXR1cm4gQWwob3IsdCl9Y29uc3QgYXI9ZCgiWm9kVW5kZWZpbmVkIiwodCxuKT0+e091LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+ZGQodCxyKX0pO2Z1bmN0aW9uIEtlKHQpe3JldHVybiBMbChhcix0KX1jb25zdCBzcj1kKCJab2ROdWxsIiwodCxuKT0+e0R1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+bGQodCxyLG8pfSk7ZnVuY3Rpb24gY24odCl7cmV0dXJuIE1sKHNyLHQpfWNvbnN0IGNyPWQoIlpvZEFueSIsKHQsbik9PntOdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmZkKCl9KTtmdW5jdGlvbiBpYSgpe3JldHVybiBxbChjcil9Y29uc3QgdXI9ZCgiWm9kVW5rbm93biIsKHQsbik9PntFdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmdkKCl9KTtmdW5jdGlvbiBPKCl7cmV0dXJuIEZsKHVyKX1jb25zdCBscj1kKCJab2ROZXZlciIsKHQsbik9PntadS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnBkKHQscixvKX0pO2Z1bmN0aW9uIFVlKHQpe3JldHVybiBKbChscix0KX1jb25zdCBkcj1kKCJab2RWb2lkIiwodCxuKT0+e1J1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+bWQodCxyKX0pO2Z1bmN0aW9uIG9hKHQpe3JldHVybiBIbChkcix0KX1jb25zdCB1bj1kKCJab2REYXRlIiwodCxuKT0+e0N1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KG8sZSxpKT0+dmQodCxvKSx0Lm1pbj0obyxlKT0+dC5jaGVjayh0ZShvLGUpKSx0Lm1heD0obyxlKT0+dC5jaGVjayhpZShvLGUpKTtjb25zdCByPXQuX3pvZC5iYWc7dC5taW5EYXRlPXIubWluaW11bT9uZXcgRGF0ZShyLm1pbmltdW0pOm51bGwsdC5tYXhEYXRlPXIubWF4aW11bT9uZXcgRGF0ZShyLm1heGltdW0pOm51bGx9KTtmdW5jdGlvbiBhYSh0KXtyZXR1cm4gVmwodW4sdCl9Y29uc3QgbXI9ZCgiWm9kQXJyYXkiLCh0LG4pPT57QXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5UZCh0LHIsbyxlKSx0LmVsZW1lbnQ9bi5lbGVtZW50LHF0KHQsIlpvZEFycmF5Iix7bWluKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soYmUocixvKSl9LG5vbmVtcHR5KHIpe3JldHVybiB0aGlzLmNoZWNrKGJlKDEscikpfSxtYXgocixvKXtyZXR1cm4gdGhpcy5jaGVjayhZZShyLG8pKX0sbGVuZ3RoKHIsbyl7cmV0dXJuIHRoaXMuY2hlY2soUWUocixvKSl9LHVud3JhcCgpe3JldHVybiB0aGlzLmVsZW1lbnR9fSl9KTtmdW5jdGlvbiB3KHQsbil7cmV0dXJuIFdsKG1yLHQsbil9ZnVuY3Rpb24gc2EodCl7Y29uc3Qgbj10Ll96b2QuZGVmLnNoYXBlO3JldHVybiBHKE9iamVjdC5rZXlzKG4pKX1jb25zdCBvdD1kKCJab2RPYmplY3QiLCh0LG4pPT57RnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5qZCh0LHIsbyxlKSxUKHQsInNoYXBlIiwoKT0+bi5zaGFwZSkscXQodCwiWm9kT2JqZWN0Iix7a2V5b2YoKXtyZXR1cm4gRyhPYmplY3Qua2V5cyh0aGlzLl96b2QuZGVmLnNoYXBlKSl9LGNhdGNoYWxsKHIpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOnJ9KX0scGFzc3Rocm91Z2goKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpPKCl9KX0sbG9vc2UoKXtyZXR1cm4gdGhpcy5jbG9uZSh7Li4udGhpcy5fem9kLmRlZixjYXRjaGFsbDpPKCl9KX0sc3RyaWN0KCl7cmV0dXJuIHRoaXMuY2xvbmUoey4uLnRoaXMuX3pvZC5kZWYsY2F0Y2hhbGw6VWUoKX0pfSxzdHJpcCgpe3JldHVybiB0aGlzLmNsb25lKHsuLi50aGlzLl96b2QuZGVmLGNhdGNoYWxsOnZvaWQgMH0pfSxleHRlbmQocil7cmV0dXJuIEpzKHRoaXMscil9LHNhZmVFeHRlbmQocil7cmV0dXJuIEhzKHRoaXMscil9LG1lcmdlKHIpe3JldHVybiBWcyh0aGlzLHIpfSxwaWNrKHIpe3JldHVybiBxcyh0aGlzLHIpfSxvbWl0KHIpe3JldHVybiBGcyh0aGlzLHIpfSxwYXJ0aWFsKC4uLnIpe3JldHVybiBLcyhtbix0aGlzLHJbMF0pfSxyZXF1aXJlZCguLi5yKXtyZXR1cm4gQnMocG4sdGhpcyxyWzBdKX19KX0pO2Z1bmN0aW9uIGYodCxuKXtjb25zdCByPXt0eXBlOiJvYmplY3QiLHNoYXBlOnQ/P3t9LC4uLmgobil9O3JldHVybiBuZXcgb3Qocil9ZnVuY3Rpb24gY2EodCxuKXtyZXR1cm4gbmV3IG90KHt0eXBlOiJvYmplY3QiLHNoYXBlOnQsY2F0Y2hhbGw6VWUoKSwuLi5oKG4pfSl9ZnVuY3Rpb24gVyh0LG4pe3JldHVybiBuZXcgb3Qoe3R5cGU6Im9iamVjdCIsc2hhcGU6dCxjYXRjaGFsbDpPKCksLi4uaChuKX0pfWNvbnN0IGF0PWQoIlpvZFVuaW9uIiwodCxuKT0+e1ZuLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+cm8odCxyLG8sZSksdC5vcHRpb25zPW4ub3B0aW9uc30pO2Z1bmN0aW9uIGoodCxuKXtyZXR1cm4gbmV3IGF0KHt0eXBlOiJ1bmlvbiIsb3B0aW9uczp0LC4uLmgobil9KX1jb25zdCBwcj1kKCJab2RYb3IiLCh0LG4pPT57YXQuaW5pdCh0LG4pLEp1LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+cm8odCxyLG8sZSksdC5vcHRpb25zPW4ub3B0aW9uc30pO2Z1bmN0aW9uIHVhKHQsbil7cmV0dXJuIG5ldyBwcih7dHlwZToidW5pb24iLG9wdGlvbnM6dCxpbmNsdXNpdmU6ITEsLi4uaChuKX0pfWNvbnN0IGZyPWQoIlpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsKHQsbik9PnthdC5pbml0KHQsbiksSHUuaW5pdCh0LG4pfSk7ZnVuY3Rpb24gbG4odCxuLHIpe3JldHVybiBuZXcgZnIoe3R5cGU6InVuaW9uIixvcHRpb25zOm4sZGlzY3JpbWluYXRvcjp0LC4uLmgocil9KX1jb25zdCBncj1kKCJab2RJbnRlcnNlY3Rpb24iLCh0LG4pPT57VnUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5VZCh0LHIsbyxlKX0pO2Z1bmN0aW9uIHN0KHQsbil7cmV0dXJuIG5ldyBncih7dHlwZToiaW50ZXJzZWN0aW9uIixsZWZ0OnQscmlnaHQ6bn0pfWNvbnN0IHZyPWQoIlpvZFR1cGxlIiwodCxuKT0+e2ppLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+UGQodCxyLG8sZSksdC5yZXN0PXI9PnQuY2xvbmUoey4uLnQuX3pvZC5kZWYscmVzdDpyfSl9KTtmdW5jdGlvbiBocih0LG4scil7Y29uc3Qgbz1uIGluc3RhbmNlb2YgSSxlPW8/cjpuLGk9bz9uOm51bGw7cmV0dXJuIG5ldyB2cih7dHlwZToidHVwbGUiLGl0ZW1zOnQscmVzdDppLC4uLmgoZSl9KX1jb25zdCBQZT1kKCJab2RSZWNvcmQiLCh0LG4pPT57S3UuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5PZCh0LHIsbyxlKSx0LmtleVR5cGU9bi5rZXlUeXBlLHQudmFsdWVUeXBlPW4udmFsdWVUeXBlfSk7ZnVuY3Rpb24gVSh0LG4scil7cmV0dXJuIW58fCFuLl96b2Q/bmV3IFBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6cCgpLHZhbHVlVHlwZTp0LC4uLmgobil9KTpuZXcgUGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLC4uLmgocil9KX1mdW5jdGlvbiBsYSh0LG4scil7Y29uc3Qgbz1hZSh0KTtyZXR1cm4gby5fem9kLnZhbHVlcz12b2lkIDAsbmV3IFBlKHt0eXBlOiJyZWNvcmQiLGtleVR5cGU6byx2YWx1ZVR5cGU6biwuLi5oKHIpfSl9ZnVuY3Rpb24gZGEodCxuLHIpe3JldHVybiBuZXcgUGUoe3R5cGU6InJlY29yZCIsa2V5VHlwZTp0LHZhbHVlVHlwZTpuLG1vZGU6Imxvb3NlIiwuLi5oKHIpfSl9Y29uc3QgJHI9ZCgiWm9kTWFwIiwodCxuKT0+e0J1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+emQodCxyKSx0LmtleVR5cGU9bi5rZXlUeXBlLHQudmFsdWVUeXBlPW4udmFsdWVUeXBlLHQubWluPSguLi5yKT0+dC5jaGVjayhfZSguLi5yKSksdC5ub25lbXB0eT1yPT50LmNoZWNrKF9lKDEscikpLHQubWF4PSguLi5yKT0+dC5jaGVjayhFZSguLi5yKSksdC5zaXplPSguLi5yKT0+dC5jaGVjayhYZSguLi5yKSl9KTtmdW5jdGlvbiBtYSh0LG4scil7cmV0dXJuIG5ldyAkcih7dHlwZToibWFwIixrZXlUeXBlOnQsdmFsdWVUeXBlOm4sLi4uaChyKX0pfWNvbnN0IF9yPWQoIlpvZFNldCIsKHQsbik9PntXdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PnhkKHQsciksdC5taW49KC4uLnIpPT50LmNoZWNrKF9lKC4uLnIpKSx0Lm5vbmVtcHR5PXI9PnQuY2hlY2soX2UoMSxyKSksdC5tYXg9KC4uLnIpPT50LmNoZWNrKEVlKC4uLnIpKSx0LnNpemU9KC4uLnIpPT50LmNoZWNrKFhlKC4uLnIpKX0pO2Z1bmN0aW9uIHBhKHQsbil7cmV0dXJuIG5ldyBfcih7dHlwZToic2V0Iix2YWx1ZVR5cGU6dCwuLi5oKG4pfSl9Y29uc3QgT2U9ZCgiWm9kRW51bSIsKHQsbik9PntHdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShvLGUsaSk9PmhkKHQsbyxlKSx0LmVudW09bi5lbnRyaWVzLHQub3B0aW9ucz1PYmplY3QudmFsdWVzKG4uZW50cmllcyk7Y29uc3Qgcj1uZXcgU2V0KE9iamVjdC5rZXlzKG4uZW50cmllcykpO3QuZXh0cmFjdD0obyxlKT0+e2NvbnN0IGk9e307Zm9yKGNvbnN0IGEgb2YgbylpZihyLmhhcyhhKSlpW2FdPW4uZW50cmllc1thXTtlbHNlIHRocm93IG5ldyBFcnJvcihgS2V5ICR7YX0gbm90IGZvdW5kIGluIGVudW1gKTtyZXR1cm4gbmV3IE9lKHsuLi5uLGNoZWNrczpbXSwuLi5oKGUpLGVudHJpZXM6aX0pfSx0LmV4Y2x1ZGU9KG8sZSk9Pntjb25zdCBpPXsuLi5uLmVudHJpZXN9O2Zvcihjb25zdCBhIG9mIG8paWYoci5oYXMoYSkpZGVsZXRlIGlbYV07ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYEtleSAke2F9IG5vdCBmb3VuZCBpbiBlbnVtYCk7cmV0dXJuIG5ldyBPZSh7Li4ubixjaGVja3M6W10sLi4uaChlKSxlbnRyaWVzOml9KX19KTtmdW5jdGlvbiBHKHQsbil7Y29uc3Qgcj1BcnJheS5pc0FycmF5KHQpP09iamVjdC5mcm9tRW50cmllcyh0Lm1hcChvPT5bbyxvXSkpOnQ7cmV0dXJuIG5ldyBPZSh7dHlwZToiZW51bSIsZW50cmllczpyLC4uLmgobil9KX1mdW5jdGlvbiBmYSh0LG4pe3JldHVybiBuZXcgT2Uoe3R5cGU6ImVudW0iLGVudHJpZXM6dCwuLi5oKG4pfSl9Y29uc3QgYnI9ZCgiWm9kTGl0ZXJhbCIsKHQsbik9PntYdS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PiRkKHQscixvKSx0LnZhbHVlcz1uZXcgU2V0KG4udmFsdWVzKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidmFsdWUiLHtnZXQoKXtpZihuLnZhbHVlcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgc2NoZW1hIGNvbnRhaW5zIG11bHRpcGxlIHZhbGlkIGxpdGVyYWwgdmFsdWVzLiBVc2UgYC52YWx1ZXNgIGluc3RlYWQuIik7cmV0dXJuIG4udmFsdWVzWzBdfX0pfSk7ZnVuY3Rpb24gbSh0LG4pe3JldHVybiBuZXcgYnIoe3R5cGU6ImxpdGVyYWwiLHZhbHVlczpBcnJheS5pc0FycmF5KHQpP3Q6W3RdLC4uLmgobil9KX1jb25zdCB5cj1kKCJab2RGaWxlIiwodCxuKT0+e1l1LmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+eWQodCxyLG8pLHQubWluPShyLG8pPT50LmNoZWNrKF9lKHIsbykpLHQubWF4PShyLG8pPT50LmNoZWNrKEVlKHIsbykpLHQubWltZT0ocixvKT0+dC5jaGVjayhFdChBcnJheS5pc0FycmF5KHIpP3I6W3JdLG8pKX0pO2Z1bmN0aW9uIGdhKHQpe3JldHVybiBHbCh5cix0KX1jb25zdCBrcj1kKCJab2RUcmFuc2Zvcm0iLCh0LG4pPT57UXUuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5JZCh0LHIpLHQuX3pvZC5wYXJzZT0ocixvKT0+e2lmKG8uZGlyZWN0aW9uPT09ImJhY2t3YXJkIil0aHJvdyBuZXcgQ24odC5jb25zdHJ1Y3Rvci5uYW1lKTtyLmFkZElzc3VlPWk9PntpZih0eXBlb2YgaT09InN0cmluZyIpci5pc3N1ZXMucHVzaChNZShpLHIudmFsdWUsbikpO2Vsc2V7Y29uc3QgYT1pO2EuZmF0YWwmJihhLmNvbnRpbnVlPSExKSxhLmNvZGU/PyhhLmNvZGU9ImN1c3RvbSIpLGEuaW5wdXQ/PyhhLmlucHV0PXIudmFsdWUpLGEuaW5zdD8/KGEuaW5zdD10KSxyLmlzc3Vlcy5wdXNoKE1lKGEpKX19O2NvbnN0IGU9bi50cmFuc2Zvcm0oci52YWx1ZSxyKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFByb21pc2U/ZS50aGVuKGk9PihyLnZhbHVlPWksci5mYWxsYmFjaz0hMCxyKSk6KHIudmFsdWU9ZSxyLmZhbGxiYWNrPSEwLHIpfX0pO2Z1bmN0aW9uIGRuKHQpe3JldHVybiBuZXcga3Ioe3R5cGU6InRyYW5zZm9ybSIsdHJhbnNmb3JtOnR9KX1jb25zdCBtbj1kKCJab2RPcHRpb25hbCIsKHQsbik9PntVaS5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmlvKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIEEodCl7cmV0dXJuIG5ldyBtbih7dHlwZToib3B0aW9uYWwiLGlubmVyVHlwZTp0fSl9Y29uc3QgU3I9ZCgiWm9kRXhhY3RPcHRpb25hbCIsKHQsbik9PntlbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PmlvKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIHdyKHQpe3JldHVybiBuZXcgU3Ioe3R5cGU6Im9wdGlvbmFsIixpbm5lclR5cGU6dH0pfWNvbnN0IElyPWQoIlpvZE51bGxhYmxlIiwodCxuKT0+e3RsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+RGQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gQmUodCl7cmV0dXJuIG5ldyBJcih7dHlwZToibnVsbGFibGUiLGlubmVyVHlwZTp0fSl9ZnVuY3Rpb24gdmEodCl7cmV0dXJuIEEoQmUodCkpfWNvbnN0IHpyPWQoIlpvZERlZmF1bHQiLCh0LG4pPT57bmwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5FZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGUsdC5yZW1vdmVEZWZhdWx0PXQudW53cmFwfSk7ZnVuY3Rpb24geHIodCxuKXtyZXR1cm4gbmV3IHpyKHt0eXBlOiJkZWZhdWx0Iixpbm5lclR5cGU6dCxnZXQgZGVmYXVsdFZhbHVlKCl7cmV0dXJuIHR5cGVvZiBuPT0iZnVuY3Rpb24iP24oKTpMbihuKX19KX1jb25zdCBUcj1kKCJab2RQcmVmYXVsdCIsKHQsbik9PntybC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlpkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZX0pO2Z1bmN0aW9uIGpyKHQsbil7cmV0dXJuIG5ldyBUcih7dHlwZToicHJlZmF1bHQiLGlubmVyVHlwZTp0LGdldCBkZWZhdWx0VmFsdWUoKXtyZXR1cm4gdHlwZW9mIG49PSJmdW5jdGlvbiI/bigpOkxuKG4pfX0pfWNvbnN0IHBuPWQoIlpvZE5vbk9wdGlvbmFsIiwodCxuKT0+e2lsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+TmQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gVXIodCxuKXtyZXR1cm4gbmV3IHBuKHt0eXBlOiJub25vcHRpb25hbCIsaW5uZXJUeXBlOnQsLi4uaChuKX0pfWNvbnN0IFByPWQoIlpvZFN1Y2Nlc3MiLCh0LG4pPT57b2wuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5rZCh0LHIsbyksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gaGEodCl7cmV0dXJuIG5ldyBQcih7dHlwZToic3VjY2VzcyIsaW5uZXJUeXBlOnR9KX1jb25zdCBPcj1kKCJab2RDYXRjaCIsKHQsbik9PnthbC5pbml0KHQsbikseC5pbml0KHQsbiksdC5fem9kLnByb2Nlc3NKU09OU2NoZW1hPShyLG8sZSk9PlJkKHQscixvLGUpLHQudW53cmFwPSgpPT50Ll96b2QuZGVmLmlubmVyVHlwZSx0LnJlbW92ZUNhdGNoPXQudW53cmFwfSk7ZnVuY3Rpb24gRHIodCxuKXtyZXR1cm4gbmV3IE9yKHt0eXBlOiJjYXRjaCIsaW5uZXJUeXBlOnQsY2F0Y2hWYWx1ZTp0eXBlb2Ygbj09ImZ1bmN0aW9uIj9uOigpPT5ufSl9Y29uc3QgTnI9ZCgiWm9kTmFOIiwodCxuKT0+e3NsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+X2QodCxyKX0pO2Z1bmN0aW9uICRhKHQpe3JldHVybiBCbChOcix0KX1jb25zdCBjdD1kKCJab2RQaXBlIiwodCxuKT0+e1BpLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+Q2QodCxyLG8sZSksdC5pbj1uLmluLHQub3V0PW4ub3V0fSk7ZnVuY3Rpb24gJHQodCxuKXtyZXR1cm4gbmV3IGN0KHt0eXBlOiJwaXBlIixpbjp0LG91dDpufSl9Y29uc3QgdXQ9ZCgiWm9kQ29kZWMiLCh0LG4pPT57Y3QuaW5pdCh0LG4pLE9pLmluaXQodCxuKX0pO2Z1bmN0aW9uIF9hKHQsbixyKXtyZXR1cm4gbmV3IHV0KHt0eXBlOiJwaXBlIixpbjp0LG91dDpuLHRyYW5zZm9ybTpyLmRlY29kZSxyZXZlcnNlVHJhbnNmb3JtOnIuZW5jb2RlfSl9ZnVuY3Rpb24gYmEodCl7Y29uc3Qgbj10Ll96b2QuZGVmO3JldHVybiBuZXcgdXQoe3R5cGU6InBpcGUiLGluOm4ub3V0LG91dDpuLmluLHRyYW5zZm9ybTpuLnJldmVyc2VUcmFuc2Zvcm0scmV2ZXJzZVRyYW5zZm9ybTpuLnRyYW5zZm9ybX0pfWNvbnN0IEVyPWQoIlpvZFByZXByb2Nlc3MiLCh0LG4pPT57Y3QuaW5pdCh0LG4pLGNsLmluaXQodCxuKX0pLFpyPWQoIlpvZFJlYWRvbmx5IiwodCxuKT0+e3VsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+QWQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuaW5uZXJUeXBlfSk7ZnVuY3Rpb24gUnIodCl7cmV0dXJuIG5ldyBacih7dHlwZToicmVhZG9ubHkiLGlubmVyVHlwZTp0fSl9Y29uc3QgQ3I9ZCgiWm9kVGVtcGxhdGVMaXRlcmFsIiwodCxuKT0+e2xsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+YmQodCxyLG8pfSk7ZnVuY3Rpb24geWEodCxuKXtyZXR1cm4gbmV3IENyKHt0eXBlOiJ0ZW1wbGF0ZV9saXRlcmFsIixwYXJ0czp0LC4uLmgobil9KX1jb25zdCBBcj1kKCJab2RMYXp5IiwodCxuKT0+e3BsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+TWQodCxyLG8sZSksdC51bndyYXA9KCk9PnQuX3pvZC5kZWYuZ2V0dGVyKCl9KTtmdW5jdGlvbiBMcih0KXtyZXR1cm4gbmV3IEFyKHt0eXBlOiJsYXp5IixnZXR0ZXI6dH0pfWNvbnN0IE1yPWQoIlpvZFByb21pc2UiLCh0LG4pPT57bWwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5MZCh0LHIsbyxlKSx0LnVud3JhcD0oKT0+dC5fem9kLmRlZi5pbm5lclR5cGV9KTtmdW5jdGlvbiBrYSh0KXtyZXR1cm4gbmV3IE1yKHt0eXBlOiJwcm9taXNlIixpbm5lclR5cGU6dH0pfWNvbnN0IHFyPWQoIlpvZEZ1bmN0aW9uIiwodCxuKT0+e2RsLmluaXQodCxuKSx4LmluaXQodCxuKSx0Ll96b2QucHJvY2Vzc0pTT05TY2hlbWE9KHIsbyxlKT0+d2QodCxyKX0pO2Z1bmN0aW9uIFdlKHQpe3JldHVybiBuZXcgcXIoe3R5cGU6ImZ1bmN0aW9uIixpbnB1dDpBcnJheS5pc0FycmF5KHQ/LmlucHV0KT9ocih0Py5pbnB1dCk6dD8uaW5wdXQ/P3coTygpKSxvdXRwdXQ6dD8ub3V0cHV0Pz9PKCl9KX1jb25zdCBsdD1kKCJab2RDdXN0b20iLCh0LG4pPT57ZmwuaW5pdCh0LG4pLHguaW5pdCh0LG4pLHQuX3pvZC5wcm9jZXNzSlNPTlNjaGVtYT0ocixvLGUpPT5TZCh0LHIpfSk7ZnVuY3Rpb24gU2EodCl7Y29uc3Qgbj1uZXcgcSh7Y2hlY2s6ImN1c3RvbSJ9KTtyZXR1cm4gbi5fem9kLmNoZWNrPXQsbn1mdW5jdGlvbiBGcih0LG4pe3JldHVybiBYbChsdCx0Pz8oKCk9PiEwKSxuKX1mdW5jdGlvbiBKcih0LG49e30pe3JldHVybiBZbChsdCx0LG4pfWZ1bmN0aW9uIEhyKHQsbil7cmV0dXJuIFFsKHQsbil9Y29uc3Qgd2E9dGQsSWE9bmQ7ZnVuY3Rpb24gemEodCxuPXt9KXtjb25zdCByPW5ldyBsdCh7dHlwZToiY3VzdG9tIixjaGVjazoiY3VzdG9tIixmbjpvPT5vIGluc3RhbmNlb2YgdCxhYm9ydDohMCwuLi5oKG4pfSk7cmV0dXJuIHIuX3pvZC5iYWcuQ2xhc3M9dCxyLl96b2QuY2hlY2s9bz0+e28udmFsdWUgaW5zdGFuY2VvZiB0fHxvLmlzc3Vlcy5wdXNoKHtjb2RlOiJpbnZhbGlkX3R5cGUiLGV4cGVjdGVkOnQubmFtZSxpbnB1dDpvLnZhbHVlLGluc3Q6cixwYXRoOlsuLi5yLl96b2QuZGVmLnBhdGg/P1tdXX0pfSxyfWNvbnN0IHhhPSguLi50KT0+cmQoe0NvZGVjOnV0LEJvb2xlYW46cnQsU3RyaW5nOmV0fSwuLi50KTtmdW5jdGlvbiBUYSh0KXtjb25zdCBuPUxyKCgpPT5qKFtwKHQpLHooKSxEKCksY24oKSx3KG4pLFUocCgpLG4pXSkpO3JldHVybiBufWZ1bmN0aW9uIGZuKHQsbil7cmV0dXJuIG5ldyBFcih7dHlwZToicGlwZSIsaW46ZG4odCksb3V0Om59KX1jb25zdCBWZz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsWm9kQW55OmNyLFpvZEFycmF5Om1yLFpvZEJhc2U2NDpubixab2RCYXNlNjRVUkw6cm4sWm9kQmlnSW50Oml0LFpvZEJpZ0ludEZvcm1hdDpzbixab2RCb29sZWFuOnJ0LFpvZENJRFJ2NDplbixab2RDSURSdjY6dG4sWm9kQ1VJRDpLdCxab2RDVUlEMjpCdCxab2RDYXRjaDpPcixab2RDb2RlYzp1dCxab2RDdXN0b206bHQsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlplLFpvZERhdGU6dW4sWm9kRGVmYXVsdDp6cixab2REaXNjcmltaW5hdGVkVW5pb246ZnIsWm9kRTE2NDpvbixab2RFbWFpbDpKdCxab2RFbW9qaTpIdCxab2RFbnVtOk9lLFpvZEV4YWN0T3B0aW9uYWw6U3IsWm9kRmlsZTp5cixab2RGdW5jdGlvbjpxcixab2RHVUlEOlZlLFpvZElQdjQ6WXQsWm9kSVB2NjpRdCxab2RJbnRlcnNlY3Rpb246Z3IsWm9kSldUOmFuLFpvZEtTVUlEOlh0LFpvZExhenk6QXIsWm9kTGl0ZXJhbDpicixab2RNQUM6aXIsWm9kTWFwOiRyLFpvZE5hTjpOcixab2ROYW5vSUQ6VnQsWm9kTmV2ZXI6bHIsWm9kTm9uT3B0aW9uYWw6cG4sWm9kTnVsbDpzcixab2ROdWxsYWJsZTpJcixab2ROdW1iZXI6bnQsWm9kTnVtYmVyRm9ybWF0OmtlLFpvZE9iamVjdDpvdCxab2RPcHRpb25hbDptbixab2RQaXBlOmN0LFpvZFByZWZhdWx0OlRyLFpvZFByZXByb2Nlc3M6RXIsWm9kUHJvbWlzZTpNcixab2RSZWFkb25seTpacixab2RSZWNvcmQ6UGUsWm9kU2V0Ol9yLFpvZFN0cmluZzpldCxab2RTdHJpbmdGb3JtYXQ6Wixab2RTdWNjZXNzOlByLFpvZFN5bWJvbDpvcixab2RUZW1wbGF0ZUxpdGVyYWw6Q3IsWm9kVHJhbnNmb3JtOmtyLFpvZFR1cGxlOnZyLFpvZFR5cGU6eCxab2RVTElEOld0LFpvZFVSTDp0dCxab2RVVUlEOm1lLFpvZFVuZGVmaW5lZDphcixab2RVbmlvbjphdCxab2RVbmtub3duOnVyLFpvZFZvaWQ6ZHIsWm9kWElEOkd0LFpvZFhvcjpwcixfWm9kU3RyaW5nOkZ0LF9kZWZhdWx0OnhyLF9mdW5jdGlvbjpXZSxhbnk6aWEsYXJyYXk6dyxiYXNlNjQ6cW8sYmFzZTY0dXJsOkZvLGJpZ2ludDplYSxib29sZWFuOkQsY2F0Y2g6RHIsY2hlY2s6U2EsY2lkcnY0OkxvLGNpZHJ2NjpNbyxjb2RlYzpfYSxjdWlkOk9vLGN1aWQyOkRvLGN1c3RvbTpGcixkYXRlOmFhLGRlc2NyaWJlOndhLGRpc2NyaW1pbmF0ZWRVbmlvbjpsbixlMTY0OkpvLGVtYWlsOmtvLGVtb2ppOlVvLGVudW06RyxleGFjdE9wdGlvbmFsOndyLGZpbGU6Z2EsZmxvYXQzMjpHbyxmbG9hdDY0OlhvLGZ1bmN0aW9uOldlLGd1aWQ6U28saGFzaDpXbyxoZXg6Qm8saG9zdG5hbWU6S28saHR0cFVybDpqbyxpbnN0YW5jZW9mOnphLGludDpodCxpbnQzMjpZbyxpbnQ2NDp0YSxpbnRlcnNlY3Rpb246c3QsaW52ZXJ0Q29kZWM6YmEsaXB2NDpSbyxpcHY2OkFvLGpzb246VGEsand0OkhvLGtleW9mOnNhLGtzdWlkOlpvLGxhenk6THIsbGl0ZXJhbDptLGxvb3NlT2JqZWN0OlcsbG9vc2VSZWNvcmQ6ZGEsbWFjOkNvLG1hcDptYSxtZXRhOklhLG5hbjokYSxuYW5vaWQ6UG8sbmF0aXZlRW51bTpmYSxuZXZlcjpVZSxub25vcHRpb25hbDpVcixudWxsOmNuLG51bGxhYmxlOkJlLG51bGxpc2g6dmEsbnVtYmVyOnosb2JqZWN0OmYsb3B0aW9uYWw6QSxwYXJ0aWFsUmVjb3JkOmxhLHBpcGU6JHQscHJlZmF1bHQ6anIscHJlcHJvY2Vzczpmbixwcm9taXNlOmthLHJlYWRvbmx5OlJyLHJlY29yZDpVLHJlZmluZTpKcixzZXQ6cGEsc3RyaWN0T2JqZWN0OmNhLHN0cmluZzpwLHN0cmluZ0Zvcm1hdDpWbyxzdHJpbmdib29sOnhhLHN1Y2Nlc3M6aGEsc3VwZXJSZWZpbmU6SHIsc3ltYm9sOnJhLHRlbXBsYXRlTGl0ZXJhbDp5YSx0cmFuc2Zvcm06ZG4sdHVwbGU6aHIsdWludDMyOlFvLHVpbnQ2NDpuYSx1bGlkOk5vLHVuZGVmaW5lZDpLZSx1bmlvbjpqLHVua25vd246Tyx1cmw6VG8sdXVpZDp3byx1dWlkdjQ6SW8sdXVpZHY2OnpvLHV1aWR2Nzp4byx2b2lkOm9hLHhpZDpFbyx4b3I6dWF9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksV2Q9e2ludmFsaWRfdHlwZToiaW52YWxpZF90eXBlIix0b29fYmlnOiJ0b29fYmlnIix0b29fc21hbGw6InRvb19zbWFsbCIsaW52YWxpZF9mb3JtYXQ6ImludmFsaWRfZm9ybWF0Iixub3RfbXVsdGlwbGVfb2Y6Im5vdF9tdWx0aXBsZV9vZiIsdW5yZWNvZ25pemVkX2tleXM6InVucmVjb2duaXplZF9rZXlzIixpbnZhbGlkX3VuaW9uOiJpbnZhbGlkX3VuaW9uIixpbnZhbGlkX2tleToiaW52YWxpZF9rZXkiLGludmFsaWRfZWxlbWVudDoiaW52YWxpZF9lbGVtZW50IixpbnZhbGlkX3ZhbHVlOiJpbnZhbGlkX3ZhbHVlIixjdXN0b206ImN1c3RvbSJ9O2Z1bmN0aW9uIEdkKHQpe1Yoe2N1c3RvbUVycm9yOnR9KX1mdW5jdGlvbiBYZCgpe3JldHVybiBWKCkuY3VzdG9tRXJyb3J9dmFyIE5uO05ufHwoTm49e30pO2NvbnN0IGI9ey4uLlZnLC4uLkhnLGlzbzpjb30sS2c9bmV3IFNldChbIiRzY2hlbWEiLCIkcmVmIiwiJGRlZnMiLCJkZWZpbml0aW9ucyIsIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIiwidHlwZSIsImVudW0iLCJjb25zdCIsImFueU9mIiwib25lT2YiLCJhbGxPZiIsIm5vdCIsInByb3BlcnRpZXMiLCJyZXF1aXJlZCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwicGF0dGVyblByb3BlcnRpZXMiLCJwcm9wZXJ0eU5hbWVzIiwibWluUHJvcGVydGllcyIsIm1heFByb3BlcnRpZXMiLCJpdGVtcyIsInByZWZpeEl0ZW1zIiwiYWRkaXRpb25hbEl0ZW1zIiwibWluSXRlbXMiLCJtYXhJdGVtcyIsInVuaXF1ZUl0ZW1zIiwiY29udGFpbnMiLCJtaW5Db250YWlucyIsIm1heENvbnRhaW5zIiwibWluTGVuZ3RoIiwibWF4TGVuZ3RoIiwicGF0dGVybiIsImZvcm1hdCIsIm1pbmltdW0iLCJtYXhpbXVtIiwiZXhjbHVzaXZlTWluaW11bSIsImV4Y2x1c2l2ZU1heGltdW0iLCJtdWx0aXBsZU9mIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0IiwiY29udGVudEVuY29kaW5nIiwiY29udGVudE1lZGlhVHlwZSIsImNvbnRlbnRTY2hlbWEiLCJ1bmV2YWx1YXRlZEl0ZW1zIiwidW5ldmFsdWF0ZWRQcm9wZXJ0aWVzIiwiaWYiLCJ0aGVuIiwiZWxzZSIsImRlcGVuZGVudFNjaGVtYXMiLCJkZXBlbmRlbnRSZXF1aXJlZCIsIm51bGxhYmxlIiwicmVhZE9ubHkiXSk7ZnVuY3Rpb24gQmcodCxuKXtjb25zdCByPXQuJHNjaGVtYTtyZXR1cm4gcj09PSJodHRwczovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC8yMDIwLTEyL3NjaGVtYSI/ImRyYWZ0LTIwMjAtMTIiOnI9PT0iaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEjIj8iZHJhZnQtNyI6cj09PSJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA0L3NjaGVtYSMiPyJkcmFmdC00IjpuPz8iZHJhZnQtMjAyMC0xMiJ9ZnVuY3Rpb24gV2codCxuKXtpZighdC5zdGFydHNXaXRoKCIjIikpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCAkcmVmIGlzIG5vdCBzdXBwb3J0ZWQsIG9ubHkgbG9jYWwgcmVmcyAoIy8uLi4pIGFyZSBhbGxvd2VkIik7Y29uc3Qgcj10LnNsaWNlKDEpLnNwbGl0KCIvIikuZmlsdGVyKEJvb2xlYW4pO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gbi5yb290U2NoZW1hO2NvbnN0IG89bi52ZXJzaW9uPT09ImRyYWZ0LTIwMjAtMTIiPyIkZGVmcyI6ImRlZmluaXRpb25zIjtpZihyWzBdPT09byl7Y29uc3QgZT1yWzFdO2lmKCFlfHwhbi5kZWZzW2VdKXRocm93IG5ldyBFcnJvcihgUmVmZXJlbmNlIG5vdCBmb3VuZDogJHt0fWApO3JldHVybiBuLmRlZnNbZV19dGhyb3cgbmV3IEVycm9yKGBSZWZlcmVuY2Ugbm90IGZvdW5kOiAke3R9YCl9ZnVuY3Rpb24gWWQodCxuKXtpZih0Lm5vdCE9PXZvaWQgMCl7aWYodHlwZW9mIHQubm90PT0ib2JqZWN0IiYmT2JqZWN0LmtleXModC5ub3QpLmxlbmd0aD09PTApcmV0dXJuIGIubmV2ZXIoKTt0aHJvdyBuZXcgRXJyb3IoIm5vdCBpcyBub3Qgc3VwcG9ydGVkIGluIFpvZCAoZXhjZXB0IHsgbm90OiB7fSB9IGZvciBuZXZlcikiKX1pZih0LnVuZXZhbHVhdGVkSXRlbXMhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJ1bmV2YWx1YXRlZEl0ZW1zIGlzIG5vdCBzdXBwb3J0ZWQiKTtpZih0LnVuZXZhbHVhdGVkUHJvcGVydGllcyE9PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoInVuZXZhbHVhdGVkUHJvcGVydGllcyBpcyBub3Qgc3VwcG9ydGVkIik7aWYodC5pZiE9PXZvaWQgMHx8dC50aGVuIT09dm9pZCAwfHx0LmVsc2UhPT12b2lkIDApdGhyb3cgbmV3IEVycm9yKCJDb25kaXRpb25hbCBzY2hlbWFzIChpZi90aGVuL2Vsc2UpIGFyZSBub3Qgc3VwcG9ydGVkIik7aWYodC5kZXBlbmRlbnRTY2hlbWFzIT09dm9pZCAwfHx0LmRlcGVuZGVudFJlcXVpcmVkIT09dm9pZCAwKXRocm93IG5ldyBFcnJvcigiZGVwZW5kZW50U2NoZW1hcyBhbmQgZGVwZW5kZW50UmVxdWlyZWQgYXJlIG5vdCBzdXBwb3J0ZWQiKTtpZih0LiRyZWYpe2NvbnN0IGU9dC4kcmVmO2lmKG4ucmVmcy5oYXMoZSkpcmV0dXJuIG4ucmVmcy5nZXQoZSk7aWYobi5wcm9jZXNzaW5nLmhhcyhlKSlyZXR1cm4gYi5sYXp5KCgpPT57aWYoIW4ucmVmcy5oYXMoZSkpdGhyb3cgbmV3IEVycm9yKGBDaXJjdWxhciByZWZlcmVuY2Ugbm90IHJlc29sdmVkOiAke2V9YCk7cmV0dXJuIG4ucmVmcy5nZXQoZSl9KTtuLnByb2Nlc3NpbmcuYWRkKGUpO2NvbnN0IGk9V2coZSxuKSxhPVEoaSxuKTtyZXR1cm4gbi5yZWZzLnNldChlLGEpLG4ucHJvY2Vzc2luZy5kZWxldGUoZSksYX1pZih0LmVudW0hPT12b2lkIDApe2NvbnN0IGU9dC5lbnVtO2lmKG4udmVyc2lvbj09PSJvcGVuYXBpLTMuMCImJnQubnVsbGFibGU9PT0hMCYmZS5sZW5ndGg9PT0xJiZlWzBdPT09bnVsbClyZXR1cm4gYi5udWxsKCk7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBiLm5ldmVyKCk7aWYoZS5sZW5ndGg9PT0xKXJldHVybiBiLmxpdGVyYWwoZVswXSk7aWYoZS5ldmVyeShhPT50eXBlb2YgYT09InN0cmluZyIpKXJldHVybiBiLmVudW0oZSk7Y29uc3QgaT1lLm1hcChhPT5iLmxpdGVyYWwoYSkpO3JldHVybiBpLmxlbmd0aDwyP2lbMF06Yi51bmlvbihbaVswXSxpWzFdLC4uLmkuc2xpY2UoMildKX1pZih0LmNvbnN0IT09dm9pZCAwKXJldHVybiBiLmxpdGVyYWwodC5jb25zdCk7Y29uc3Qgcj10LnR5cGU7aWYoQXJyYXkuaXNBcnJheShyKSl7Y29uc3QgZT1yLm1hcChpPT57Y29uc3QgYT17Li4udCx0eXBlOml9O3JldHVybiBZZChhLG4pfSk7cmV0dXJuIGUubGVuZ3RoPT09MD9iLm5ldmVyKCk6ZS5sZW5ndGg9PT0xP2VbMF06Yi51bmlvbihlKX1pZighcilyZXR1cm4gYi5hbnkoKTtsZXQgbztzd2l0Y2gocil7Y2FzZSJzdHJpbmciOntsZXQgZT1iLnN0cmluZygpO2lmKHQuZm9ybWF0KXtjb25zdCBpPXQuZm9ybWF0O2k9PT0iZW1haWwiP2U9ZS5jaGVjayhiLmVtYWlsKCkpOmk9PT0idXJpInx8aT09PSJ1cmktcmVmZXJlbmNlIj9lPWUuY2hlY2soYi51cmwoKSk6aT09PSJ1dWlkInx8aT09PSJndWlkIj9lPWUuY2hlY2soYi51dWlkKCkpOmk9PT0iZGF0ZS10aW1lIj9lPWUuY2hlY2soYi5pc28uZGF0ZXRpbWUoKSk6aT09PSJkYXRlIj9lPWUuY2hlY2soYi5pc28uZGF0ZSgpKTppPT09InRpbWUiP2U9ZS5jaGVjayhiLmlzby50aW1lKCkpOmk9PT0iZHVyYXRpb24iP2U9ZS5jaGVjayhiLmlzby5kdXJhdGlvbigpKTppPT09ImlwdjQiP2U9ZS5jaGVjayhiLmlwdjQoKSk6aT09PSJpcHY2Ij9lPWUuY2hlY2soYi5pcHY2KCkpOmk9PT0ibWFjIj9lPWUuY2hlY2soYi5tYWMoKSk6aT09PSJjaWRyIj9lPWUuY2hlY2soYi5jaWRydjQoKSk6aT09PSJjaWRyLXY2Ij9lPWUuY2hlY2soYi5jaWRydjYoKSk6aT09PSJiYXNlNjQiP2U9ZS5jaGVjayhiLmJhc2U2NCgpKTppPT09ImJhc2U2NHVybCI/ZT1lLmNoZWNrKGIuYmFzZTY0dXJsKCkpOmk9PT0iZTE2NCI/ZT1lLmNoZWNrKGIuZTE2NCgpKTppPT09Imp3dCI/ZT1lLmNoZWNrKGIuand0KCkpOmk9PT0iZW1vamkiP2U9ZS5jaGVjayhiLmVtb2ppKCkpOmk9PT0ibmFub2lkIj9lPWUuY2hlY2soYi5uYW5vaWQoKSk6aT09PSJjdWlkIj9lPWUuY2hlY2soYi5jdWlkKCkpOmk9PT0iY3VpZDIiP2U9ZS5jaGVjayhiLmN1aWQyKCkpOmk9PT0idWxpZCI/ZT1lLmNoZWNrKGIudWxpZCgpKTppPT09InhpZCI/ZT1lLmNoZWNrKGIueGlkKCkpOmk9PT0ia3N1aWQiJiYoZT1lLmNoZWNrKGIua3N1aWQoKSkpfXR5cGVvZiB0Lm1pbkxlbmd0aD09Im51bWJlciImJihlPWUubWluKHQubWluTGVuZ3RoKSksdHlwZW9mIHQubWF4TGVuZ3RoPT0ibnVtYmVyIiYmKGU9ZS5tYXgodC5tYXhMZW5ndGgpKSx0LnBhdHRlcm4mJihlPWUucmVnZXgobmV3IFJlZ0V4cCh0LnBhdHRlcm4pKSksbz1lO2JyZWFrfWNhc2UibnVtYmVyIjpjYXNlImludGVnZXIiOntsZXQgZT1yPT09ImludGVnZXIiP2IubnVtYmVyKCkuaW50KCk6Yi5udW1iZXIoKTt0eXBlb2YgdC5taW5pbXVtPT0ibnVtYmVyIiYmKGU9ZS5taW4odC5taW5pbXVtKSksdHlwZW9mIHQubWF4aW11bT09Im51bWJlciImJihlPWUubWF4KHQubWF4aW11bSkpLHR5cGVvZiB0LmV4Y2x1c2l2ZU1pbmltdW09PSJudW1iZXIiP2U9ZS5ndCh0LmV4Y2x1c2l2ZU1pbmltdW0pOnQuZXhjbHVzaXZlTWluaW11bT09PSEwJiZ0eXBlb2YgdC5taW5pbXVtPT0ibnVtYmVyIiYmKGU9ZS5ndCh0Lm1pbmltdW0pKSx0eXBlb2YgdC5leGNsdXNpdmVNYXhpbXVtPT0ibnVtYmVyIj9lPWUubHQodC5leGNsdXNpdmVNYXhpbXVtKTp0LmV4Y2x1c2l2ZU1heGltdW09PT0hMCYmdHlwZW9mIHQubWF4aW11bT09Im51bWJlciImJihlPWUubHQodC5tYXhpbXVtKSksdHlwZW9mIHQubXVsdGlwbGVPZj09Im51bWJlciImJihlPWUubXVsdGlwbGVPZih0Lm11bHRpcGxlT2YpKSxvPWU7YnJlYWt9Y2FzZSJib29sZWFuIjp7bz1iLmJvb2xlYW4oKTticmVha31jYXNlIm51bGwiOntvPWIubnVsbCgpO2JyZWFrfWNhc2Uib2JqZWN0Ijp7Y29uc3QgZT17fSxpPXQucHJvcGVydGllc3x8e30sYT1uZXcgU2V0KHQucmVxdWlyZWR8fFtdKTtmb3IoY29uc3RbYyx1XW9mIE9iamVjdC5lbnRyaWVzKGkpKXtjb25zdCBsPVEodSxuKTtlW2NdPWEuaGFzKGMpP2w6bC5vcHRpb25hbCgpfWlmKHQucHJvcGVydHlOYW1lcyl7Y29uc3QgYz1RKHQucHJvcGVydHlOYW1lcyxuKSx1PXQuYWRkaXRpb25hbFByb3BlcnRpZXMmJnR5cGVvZiB0LmFkZGl0aW9uYWxQcm9wZXJ0aWVzPT0ib2JqZWN0Ij9RKHQuYWRkaXRpb25hbFByb3BlcnRpZXMsbik6Yi5hbnkoKTtpZihPYmplY3Qua2V5cyhlKS5sZW5ndGg9PT0wKXtvPWIucmVjb3JkKGMsdSk7YnJlYWt9Y29uc3QgbD1iLm9iamVjdChlKS5wYXNzdGhyb3VnaCgpLGc9Yi5sb29zZVJlY29yZChjLHUpO289Yi5pbnRlcnNlY3Rpb24obCxnKTticmVha31pZih0LnBhdHRlcm5Qcm9wZXJ0aWVzKXtjb25zdCBjPXQucGF0dGVyblByb3BlcnRpZXMsdT1PYmplY3Qua2V5cyhjKSxsPVtdO2Zvcihjb25zdCB2IG9mIHUpe2NvbnN0ICQ9UShjW3ZdLG4pLHk9Yi5zdHJpbmcoKS5yZWdleChuZXcgUmVnRXhwKHYpKTtsLnB1c2goYi5sb29zZVJlY29yZCh5LCQpKX1jb25zdCBnPVtdO2lmKE9iamVjdC5rZXlzKGUpLmxlbmd0aD4wJiZnLnB1c2goYi5vYmplY3QoZSkucGFzc3Rocm91Z2goKSksZy5wdXNoKC4uLmwpLGcubGVuZ3RoPT09MClvPWIub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpO2Vsc2UgaWYoZy5sZW5ndGg9PT0xKW89Z1swXTtlbHNle2xldCB2PWIuaW50ZXJzZWN0aW9uKGdbMF0sZ1sxXSk7Zm9yKGxldCAkPTI7JDxnLmxlbmd0aDskKyspdj1iLmludGVyc2VjdGlvbih2LGdbJF0pO289dn1icmVha31jb25zdCBzPWIub2JqZWN0KGUpO3QuYWRkaXRpb25hbFByb3BlcnRpZXM9PT0hMT9vPXMuc3RyaWN0KCk6dHlwZW9mIHQuYWRkaXRpb25hbFByb3BlcnRpZXM9PSJvYmplY3QiP289cy5jYXRjaGFsbChRKHQuYWRkaXRpb25hbFByb3BlcnRpZXMsbikpOm89cy5wYXNzdGhyb3VnaCgpO2JyZWFrfWNhc2UiYXJyYXkiOntjb25zdCBlPXQucHJlZml4SXRlbXMsaT10Lml0ZW1zO2lmKGUmJkFycmF5LmlzQXJyYXkoZSkpe2NvbnN0IGE9ZS5tYXAoYz0+UShjLG4pKSxzPWkmJnR5cGVvZiBpPT0ib2JqZWN0IiYmIUFycmF5LmlzQXJyYXkoaSk/UShpLG4pOnZvaWQgMDtzP289Yi50dXBsZShhKS5yZXN0KHMpOm89Yi50dXBsZShhKSx0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5taW5MZW5ndGgodC5taW5JdGVtcykpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihvPW8uY2hlY2soYi5tYXhMZW5ndGgodC5tYXhJdGVtcykpKX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoaSkpe2NvbnN0IGE9aS5tYXAoYz0+UShjLG4pKSxzPXQuYWRkaXRpb25hbEl0ZW1zJiZ0eXBlb2YgdC5hZGRpdGlvbmFsSXRlbXM9PSJvYmplY3QiP1EodC5hZGRpdGlvbmFsSXRlbXMsbik6dm9pZCAwO3M/bz1iLnR1cGxlKGEpLnJlc3Qocyk6bz1iLnR1cGxlKGEpLHR5cGVvZiB0Lm1pbkl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhiLm1pbkxlbmd0aCh0Lm1pbkl0ZW1zKSkpLHR5cGVvZiB0Lm1heEl0ZW1zPT0ibnVtYmVyIiYmKG89by5jaGVjayhiLm1heExlbmd0aCh0Lm1heEl0ZW1zKSkpfWVsc2UgaWYoaSE9PXZvaWQgMCl7Y29uc3QgYT1RKGksbik7bGV0IHM9Yi5hcnJheShhKTt0eXBlb2YgdC5taW5JdGVtcz09Im51bWJlciImJihzPXMubWluKHQubWluSXRlbXMpKSx0eXBlb2YgdC5tYXhJdGVtcz09Im51bWJlciImJihzPXMubWF4KHQubWF4SXRlbXMpKSxvPXN9ZWxzZSBvPWIuYXJyYXkoYi5hbnkoKSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHR5cGU6ICR7cn1gKX1yZXR1cm4gb31mdW5jdGlvbiBRKHQsbil7aWYodHlwZW9mIHQ9PSJib29sZWFuIilyZXR1cm4gdD9iLmFueSgpOmIubmV2ZXIoKTtsZXQgcj1ZZCh0LG4pO2NvbnN0IG89dC50eXBlfHx0LmVudW0hPT12b2lkIDB8fHQuY29uc3QhPT12b2lkIDA7aWYodC5hbnlPZiYmQXJyYXkuaXNBcnJheSh0LmFueU9mKSl7Y29uc3Qgcz10LmFueU9mLm1hcCh1PT5RKHUsbikpLGM9Yi51bmlvbihzKTtyPW8/Yi5pbnRlcnNlY3Rpb24ocixjKTpjfWlmKHQub25lT2YmJkFycmF5LmlzQXJyYXkodC5vbmVPZikpe2NvbnN0IHM9dC5vbmVPZi5tYXAodT0+USh1LG4pKSxjPWIueG9yKHMpO3I9bz9iLmludGVyc2VjdGlvbihyLGMpOmN9aWYodC5hbGxPZiYmQXJyYXkuaXNBcnJheSh0LmFsbE9mKSlpZih0LmFsbE9mLmxlbmd0aD09PTApcj1vP3I6Yi5hbnkoKTtlbHNle2xldCBzPW8/cjpRKHQuYWxsT2ZbMF0sbik7Y29uc3QgYz1vPzA6MTtmb3IobGV0IHU9Yzt1PHQuYWxsT2YubGVuZ3RoO3UrKylzPWIuaW50ZXJzZWN0aW9uKHMsUSh0LmFsbE9mW3VdLG4pKTtyPXN9dC5udWxsYWJsZT09PSEwJiZuLnZlcnNpb249PT0ib3BlbmFwaS0zLjAiJiYocj1iLm51bGxhYmxlKHIpKSx0LnJlYWRPbmx5PT09ITAmJihyPWIucmVhZG9ubHkocikpLHQuZGVmYXVsdCE9PXZvaWQgMCYmKHI9ci5kZWZhdWx0KHQuZGVmYXVsdCkpO2NvbnN0IGU9e30saT1bIiRpZCIsImlkIiwiJGNvbW1lbnQiLCIkYW5jaG9yIiwiJHZvY2FidWxhcnkiLCIkZHluYW1pY1JlZiIsIiRkeW5hbWljQW5jaG9yIl07Zm9yKGNvbnN0IHMgb2YgaSlzIGluIHQmJihlW3NdPXRbc10pO2NvbnN0IGE9WyJjb250ZW50RW5jb2RpbmciLCJjb250ZW50TWVkaWFUeXBlIiwiY29udGVudFNjaGVtYSJdO2Zvcihjb25zdCBzIG9mIGEpcyBpbiB0JiYoZVtzXT10W3NdKTtmb3IoY29uc3QgcyBvZiBPYmplY3Qua2V5cyh0KSlLZy5oYXMocyl8fChlW3NdPXRbc10pO3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCYmbi5yZWdpc3RyeS5hZGQocixlKSx0LmRlc2NyaXB0aW9uJiYocj1yLmRlc2NyaWJlKHQuZGVzY3JpcHRpb24pKSxyfWZ1bmN0aW9uIFFkKHQsbil7aWYodHlwZW9mIHQ9PSJib29sZWFuIilyZXR1cm4gdD9iLmFueSgpOmIubmV2ZXIoKTtsZXQgcjt0cnl7cj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKX1jYXRjaHt0aHJvdyBuZXcgRXJyb3IoImZyb21KU09OU2NoZW1hIGlucHV0IGlzIG5vdCB2YWxpZCBKU09OIChwb3NzaWJseSBjeWNsaWMpOyB1c2UgJGRlZnMvJHJlZiBmb3IgcmVjdXJzaXZlIHNjaGVtYXMiKX1jb25zdCBvPUJnKHIsbj8uZGVmYXVsdFRhcmdldCksZT1yLiRkZWZzfHxyLmRlZmluaXRpb25zfHx7fSxpPXt2ZXJzaW9uOm8sZGVmczplLHJlZnM6bmV3IE1hcCxwcm9jZXNzaW5nOm5ldyBTZXQscm9vdFNjaGVtYTpyLHJlZ2lzdHJ5Om4/LnJlZ2lzdHJ5Pz9yZX07cmV0dXJuIFEocixpKX1mdW5jdGlvbiBHZyh0KXtyZXR1cm4gYmwoZXQsdCl9ZnVuY3Rpb24gWGcodCl7cmV0dXJuIHhsKG50LHQpfWZ1bmN0aW9uIFlnKHQpe3JldHVybiBObChydCx0KX1mdW5jdGlvbiBRZyh0KXtyZXR1cm4gWmwoaXQsdCl9ZnVuY3Rpb24gZXYodCl7cmV0dXJuIEtsKHVuLHQpfWNvbnN0IGVtPU9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnR5KHtfX3Byb3RvX186bnVsbCxiaWdpbnQ6UWcsYm9vbGVhbjpZZyxkYXRlOmV2LG51bWJlcjpYZyxzdHJpbmc6R2d9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSk7VihnbCgpKTtjb25zdCB3cz1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsJGJyYW5kOmlpLCRpbnB1dDpFaSwkb3V0cHV0Ok5pLE5FVkVSOnJpLFRpbWVQcmVjaXNpb246bm8sWm9kQW55OmNyLFpvZEFycmF5Om1yLFpvZEJhc2U2NDpubixab2RCYXNlNjRVUkw6cm4sWm9kQmlnSW50Oml0LFpvZEJpZ0ludEZvcm1hdDpzbixab2RCb29sZWFuOnJ0LFpvZENJRFJ2NDplbixab2RDSURSdjY6dG4sWm9kQ1VJRDpLdCxab2RDVUlEMjpCdCxab2RDYXRjaDpPcixab2RDb2RlYzp1dCxab2RDdXN0b206bHQsWm9kQ3VzdG9tU3RyaW5nRm9ybWF0OlplLFpvZERhdGU6dW4sWm9kRGVmYXVsdDp6cixab2REaXNjcmltaW5hdGVkVW5pb246ZnIsWm9kRTE2NDpvbixab2RFbWFpbDpKdCxab2RFbW9qaTpIdCxab2RFbnVtOk9lLFpvZEVycm9yOkJkLFpvZEV4YWN0T3B0aW9uYWw6U3IsWm9kRmlsZTp5cixnZXQgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kKCl7cmV0dXJuIE5ufSxab2RGdW5jdGlvbjpxcixab2RHVUlEOlZlLFpvZElQdjQ6WXQsWm9kSVB2NjpRdCxab2RJU09EYXRlOnRyLFpvZElTT0RhdGVUaW1lOmVyLFpvZElTT0R1cmF0aW9uOnJyLFpvZElTT1RpbWU6bnIsWm9kSW50ZXJzZWN0aW9uOmdyLFpvZElzc3VlQ29kZTpXZCxab2RKV1Q6YW4sWm9kS1NVSUQ6WHQsWm9kTGF6eTpBcixab2RMaXRlcmFsOmJyLFpvZE1BQzppcixab2RNYXA6JHIsWm9kTmFOOk5yLFpvZE5hbm9JRDpWdCxab2ROZXZlcjpscixab2ROb25PcHRpb25hbDpwbixab2ROdWxsOnNyLFpvZE51bGxhYmxlOklyLFpvZE51bWJlcjpudCxab2ROdW1iZXJGb3JtYXQ6a2UsWm9kT2JqZWN0Om90LFpvZE9wdGlvbmFsOm1uLFpvZFBpcGU6Y3QsWm9kUHJlZmF1bHQ6VHIsWm9kUHJlcHJvY2VzczpFcixab2RQcm9taXNlOk1yLFpvZFJlYWRvbmx5OlpyLFpvZFJlYWxFcnJvcjpuZSxab2RSZWNvcmQ6UGUsWm9kU2V0Ol9yLFpvZFN0cmluZzpldCxab2RTdHJpbmdGb3JtYXQ6Wixab2RTdWNjZXNzOlByLFpvZFN5bWJvbDpvcixab2RUZW1wbGF0ZUxpdGVyYWw6Q3IsWm9kVHJhbnNmb3JtOmtyLFpvZFR1cGxlOnZyLFpvZFR5cGU6eCxab2RVTElEOld0LFpvZFVSTDp0dCxab2RVVUlEOm1lLFpvZFVuZGVmaW5lZDphcixab2RVbmlvbjphdCxab2RVbmtub3duOnVyLFpvZFZvaWQ6ZHIsWm9kWElEOkd0LFpvZFhvcjpwcixfWm9kU3RyaW5nOkZ0LF9kZWZhdWx0OnhyLF9mdW5jdGlvbjpXZSxhbnk6aWEsYXJyYXk6dyxiYXNlNjQ6cW8sYmFzZTY0dXJsOkZvLGJpZ2ludDplYSxib29sZWFuOkQsY2F0Y2g6RHIsY2hlY2s6U2EsY2lkcnY0OkxvLGNpZHJ2NjpNbyxjbG9uZTphZSxjb2RlYzpfYSxjb2VyY2U6ZW0sY29uZmlnOlYsY29yZTpxZCxjdWlkOk9vLGN1aWQyOkRvLGN1c3RvbTpGcixkYXRlOmFhLGRlY29kZTpnbyxkZWNvZGVBc3luYzpobyxkZXNjcmliZTp3YSxkaXNjcmltaW5hdGVkVW5pb246bG4sZTE2NDpKbyxlbWFpbDprbyxlbW9qaTpVbyxlbmNvZGU6Zm8sZW5jb2RlQXN5bmM6dm8sZW5kc1dpdGg6TnQsZW51bTpHLGV4YWN0T3B0aW9uYWw6d3IsZmlsZTpnYSxmbGF0dGVuRXJyb3I6Rm4sZmxvYXQzMjpHbyxmbG9hdDY0OlhvLGZvcm1hdEVycm9yOkpuLGZyb21KU09OU2NoZW1hOlFkLGZ1bmN0aW9uOldlLGdldEVycm9yTWFwOlhkLGdsb2JhbFJlZ2lzdHJ5OnJlLGd0OiRlLGd0ZTp0ZSxndWlkOlNvLGhhc2g6V28saGV4OkJvLGhvc3RuYW1lOktvLGh0dHBVcmw6am8saW5jbHVkZXM6T3QsaW5zdGFuY2VvZjp6YSxpbnQ6aHQsaW50MzI6WW8saW50NjQ6dGEsaW50ZXJzZWN0aW9uOnN0LGludmVydENvZGVjOmJhLGlwdjQ6Um8saXB2NjpBbyxpc286Y28sanNvbjpUYSxqd3Q6SG8sa2V5b2Y6c2Esa3N1aWQ6Wm8sbGF6eTpMcixsZW5ndGg6UWUsbGl0ZXJhbDptLGxvY2FsZXM6RGksbG9vc2VPYmplY3Q6Vyxsb29zZVJlY29yZDpkYSxsb3dlcmNhc2U6VXQsbHQ6aGUsbHRlOmllLG1hYzpDbyxtYXA6bWEsbWF4TGVuZ3RoOlllLG1heFNpemU6RWUsbWV0YTpJYSxtaW1lOkV0LG1pbkxlbmd0aDpiZSxtaW5TaXplOl9lLG11bHRpcGxlT2Y6amUsbmFuOiRhLG5hbm9pZDpQbyxuYXRpdmVFbnVtOmZhLG5lZ2F0aXZlOkduLG5ldmVyOlVlLG5vbm5lZ2F0aXZlOlluLG5vbm9wdGlvbmFsOlVyLG5vbnBvc2l0aXZlOlhuLG5vcm1hbGl6ZTpadCxudWxsOmNuLG51bGxhYmxlOkJlLG51bGxpc2g6dmEsbnVtYmVyOnosb2JqZWN0OmYsb3B0aW9uYWw6QSxvdmVyd3JpdGU6Z2UscGFyc2U6dW8scGFyc2VBc3luYzpsbyxwYXJ0aWFsUmVjb3JkOmxhLHBpcGU6JHQscG9zaXRpdmU6V24scHJlZmF1bHQ6anIscHJlcHJvY2VzczpmbixwcmV0dGlmeUVycm9yOmxpLHByb21pc2U6a2EscHJvcGVydHk6UW4scmVhZG9ubHk6UnIscmVjb3JkOlUscmVmaW5lOkpyLHJlZ2V4Omp0LHJlZ2V4ZXM6SG4scmVnaXN0cnk6S24sc2FmZURlY29kZTpfbyxzYWZlRGVjb2RlQXN5bmM6eW8sc2FmZUVuY29kZTokbyxzYWZlRW5jb2RlQXN5bmM6Ym8sc2FmZVBhcnNlOm1vLHNhZmVQYXJzZUFzeW5jOnBvLHNldDpwYSxzZXRFcnJvck1hcDpHZCxzaXplOlhlLHNsdWdpZnk6THQsc3RhcnRzV2l0aDpEdCxzdHJpY3RPYmplY3Q6Y2Esc3RyaW5nOnAsc3RyaW5nRm9ybWF0OlZvLHN0cmluZ2Jvb2w6eGEsc3VjY2VzczpoYSxzdXBlclJlZmluZTpIcixzeW1ib2w6cmEsdGVtcGxhdGVMaXRlcmFsOnlhLHRvSlNPTlNjaGVtYTpvbyx0b0xvd2VyQ2FzZTpDdCx0b1VwcGVyQ2FzZTpBdCx0cmFuc2Zvcm06ZG4sdHJlZWlmeUVycm9yOnVpLHRyaW06UnQsdHVwbGU6aHIsdWludDMyOlFvLHVpbnQ2NDpuYSx1bGlkOk5vLHVuZGVmaW5lZDpLZSx1bmlvbjpqLHVua25vd246Tyx1cHBlcmNhc2U6UHQsdXJsOlRvLHV0aWw6c2ksdXVpZDp3byx1dWlkdjQ6SW8sdXVpZHY2OnpvLHV1aWR2Nzp4byx2b2lkOm9hLHhpZDpFbyx4b3I6dWF9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSksdHY9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLCRicmFuZDppaSwkaW5wdXQ6RWksJG91dHB1dDpOaSxORVZFUjpyaSxUaW1lUHJlY2lzaW9uOm5vLFpvZEFueTpjcixab2RBcnJheTptcixab2RCYXNlNjQ6bm4sWm9kQmFzZTY0VVJMOnJuLFpvZEJpZ0ludDppdCxab2RCaWdJbnRGb3JtYXQ6c24sWm9kQm9vbGVhbjpydCxab2RDSURSdjQ6ZW4sWm9kQ0lEUnY2OnRuLFpvZENVSUQ6S3QsWm9kQ1VJRDI6QnQsWm9kQ2F0Y2g6T3IsWm9kQ29kZWM6dXQsWm9kQ3VzdG9tOmx0LFpvZEN1c3RvbVN0cmluZ0Zvcm1hdDpaZSxab2REYXRlOnVuLFpvZERlZmF1bHQ6enIsWm9kRGlzY3JpbWluYXRlZFVuaW9uOmZyLFpvZEUxNjQ6b24sWm9kRW1haWw6SnQsWm9kRW1vamk6SHQsWm9kRW51bTpPZSxab2RFcnJvcjpCZCxab2RFeGFjdE9wdGlvbmFsOlNyLFpvZEZpbGU6eXIsZ2V0IFpvZEZpcnN0UGFydHlUeXBlS2luZCgpe3JldHVybiBObn0sWm9kRnVuY3Rpb246cXIsWm9kR1VJRDpWZSxab2RJUHY0Oll0LFpvZElQdjY6UXQsWm9kSVNPRGF0ZTp0cixab2RJU09EYXRlVGltZTplcixab2RJU09EdXJhdGlvbjpycixab2RJU09UaW1lOm5yLFpvZEludGVyc2VjdGlvbjpncixab2RJc3N1ZUNvZGU6V2QsWm9kSldUOmFuLFpvZEtTVUlEOlh0LFpvZExhenk6QXIsWm9kTGl0ZXJhbDpicixab2RNQUM6aXIsWm9kTWFwOiRyLFpvZE5hTjpOcixab2ROYW5vSUQ6VnQsWm9kTmV2ZXI6bHIsWm9kTm9uT3B0aW9uYWw6cG4sWm9kTnVsbDpzcixab2ROdWxsYWJsZTpJcixab2ROdW1iZXI6bnQsWm9kTnVtYmVyRm9ybWF0OmtlLFpvZE9iamVjdDpvdCxab2RPcHRpb25hbDptbixab2RQaXBlOmN0LFpvZFByZWZhdWx0OlRyLFpvZFByZXByb2Nlc3M6RXIsWm9kUHJvbWlzZTpNcixab2RSZWFkb25seTpacixab2RSZWFsRXJyb3I6bmUsWm9kUmVjb3JkOlBlLFpvZFNldDpfcixab2RTdHJpbmc6ZXQsWm9kU3RyaW5nRm9ybWF0OlosWm9kU3VjY2VzczpQcixab2RTeW1ib2w6b3IsWm9kVGVtcGxhdGVMaXRlcmFsOkNyLFpvZFRyYW5zZm9ybTprcixab2RUdXBsZTp2cixab2RUeXBlOngsWm9kVUxJRDpXdCxab2RVUkw6dHQsWm9kVVVJRDptZSxab2RVbmRlZmluZWQ6YXIsWm9kVW5pb246YXQsWm9kVW5rbm93bjp1cixab2RWb2lkOmRyLFpvZFhJRDpHdCxab2RYb3I6cHIsX1pvZFN0cmluZzpGdCxfZGVmYXVsdDp4cixfZnVuY3Rpb246V2UsYW55OmlhLGFycmF5OncsYmFzZTY0OnFvLGJhc2U2NHVybDpGbyxiaWdpbnQ6ZWEsYm9vbGVhbjpELGNhdGNoOkRyLGNoZWNrOlNhLGNpZHJ2NDpMbyxjaWRydjY6TW8sY2xvbmU6YWUsY29kZWM6X2EsY29lcmNlOmVtLGNvbmZpZzpWLGNvcmU6cWQsY3VpZDpPbyxjdWlkMjpEbyxjdXN0b206RnIsZGF0ZTphYSxkZWNvZGU6Z28sZGVjb2RlQXN5bmM6aG8sZGVmYXVsdDp3cyxkZXNjcmliZTp3YSxkaXNjcmltaW5hdGVkVW5pb246bG4sZTE2NDpKbyxlbWFpbDprbyxlbW9qaTpVbyxlbmNvZGU6Zm8sZW5jb2RlQXN5bmM6dm8sZW5kc1dpdGg6TnQsZW51bTpHLGV4YWN0T3B0aW9uYWw6d3IsZmlsZTpnYSxmbGF0dGVuRXJyb3I6Rm4sZmxvYXQzMjpHbyxmbG9hdDY0OlhvLGZvcm1hdEVycm9yOkpuLGZyb21KU09OU2NoZW1hOlFkLGZ1bmN0aW9uOldlLGdldEVycm9yTWFwOlhkLGdsb2JhbFJlZ2lzdHJ5OnJlLGd0OiRlLGd0ZTp0ZSxndWlkOlNvLGhhc2g6V28saGV4OkJvLGhvc3RuYW1lOktvLGh0dHBVcmw6am8saW5jbHVkZXM6T3QsaW5zdGFuY2VvZjp6YSxpbnQ6aHQsaW50MzI6WW8saW50NjQ6dGEsaW50ZXJzZWN0aW9uOnN0LGludmVydENvZGVjOmJhLGlwdjQ6Um8saXB2NjpBbyxpc286Y28sanNvbjpUYSxqd3Q6SG8sa2V5b2Y6c2Esa3N1aWQ6Wm8sbGF6eTpMcixsZW5ndGg6UWUsbGl0ZXJhbDptLGxvY2FsZXM6RGksbG9vc2VPYmplY3Q6Vyxsb29zZVJlY29yZDpkYSxsb3dlcmNhc2U6VXQsbHQ6aGUsbHRlOmllLG1hYzpDbyxtYXA6bWEsbWF4TGVuZ3RoOlllLG1heFNpemU6RWUsbWV0YTpJYSxtaW1lOkV0LG1pbkxlbmd0aDpiZSxtaW5TaXplOl9lLG11bHRpcGxlT2Y6amUsbmFuOiRhLG5hbm9pZDpQbyxuYXRpdmVFbnVtOmZhLG5lZ2F0aXZlOkduLG5ldmVyOlVlLG5vbm5lZ2F0aXZlOlluLG5vbm9wdGlvbmFsOlVyLG5vbnBvc2l0aXZlOlhuLG5vcm1hbGl6ZTpadCxudWxsOmNuLG51bGxhYmxlOkJlLG51bGxpc2g6dmEsbnVtYmVyOnosb2JqZWN0OmYsb3B0aW9uYWw6QSxvdmVyd3JpdGU6Z2UscGFyc2U6dW8scGFyc2VBc3luYzpsbyxwYXJ0aWFsUmVjb3JkOmxhLHBpcGU6JHQscG9zaXRpdmU6V24scHJlZmF1bHQ6anIscHJlcHJvY2VzczpmbixwcmV0dGlmeUVycm9yOmxpLHByb21pc2U6a2EscHJvcGVydHk6UW4scmVhZG9ubHk6UnIscmVjb3JkOlUscmVmaW5lOkpyLHJlZ2V4Omp0LHJlZ2V4ZXM6SG4scmVnaXN0cnk6S24sc2FmZURlY29kZTpfbyxzYWZlRGVjb2RlQXN5bmM6eW8sc2FmZUVuY29kZTokbyxzYWZlRW5jb2RlQXN5bmM6Ym8sc2FmZVBhcnNlOm1vLHNhZmVQYXJzZUFzeW5jOnBvLHNldDpwYSxzZXRFcnJvck1hcDpHZCxzaXplOlhlLHNsdWdpZnk6THQsc3RhcnRzV2l0aDpEdCxzdHJpY3RPYmplY3Q6Y2Esc3RyaW5nOnAsc3RyaW5nRm9ybWF0OlZvLHN0cmluZ2Jvb2w6eGEsc3VjY2VzczpoYSxzdXBlclJlZmluZTpIcixzeW1ib2w6cmEsdGVtcGxhdGVMaXRlcmFsOnlhLHRvSlNPTlNjaGVtYTpvbyx0b0xvd2VyQ2FzZTpDdCx0b1VwcGVyQ2FzZTpBdCx0cmFuc2Zvcm06ZG4sdHJlZWlmeUVycm9yOnVpLHRyaW06UnQsdHVwbGU6aHIsdWludDMyOlFvLHVpbnQ2NDpuYSx1bGlkOk5vLHVuZGVmaW5lZDpLZSx1bmlvbjpqLHVua25vd246Tyx1cHBlcmNhc2U6UHQsdXJsOlRvLHV0aWw6c2ksdXVpZDp3byx1dWlkdjQ6SW8sdXVpZHY2OnpvLHV1aWR2Nzp4byx2b2lkOm9hLHhpZDpFbyx4b3I6dWEsejp3c30sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKSx3ZT0iaW8ubW9kZWxjb250ZXh0cHJvdG9jb2wvcmVsYXRlZC10YXNrIixWcj0iMi4wIixIPUZyKHQ9PnQhPT1udWxsJiYodHlwZW9mIHQ9PSJvYmplY3QifHx0eXBlb2YgdD09ImZ1bmN0aW9uIikpLHRtPWooW3AoKSx6KCkuaW50KCldKSxubT1wKCk7Vyh7dHRsOnooKS5vcHRpb25hbCgpLHBvbGxJbnRlcnZhbDp6KCkub3B0aW9uYWwoKX0pO2NvbnN0IG52PWYoe3R0bDp6KCkub3B0aW9uYWwoKX0pLHJ2PWYoe3Rhc2tJZDpwKCl9KSxqYT1XKHtwcm9ncmVzc1Rva2VuOnRtLm9wdGlvbmFsKCksW3dlXTpydi5vcHRpb25hbCgpfSksY2U9Zih7X21ldGE6amEub3B0aW9uYWwoKX0pLGduPWNlLmV4dGVuZCh7dGFzazpudi5vcHRpb25hbCgpfSksaXY9dD0+Z24uc2FmZVBhcnNlKHQpLnN1Y2Nlc3MsWD1mKHttZXRob2Q6cCgpLHBhcmFtczpjZS5sb29zZSgpLm9wdGlvbmFsKCl9KSxsZT1mKHtfbWV0YTpqYS5vcHRpb25hbCgpfSksZGU9Zih7bWV0aG9kOnAoKSxwYXJhbXM6bGUubG9vc2UoKS5vcHRpb25hbCgpfSksWT1XKHtfbWV0YTpqYS5vcHRpb25hbCgpfSksdm49aihbcCgpLHooKS5pbnQoKV0pLHJtPWYoe2pzb25ycGM6bShWciksaWQ6dm4sLi4uWC5zaGFwZX0pLnN0cmljdCgpLElzPXQ9PnJtLnNhZmVQYXJzZSh0KS5zdWNjZXNzLGltPWYoe2pzb25ycGM6bShWciksLi4uZGUuc2hhcGV9KS5zdHJpY3QoKSxvdj10PT5pbS5zYWZlUGFyc2UodCkuc3VjY2VzcyxVYT1mKHtqc29ucnBjOm0oVnIpLGlkOnZuLHJlc3VsdDpZfSkuc3RyaWN0KCksem49dD0+VWEuc2FmZVBhcnNlKHQpLnN1Y2Nlc3M7dmFyIE47KGZ1bmN0aW9uKHQpe3RbdC5Db25uZWN0aW9uQ2xvc2VkPS0zMmUzXT0iQ29ubmVjdGlvbkNsb3NlZCIsdFt0LlJlcXVlc3RUaW1lb3V0PS0zMjAwMV09IlJlcXVlc3RUaW1lb3V0Iix0W3QuUGFyc2VFcnJvcj0tMzI3MDBdPSJQYXJzZUVycm9yIix0W3QuSW52YWxpZFJlcXVlc3Q9LTMyNjAwXT0iSW52YWxpZFJlcXVlc3QiLHRbdC5NZXRob2ROb3RGb3VuZD0tMzI2MDFdPSJNZXRob2ROb3RGb3VuZCIsdFt0LkludmFsaWRQYXJhbXM9LTMyNjAyXT0iSW52YWxpZFBhcmFtcyIsdFt0LkludGVybmFsRXJyb3I9LTMyNjAzXT0iSW50ZXJuYWxFcnJvciIsdFt0LlVybEVsaWNpdGF0aW9uUmVxdWlyZWQ9LTMyMDQyXT0iVXJsRWxpY2l0YXRpb25SZXF1aXJlZCJ9KShOfHwoTj17fSkpO2NvbnN0IFBhPWYoe2pzb25ycGM6bShWciksaWQ6dm4ub3B0aW9uYWwoKSxlcnJvcjpmKHtjb2RlOnooKS5pbnQoKSxtZXNzYWdlOnAoKSxkYXRhOk8oKS5vcHRpb25hbCgpfSl9KS5zdHJpY3QoKSxhdj10PT5QYS5zYWZlUGFyc2UodCkuc3VjY2Vzcyxzdj1qKFtybSxpbSxVYSxQYV0pO2ooW1VhLFBhXSk7Y29uc3QgT2E9WS5zdHJpY3QoKSxjdj1sZS5leHRlbmQoe3JlcXVlc3RJZDp2bi5vcHRpb25hbCgpLHJlYXNvbjpwKCkub3B0aW9uYWwoKX0pLERhPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvY2FuY2VsbGVkIikscGFyYW1zOmN2fSksdXY9Zih7c3JjOnAoKSxtaW1lVHlwZTpwKCkub3B0aW9uYWwoKSxzaXplczp3KHAoKSkub3B0aW9uYWwoKSx0aGVtZTpHKFsibGlnaHQiLCJkYXJrIl0pLm9wdGlvbmFsKCl9KSxobj1mKHtpY29uczp3KHV2KS5vcHRpb25hbCgpfSksR2U9Zih7bmFtZTpwKCksdGl0bGU6cCgpLm9wdGlvbmFsKCl9KSxLcj1HZS5leHRlbmQoey4uLkdlLnNoYXBlLC4uLmhuLnNoYXBlLHZlcnNpb246cCgpLHdlYnNpdGVVcmw6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCl9KSxsdj1zdChmKHthcHBseURlZmF1bHRzOkQoKS5vcHRpb25hbCgpfSksVShwKCksTygpKSksZHY9Zm4odD0+dCYmdHlwZW9mIHQ9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheSh0KSYmT2JqZWN0LmtleXModCkubGVuZ3RoPT09MD97Zm9ybTp7fX06dCxzdChmKHtmb3JtOmx2Lm9wdGlvbmFsKCksdXJsOkgub3B0aW9uYWwoKX0pLFUocCgpLE8oKSkub3B0aW9uYWwoKSkpLG12PVcoe2xpc3Q6SC5vcHRpb25hbCgpLGNhbmNlbDpILm9wdGlvbmFsKCkscmVxdWVzdHM6Vyh7c2FtcGxpbmc6Vyh7Y3JlYXRlTWVzc2FnZTpILm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLGVsaWNpdGF0aW9uOlcoe2NyZWF0ZTpILm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLHB2PVcoe2xpc3Q6SC5vcHRpb25hbCgpLGNhbmNlbDpILm9wdGlvbmFsKCkscmVxdWVzdHM6Vyh7dG9vbHM6Vyh7Y2FsbDpILm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpfSkub3B0aW9uYWwoKX0pLGZ2PWYoe2V4cGVyaW1lbnRhbDpVKHAoKSxIKS5vcHRpb25hbCgpLHNhbXBsaW5nOmYoe2NvbnRleHQ6SC5vcHRpb25hbCgpLHRvb2xzOkgub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksZWxpY2l0YXRpb246ZHYub3B0aW9uYWwoKSxyb290czpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdGFza3M6bXYub3B0aW9uYWwoKSxleHRlbnNpb25zOlUocCgpLEgpLm9wdGlvbmFsKCl9KSxndj1jZS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpwKCksY2FwYWJpbGl0aWVzOmZ2LGNsaWVudEluZm86S3J9KSx2dj1YLmV4dGVuZCh7bWV0aG9kOm0oImluaXRpYWxpemUiKSxwYXJhbXM6Z3Z9KSxodj1mKHtleHBlcmltZW50YWw6VShwKCksSCkub3B0aW9uYWwoKSxsb2dnaW5nOkgub3B0aW9uYWwoKSxjb21wbGV0aW9uczpILm9wdGlvbmFsKCkscHJvbXB0czpmKHtsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCkscmVzb3VyY2VzOmYoe3N1YnNjcmliZTpEKCkub3B0aW9uYWwoKSxsaXN0Q2hhbmdlZDpEKCkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCksdG9vbHM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCl9KS5vcHRpb25hbCgpLHRhc2tzOnB2Lm9wdGlvbmFsKCksZXh0ZW5zaW9uczpVKHAoKSxIKS5vcHRpb25hbCgpfSksJHY9WS5leHRlbmQoe3Byb3RvY29sVmVyc2lvbjpwKCksY2FwYWJpbGl0aWVzOmh2LHNlcnZlckluZm86S3IsaW5zdHJ1Y3Rpb25zOnAoKS5vcHRpb25hbCgpfSksX3Y9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSksQnI9WC5leHRlbmQoe21ldGhvZDptKCJwaW5nIikscGFyYW1zOmNlLm9wdGlvbmFsKCl9KSxidj1mKHtwcm9ncmVzczp6KCksdG90YWw6QSh6KCkpLG1lc3NhZ2U6QShwKCkpfSkseXY9Zih7Li4ubGUuc2hhcGUsLi4uYnYuc2hhcGUscHJvZ3Jlc3NUb2tlbjp0bX0pLE5hPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3MiKSxwYXJhbXM6eXZ9KSxrdj1jZS5leHRlbmQoe2N1cnNvcjpubS5vcHRpb25hbCgpfSksJG49WC5leHRlbmQoe3BhcmFtczprdi5vcHRpb25hbCgpfSksX249WS5leHRlbmQoe25leHRDdXJzb3I6bm0ub3B0aW9uYWwoKX0pLFN2PUcoWyJ3b3JraW5nIiwiaW5wdXRfcmVxdWlyZWQiLCJjb21wbGV0ZWQiLCJmYWlsZWQiLCJjYW5jZWxsZWQiXSksYm49Zih7dGFza0lkOnAoKSxzdGF0dXM6U3YsdHRsOmooW3ooKSxjbigpXSksY3JlYXRlZEF0OnAoKSxsYXN0VXBkYXRlZEF0OnAoKSxwb2xsSW50ZXJ2YWw6QSh6KCkpLHN0YXR1c01lc3NhZ2U6QShwKCkpfSksRWE9WS5leHRlbmQoe3Rhc2s6Ym59KSx3dj1sZS5tZXJnZShibiksRW49ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiKSxwYXJhbXM6d3Z9KSxaYT1YLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2dldCIpLHBhcmFtczpjZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pLFJhPVkubWVyZ2UoYm4pLENhPVguZXh0ZW5kKHttZXRob2Q6bSgidGFza3MvcmVzdWx0IikscGFyYW1zOmNlLmV4dGVuZCh7dGFza0lkOnAoKX0pfSk7WS5sb29zZSgpO2NvbnN0IEFhPSRuLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2xpc3QiKX0pLExhPV9uLmV4dGVuZCh7dGFza3M6dyhibil9KSxNYT1YLmV4dGVuZCh7bWV0aG9kOm0oInRhc2tzL2NhbmNlbCIpLHBhcmFtczpjZS5leHRlbmQoe3Rhc2tJZDpwKCl9KX0pLEl2PVkubWVyZ2UoYm4pLG9tPWYoe3VyaTpwKCksbWltZVR5cGU6QShwKCkpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLGFtPW9tLmV4dGVuZCh7dGV4dDpwKCl9KSxxYT1wKCkucmVmaW5lKHQ9Pnt0cnl7cmV0dXJuIGF0b2IodCksITB9Y2F0Y2h7cmV0dXJuITF9fSx7bWVzc2FnZToiSW52YWxpZCBCYXNlNjQgc3RyaW5nIn0pLHNtPW9tLmV4dGVuZCh7YmxvYjpxYX0pLHluPUcoWyJ1c2VyIiwiYXNzaXN0YW50Il0pLGR0PWYoe2F1ZGllbmNlOncoeW4pLm9wdGlvbmFsKCkscHJpb3JpdHk6eigpLm1pbigwKS5tYXgoMSkub3B0aW9uYWwoKSxsYXN0TW9kaWZpZWQ6c28oe29mZnNldDohMH0pLm9wdGlvbmFsKCl9KSxjbT1mKHsuLi5HZS5zaGFwZSwuLi5obi5zaGFwZSx1cmk6cCgpLGRlc2NyaXB0aW9uOkEocCgpKSxtaW1lVHlwZTpBKHAoKSksc2l6ZTpBKHooKSksYW5ub3RhdGlvbnM6ZHQub3B0aW9uYWwoKSxfbWV0YTpBKFcoe30pKX0pLHp2PWYoey4uLkdlLnNoYXBlLC4uLmhuLnNoYXBlLHVyaVRlbXBsYXRlOnAoKSxkZXNjcmlwdGlvbjpBKHAoKSksbWltZVR5cGU6QShwKCkpLGFubm90YXRpb25zOmR0Lm9wdGlvbmFsKCksX21ldGE6QShXKHt9KSl9KSx4dj0kbi5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvbGlzdCIpfSksdW09X24uZXh0ZW5kKHtyZXNvdXJjZXM6dyhjbSl9KSxUdj0kbi5leHRlbmQoe21ldGhvZDptKCJyZXNvdXJjZXMvdGVtcGxhdGVzL2xpc3QiKX0pLGp2PV9uLmV4dGVuZCh7cmVzb3VyY2VUZW1wbGF0ZXM6dyh6dil9KSxGYT1jZS5leHRlbmQoe3VyaTpwKCl9KSxVdj1GYSxQdj1YLmV4dGVuZCh7bWV0aG9kOm0oInJlc291cmNlcy9yZWFkIikscGFyYW1zOlV2fSksbG09WS5leHRlbmQoe2NvbnRlbnRzOncoaihbYW0sc21dKSl9KSxPdj1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Jlc291cmNlcy9saXN0X2NoYW5nZWQiKSxwYXJhbXM6bGUub3B0aW9uYWwoKX0pLER2PUZhLE52PVguZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3N1YnNjcmliZSIpLHBhcmFtczpEdn0pLEV2PUZhLFp2PVguZXh0ZW5kKHttZXRob2Q6bSgicmVzb3VyY2VzL3Vuc3Vic2NyaWJlIikscGFyYW1zOkV2fSksUnY9bGUuZXh0ZW5kKHt1cmk6cCgpfSksQ3Y9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9yZXNvdXJjZXMvdXBkYXRlZCIpLHBhcmFtczpSdn0pLEF2PWYoe25hbWU6cCgpLGRlc2NyaXB0aW9uOkEocCgpKSxyZXF1aXJlZDpBKEQoKSl9KSxMdj1mKHsuLi5HZS5zaGFwZSwuLi5obi5zaGFwZSxkZXNjcmlwdGlvbjpBKHAoKSksYXJndW1lbnRzOkEodyhBdikpLF9tZXRhOkEoVyh7fSkpfSksTXY9JG4uZXh0ZW5kKHttZXRob2Q6bSgicHJvbXB0cy9saXN0Iil9KSxxdj1fbi5leHRlbmQoe3Byb21wdHM6dyhMdil9KSxGdj1jZS5leHRlbmQoe25hbWU6cCgpLGFyZ3VtZW50czpVKHAoKSxwKCkpLm9wdGlvbmFsKCl9KSxKdj1YLmV4dGVuZCh7bWV0aG9kOm0oInByb21wdHMvZ2V0IikscGFyYW1zOkZ2fSksSmE9Zih7dHlwZTptKCJ0ZXh0IiksdGV4dDpwKCksYW5ub3RhdGlvbnM6ZHQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxIYT1mKHt0eXBlOm0oImltYWdlIiksZGF0YTpxYSxtaW1lVHlwZTpwKCksYW5ub3RhdGlvbnM6ZHQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxWYT1mKHt0eXBlOm0oImF1ZGlvIiksZGF0YTpxYSxtaW1lVHlwZTpwKCksYW5ub3RhdGlvbnM6ZHQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxIdj1mKHt0eXBlOm0oInRvb2xfdXNlIiksbmFtZTpwKCksaWQ6cCgpLGlucHV0OlUocCgpLE8oKSksX21ldGE6VShwKCksTygpKS5vcHRpb25hbCgpfSksZG09Zih7dHlwZTptKCJyZXNvdXJjZSIpLHJlc291cmNlOmooW2FtLHNtXSksYW5ub3RhdGlvbnM6ZHQub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxtbT1jbS5leHRlbmQoe3R5cGU6bSgicmVzb3VyY2VfbGluayIpfSksa249aihbSmEsSGEsVmEsbW0sZG1dKSxWdj1mKHtyb2xlOnluLGNvbnRlbnQ6a259KSxLdj1ZLmV4dGVuZCh7ZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWVzc2FnZXM6dyhWdil9KSxCdj1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Byb21wdHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmxlLm9wdGlvbmFsKCl9KSxXdj1mKHt0aXRsZTpwKCkub3B0aW9uYWwoKSxyZWFkT25seUhpbnQ6RCgpLm9wdGlvbmFsKCksZGVzdHJ1Y3RpdmVIaW50OkQoKS5vcHRpb25hbCgpLGlkZW1wb3RlbnRIaW50OkQoKS5vcHRpb25hbCgpLG9wZW5Xb3JsZEhpbnQ6RCgpLm9wdGlvbmFsKCl9KSxHdj1mKHt0YXNrU3VwcG9ydDpHKFsicmVxdWlyZWQiLCJvcHRpb25hbCIsImZvcmJpZGRlbiJdKS5vcHRpb25hbCgpfSksS2E9Zih7Li4uR2Uuc2hhcGUsLi4uaG4uc2hhcGUsZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksaW5wdXRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLEgpLm9wdGlvbmFsKCkscmVxdWlyZWQ6dyhwKCkpLm9wdGlvbmFsKCl9KS5jYXRjaGFsbChPKCkpLG91dHB1dFNjaGVtYTpmKHt0eXBlOm0oIm9iamVjdCIpLHByb3BlcnRpZXM6VShwKCksSCkub3B0aW9uYWwoKSxyZXF1aXJlZDp3KHAoKSkub3B0aW9uYWwoKX0pLmNhdGNoYWxsKE8oKSkub3B0aW9uYWwoKSxhbm5vdGF0aW9uczpXdi5vcHRpb25hbCgpLGV4ZWN1dGlvbjpHdi5vcHRpb25hbCgpLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLHBtPSRuLmV4dGVuZCh7bWV0aG9kOm0oInRvb2xzL2xpc3QiKX0pLFh2PV9uLmV4dGVuZCh7dG9vbHM6dyhLYSl9KSxXcj1ZLmV4dGVuZCh7Y29udGVudDp3KGtuKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpVKHAoKSxPKCkpLm9wdGlvbmFsKCksaXNFcnJvcjpEKCkub3B0aW9uYWwoKX0pO1dyLm9yKFkuZXh0ZW5kKHt0b29sUmVzdWx0Ok8oKX0pKTtjb25zdCBZdj1nbi5leHRlbmQoe25hbWU6cCgpLGFyZ3VtZW50czpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxmbT1YLmV4dGVuZCh7bWV0aG9kOm0oInRvb2xzL2NhbGwiKSxwYXJhbXM6WXZ9KSxRdj1kZS5leHRlbmQoe21ldGhvZDptKCJub3RpZmljYXRpb25zL3Rvb2xzL2xpc3RfY2hhbmdlZCIpLHBhcmFtczpsZS5vcHRpb25hbCgpfSk7Zih7YXV0b1JlZnJlc2g6RCgpLmRlZmF1bHQoITApLGRlYm91bmNlTXM6eigpLmludCgpLm5vbm5lZ2F0aXZlKCkuZGVmYXVsdCgzMDApfSk7Y29uc3QgZ209RyhbImRlYnVnIiwiaW5mbyIsIm5vdGljZSIsIndhcm5pbmciLCJlcnJvciIsImNyaXRpY2FsIiwiYWxlcnQiLCJlbWVyZ2VuY3kiXSksZWg9Y2UuZXh0ZW5kKHtsZXZlbDpnbX0pLHRoPVguZXh0ZW5kKHttZXRob2Q6bSgibG9nZ2luZy9zZXRMZXZlbCIpLHBhcmFtczplaH0pLG5oPWxlLmV4dGVuZCh7bGV2ZWw6Z20sbG9nZ2VyOnAoKS5vcHRpb25hbCgpLGRhdGE6TygpfSkscmg9ZGUuZXh0ZW5kKHttZXRob2Q6bSgibm90aWZpY2F0aW9ucy9tZXNzYWdlIikscGFyYW1zOm5ofSksaWg9Zih7bmFtZTpwKCkub3B0aW9uYWwoKX0pLG9oPWYoe2hpbnRzOncoaWgpLm9wdGlvbmFsKCksY29zdFByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCksc3BlZWRQcmlvcml0eTp6KCkubWluKDApLm1heCgxKS5vcHRpb25hbCgpLGludGVsbGlnZW5jZVByaW9yaXR5OnooKS5taW4oMCkubWF4KDEpLm9wdGlvbmFsKCl9KSxhaD1mKHttb2RlOkcoWyJhdXRvIiwicmVxdWlyZWQiLCJub25lIl0pLm9wdGlvbmFsKCl9KSxzaD1mKHt0eXBlOm0oInRvb2xfcmVzdWx0IiksdG9vbFVzZUlkOnAoKS5kZXNjcmliZSgiVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY29ycmVzcG9uZGluZyB0b29sIGNhbGwuIiksY29udGVudDp3KGtuKS5kZWZhdWx0KFtdKSxzdHJ1Y3R1cmVkQ29udGVudDpmKHt9KS5sb29zZSgpLm9wdGlvbmFsKCksaXNFcnJvcjpEKCkub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxjaD1sbigidHlwZSIsW0phLEhhLFZhXSksWm49bG4oInR5cGUiLFtKYSxIYSxWYSxIdixzaF0pLHVoPWYoe3JvbGU6eW4sY29udGVudDpqKFtabix3KFpuKV0pLF9tZXRhOlUocCgpLE8oKSkub3B0aW9uYWwoKX0pLGxoPWduLmV4dGVuZCh7bWVzc2FnZXM6dyh1aCksbW9kZWxQcmVmZXJlbmNlczpvaC5vcHRpb25hbCgpLHN5c3RlbVByb21wdDpwKCkub3B0aW9uYWwoKSxpbmNsdWRlQ29udGV4dDpHKFsibm9uZSIsInRoaXNTZXJ2ZXIiLCJhbGxTZXJ2ZXJzIl0pLm9wdGlvbmFsKCksdGVtcGVyYXR1cmU6eigpLm9wdGlvbmFsKCksbWF4VG9rZW5zOnooKS5pbnQoKSxzdG9wU2VxdWVuY2VzOncocCgpKS5vcHRpb25hbCgpLG1ldGFkYXRhOkgub3B0aW9uYWwoKSx0b29sczp3KEthKS5vcHRpb25hbCgpLHRvb2xDaG9pY2U6YWgub3B0aW9uYWwoKX0pLGRoPVguZXh0ZW5kKHttZXRob2Q6bSgic2FtcGxpbmcvY3JlYXRlTWVzc2FnZSIpLHBhcmFtczpsaH0pLHZtPVkuZXh0ZW5kKHttb2RlbDpwKCksc3RvcFJlYXNvbjpBKEcoWyJlbmRUdXJuIiwic3RvcFNlcXVlbmNlIiwibWF4VG9rZW5zIl0pLm9yKHAoKSkpLHJvbGU6eW4sY29udGVudDpjaH0pLGhtPVkuZXh0ZW5kKHttb2RlbDpwKCksc3RvcFJlYXNvbjpBKEcoWyJlbmRUdXJuIiwic3RvcFNlcXVlbmNlIiwibWF4VG9rZW5zIiwidG9vbFVzZSJdKS5vcihwKCkpKSxyb2xlOnluLGNvbnRlbnQ6aihbWm4sdyhabildKX0pLG1oPWYoe3R5cGU6bSgiYm9vbGVhbiIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGRlZmF1bHQ6RCgpLm9wdGlvbmFsKCl9KSxwaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLG1pbkxlbmd0aDp6KCkub3B0aW9uYWwoKSxtYXhMZW5ndGg6eigpLm9wdGlvbmFsKCksZm9ybWF0OkcoWyJlbWFpbCIsInVyaSIsImRhdGUiLCJkYXRlLXRpbWUiXSkub3B0aW9uYWwoKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksZmg9Zih7dHlwZTpHKFsibnVtYmVyIiwiaW50ZWdlciJdKSx0aXRsZTpwKCkub3B0aW9uYWwoKSxkZXNjcmlwdGlvbjpwKCkub3B0aW9uYWwoKSxtaW5pbXVtOnooKS5vcHRpb25hbCgpLG1heGltdW06eigpLm9wdGlvbmFsKCksZGVmYXVsdDp6KCkub3B0aW9uYWwoKX0pLGdoPWYoe3R5cGU6bSgic3RyaW5nIiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksZW51bTp3KHAoKSksZGVmYXVsdDpwKCkub3B0aW9uYWwoKX0pLHZoPWYoe3R5cGU6bSgic3RyaW5nIiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksb25lT2Y6dyhmKHtjb25zdDpwKCksdGl0bGU6cCgpfSkpLGRlZmF1bHQ6cCgpLm9wdGlvbmFsKCl9KSxoaD1mKHt0eXBlOm0oInN0cmluZyIpLHRpdGxlOnAoKS5vcHRpb25hbCgpLGRlc2NyaXB0aW9uOnAoKS5vcHRpb25hbCgpLGVudW06dyhwKCkpLGVudW1OYW1lczp3KHAoKSkub3B0aW9uYWwoKSxkZWZhdWx0OnAoKS5vcHRpb25hbCgpfSksJGg9aihbZ2gsdmhdKSxfaD1mKHt0eXBlOm0oImFycmF5IiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eigpLm9wdGlvbmFsKCksbWF4SXRlbXM6eigpLm9wdGlvbmFsKCksaXRlbXM6Zih7dHlwZTptKCJzdHJpbmciKSxlbnVtOncocCgpKX0pLGRlZmF1bHQ6dyhwKCkpLm9wdGlvbmFsKCl9KSxiaD1mKHt0eXBlOm0oImFycmF5IiksdGl0bGU6cCgpLm9wdGlvbmFsKCksZGVzY3JpcHRpb246cCgpLm9wdGlvbmFsKCksbWluSXRlbXM6eigpLm9wdGlvbmFsKCksbWF4SXRlbXM6eigpLm9wdGlvbmFsKCksaXRlbXM6Zih7YW55T2Y6dyhmKHtjb25zdDpwKCksdGl0bGU6cCgpfSkpfSksZGVmYXVsdDp3KHAoKSkub3B0aW9uYWwoKX0pLHloPWooW19oLGJoXSksa2g9aihbaGgsJGgseWhdKSxTaD1qKFtraCxtaCxwaCxmaF0pLHdoPWduLmV4dGVuZCh7bW9kZTptKCJmb3JtIikub3B0aW9uYWwoKSxtZXNzYWdlOnAoKSxyZXF1ZXN0ZWRTY2hlbWE6Zih7dHlwZTptKCJvYmplY3QiKSxwcm9wZXJ0aWVzOlUocCgpLFNoKSxyZXF1aXJlZDp3KHAoKSkub3B0aW9uYWwoKX0pfSksSWg9Z24uZXh0ZW5kKHttb2RlOm0oInVybCIpLG1lc3NhZ2U6cCgpLGVsaWNpdGF0aW9uSWQ6cCgpLHVybDpwKCkudXJsKCl9KSx6aD1qKFt3aCxJaF0pLHhoPVguZXh0ZW5kKHttZXRob2Q6bSgiZWxpY2l0YXRpb24vY3JlYXRlIikscGFyYW1zOnpofSksVGg9bGUuZXh0ZW5kKHtlbGljaXRhdGlvbklkOnAoKX0pLGpoPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvZWxpY2l0YXRpb24vY29tcGxldGUiKSxwYXJhbXM6VGh9KSxVaD1ZLmV4dGVuZCh7YWN0aW9uOkcoWyJhY2NlcHQiLCJkZWNsaW5lIiwiY2FuY2VsIl0pLGNvbnRlbnQ6Zm4odD0+dD09PW51bGw/dm9pZCAwOnQsVShwKCksaihbcCgpLHooKSxEKCksdyhwKCkpXSkpLm9wdGlvbmFsKCkpfSksUGg9Zih7dHlwZTptKCJyZWYvcmVzb3VyY2UiKSx1cmk6cCgpfSksT2g9Zih7dHlwZTptKCJyZWYvcHJvbXB0IiksbmFtZTpwKCl9KSxEaD1jZS5leHRlbmQoe3JlZjpqKFtPaCxQaF0pLGFyZ3VtZW50OmYoe25hbWU6cCgpLHZhbHVlOnAoKX0pLGNvbnRleHQ6Zih7YXJndW1lbnRzOlUocCgpLHAoKSkub3B0aW9uYWwoKX0pLm9wdGlvbmFsKCl9KSxOaD1YLmV4dGVuZCh7bWV0aG9kOm0oImNvbXBsZXRpb24vY29tcGxldGUiKSxwYXJhbXM6RGh9KSxFaD1ZLmV4dGVuZCh7Y29tcGxldGlvbjpXKHt2YWx1ZXM6dyhwKCkpLm1heCgxMDApLHRvdGFsOkEoeigpLmludCgpKSxoYXNNb3JlOkEoRCgpKX0pfSksWmg9Zih7dXJpOnAoKS5zdGFydHNXaXRoKCJmaWxlOi8vIiksbmFtZTpwKCkub3B0aW9uYWwoKSxfbWV0YTpVKHAoKSxPKCkpLm9wdGlvbmFsKCl9KSxSaD1YLmV4dGVuZCh7bWV0aG9kOm0oInJvb3RzL2xpc3QiKSxwYXJhbXM6Y2Uub3B0aW9uYWwoKX0pLENoPVkuZXh0ZW5kKHtyb290czp3KFpoKX0pLEFoPWRlLmV4dGVuZCh7bWV0aG9kOm0oIm5vdGlmaWNhdGlvbnMvcm9vdHMvbGlzdF9jaGFuZ2VkIikscGFyYW1zOmxlLm9wdGlvbmFsKCl9KTtqKFtCcix2dixOaCx0aCxKdixNdix4dixUdixQdixOdixadixmbSxwbSxaYSxDYSxBYSxNYV0pO2ooW0RhLE5hLF92LEFoLEVuXSk7aihbT2Esdm0saG0sVWgsQ2gsUmEsTGEsRWFdKTtqKFtCcixkaCx4aCxSaCxaYSxDYSxBYSxNYV0pO2ooW0RhLE5hLHJoLEN2LE92LFF2LEJ2LEVuLGpoXSk7aihbT2EsJHYsRWgsS3YscXYsdW0sanYsbG0sV3IsWHYsUmEsTGEsRWFdKTtjbGFzcyBQIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IobixyLG8pe3N1cGVyKGBNQ1AgZXJyb3IgJHtufTogJHtyfWApLHRoaXMuY29kZT1uLHRoaXMuZGF0YT1vLHRoaXMubmFtZT0iTWNwRXJyb3IifXN0YXRpYyBmcm9tRXJyb3IobixyLG8pe2lmKG49PT1OLlVybEVsaWNpdGF0aW9uUmVxdWlyZWQmJm8pe2NvbnN0IGU9bztpZihlLmVsaWNpdGF0aW9ucylyZXR1cm4gbmV3IExoKGUuZWxpY2l0YXRpb25zLHIpfXJldHVybiBuZXcgUChuLHIsbyl9fWNsYXNzIExoIGV4dGVuZHMgUHtjb25zdHJ1Y3RvcihuLHI9YFVSTCBlbGljaXRhdGlvbiR7bi5sZW5ndGg+MT8icyI6IiJ9IHJlcXVpcmVkYCl7c3VwZXIoTi5VcmxFbGljaXRhdGlvblJlcXVpcmVkLHIse2VsaWNpdGF0aW9uczpufSl9Z2V0IGVsaWNpdGF0aW9ucygpe3JldHVybiB0aGlzLmRhdGE/LmVsaWNpdGF0aW9ucz8/W119fWZ1bmN0aW9uIFNlKHQpe3JldHVybiB0PT09ImNvbXBsZXRlZCJ8fHQ9PT0iZmFpbGVkInx8dD09PSJjYW5jZWxsZWQifW5ldyBTZXQoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2eHl6MDEyMzQ1Njc4OSIpO2Z1bmN0aW9uIHpzKHQpe2NvbnN0IHI9RmcodCk/Lm1ldGhvZDtpZighcil0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBpcyBtaXNzaW5nIGEgbWV0aG9kIGxpdGVyYWwiKTtjb25zdCBvPUpnKHIpO2lmKHR5cGVvZiBvIT0ic3RyaW5nIil0aHJvdyBuZXcgRXJyb3IoIlNjaGVtYSBtZXRob2QgbGl0ZXJhbCBtdXN0IGJlIGEgc3RyaW5nIik7cmV0dXJuIG99ZnVuY3Rpb24geHModCxuKXtjb25zdCByPUZkKHQsbik7aWYoIXIuc3VjY2Vzcyl0aHJvdyByLmVycm9yO3JldHVybiByLmRhdGF9Y29uc3QgTWg9NmU0O2NsYXNzIHFoe2NvbnN0cnVjdG9yKG4pe3RoaXMuX29wdGlvbnM9bix0aGlzLl9yZXF1ZXN0TWVzc2FnZUlkPTAsdGhpcy5fcmVxdWVzdEhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzPW5ldyBNYXAsdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9yZXNwb25zZUhhbmRsZXJzPW5ldyBNYXAsdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycz1uZXcgTWFwLHRoaXMuX3RpbWVvdXRJbmZvPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnM9bmV3IFNldCx0aGlzLl90YXNrUHJvZ3Jlc3NUb2tlbnM9bmV3IE1hcCx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzPW5ldyBNYXAsdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKERhLHI9Pnt0aGlzLl9vbmNhbmNlbChyKX0pLHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihOYSxyPT57dGhpcy5fb25wcm9ncmVzcyhyKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQnIscj0+KHt9KSksdGhpcy5fdGFza1N0b3JlPW4/LnRhc2tTdG9yZSx0aGlzLl90YXNrTWVzc2FnZVF1ZXVlPW4/LnRhc2tNZXNzYWdlUXVldWUsdGhpcy5fdGFza1N0b3JlJiYodGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihaYSxhc3luYyhyLG8pPT57Y29uc3QgZT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhyLnBhcmFtcy50YXNrSWQsby5zZXNzaW9uSWQpO2lmKCFlKXRocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcywiRmFpbGVkIHRvIHJldHJpZXZlIHRhc2s6IFRhc2sgbm90IGZvdW5kIik7cmV0dXJuey4uLmV9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihDYSxhc3luYyhyLG8pPT57Y29uc3QgZT1hc3luYygpPT57Y29uc3QgaT1yLnBhcmFtcy50YXNrSWQ7aWYodGhpcy5fdGFza01lc3NhZ2VRdWV1ZSl7bGV0IHM7Zm9yKDtzPWF3YWl0IHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUuZGVxdWV1ZShpLG8uc2Vzc2lvbklkKTspe2lmKHMudHlwZT09PSJyZXNwb25zZSJ8fHMudHlwZT09PSJlcnJvciIpe2NvbnN0IGM9cy5tZXNzYWdlLHU9Yy5pZCxsPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHUpO2lmKGwpaWYodGhpcy5fcmVxdWVzdFJlc29sdmVycy5kZWxldGUodSkscy50eXBlPT09InJlc3BvbnNlIilsKGMpO2Vsc2V7Y29uc3QgZz1jLHY9bmV3IFAoZy5lcnJvci5jb2RlLGcuZXJyb3IubWVzc2FnZSxnLmVycm9yLmRhdGEpO2wodil9ZWxzZXtjb25zdCBnPXMudHlwZT09PSJyZXNwb25zZSI/IlJlc3BvbnNlIjoiRXJyb3IiO3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGAke2d9IGhhbmRsZXIgbWlzc2luZyBmb3IgcmVxdWVzdCAke3V9YCkpfWNvbnRpbnVlfWF3YWl0IHRoaXMuX3RyYW5zcG9ydD8uc2VuZChzLm1lc3NhZ2Use3JlbGF0ZWRSZXF1ZXN0SWQ6by5yZXF1ZXN0SWR9KX19Y29uc3QgYT1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFzayhpLG8uc2Vzc2lvbklkKTtpZighYSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke2l9YCk7aWYoIVNlKGEuc3RhdHVzKSlyZXR1cm4gYXdhaXQgdGhpcy5fd2FpdEZvclRhc2tVcGRhdGUoaSxvLnNpZ25hbCksYXdhaXQgZSgpO2lmKFNlKGEuc3RhdHVzKSl7Y29uc3Qgcz1hd2FpdCB0aGlzLl90YXNrU3RvcmUuZ2V0VGFza1Jlc3VsdChpLG8uc2Vzc2lvbklkKTtyZXR1cm4gdGhpcy5fY2xlYXJUYXNrUXVldWUoaSksey4uLnMsX21ldGE6ey4uLnMuX21ldGEsW3dlXTp7dGFza0lkOml9fX19cmV0dXJuIGF3YWl0IGUoKX07cmV0dXJuIGF3YWl0IGUoKX0pLHRoaXMuc2V0UmVxdWVzdEhhbmRsZXIoQWEsYXN5bmMocixvKT0+e3RyeXtjb25zdHt0YXNrczplLG5leHRDdXJzb3I6aX09YXdhaXQgdGhpcy5fdGFza1N0b3JlLmxpc3RUYXNrcyhyLnBhcmFtcz8uY3Vyc29yLG8uc2Vzc2lvbklkKTtyZXR1cm57dGFza3M6ZSxuZXh0Q3Vyc29yOmksX21ldGE6e319fWNhdGNoKGUpe3Rocm93IG5ldyBQKE4uSW52YWxpZFBhcmFtcyxgRmFpbGVkIHRvIGxpc3QgdGFza3M6ICR7ZSBpbnN0YW5jZW9mIEVycm9yP2UubWVzc2FnZTpTdHJpbmcoZSl9YCl9fSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihNYSxhc3luYyhyLG8pPT57dHJ5e2NvbnN0IGU9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighZSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kOiAke3IucGFyYW1zLnRhc2tJZH1gKTtpZihTZShlLnN0YXR1cykpdGhyb3cgbmV3IFAoTi5JbnZhbGlkUGFyYW1zLGBDYW5ub3QgY2FuY2VsIHRhc2sgaW4gdGVybWluYWwgc3RhdHVzOiAke2Uuc3RhdHVzfWApO2F3YWl0IHRoaXMuX3Rhc2tTdG9yZS51cGRhdGVUYXNrU3RhdHVzKHIucGFyYW1zLnRhc2tJZCwiY2FuY2VsbGVkIiwiQ2xpZW50IGNhbmNlbGxlZCB0YXNrIGV4ZWN1dGlvbi4iLG8uc2Vzc2lvbklkKSx0aGlzLl9jbGVhclRhc2tRdWV1ZShyLnBhcmFtcy50YXNrSWQpO2NvbnN0IGk9YXdhaXQgdGhpcy5fdGFza1N0b3JlLmdldFRhc2soci5wYXJhbXMudGFza0lkLG8uc2Vzc2lvbklkKTtpZighaSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgbm90IGZvdW5kIGFmdGVyIGNhbmNlbGxhdGlvbjogJHtyLnBhcmFtcy50YXNrSWR9YCk7cmV0dXJue19tZXRhOnt9LC4uLml9fWNhdGNoKGUpe3Rocm93IGUgaW5zdGFuY2VvZiBQP2U6bmV3IFAoTi5JbnZhbGlkUmVxdWVzdCxgRmFpbGVkIHRvIGNhbmNlbCB0YXNrOiAke2UgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpfWApfX0pKX1hc3luYyBfb25jYW5jZWwobil7aWYoIW4ucGFyYW1zLnJlcXVlc3RJZClyZXR1cm47dGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLmdldChuLnBhcmFtcy5yZXF1ZXN0SWQpPy5hYm9ydChuLnBhcmFtcy5yZWFzb24pfV9zZXR1cFRpbWVvdXQobixyLG8sZSxpPSExKXt0aGlzLl90aW1lb3V0SW5mby5zZXQobix7dGltZW91dElkOnNldFRpbWVvdXQoZSxyKSxzdGFydFRpbWU6RGF0ZS5ub3coKSx0aW1lb3V0OnIsbWF4VG90YWxUaW1lb3V0Om8scmVzZXRUaW1lb3V0T25Qcm9ncmVzczppLG9uVGltZW91dDplfSl9X3Jlc2V0VGltZW91dChuKXtjb25zdCByPXRoaXMuX3RpbWVvdXRJbmZvLmdldChuKTtpZighcilyZXR1cm4hMTtjb25zdCBvPURhdGUubm93KCktci5zdGFydFRpbWU7aWYoci5tYXhUb3RhbFRpbWVvdXQmJm8+PXIubWF4VG90YWxUaW1lb3V0KXRocm93IHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZShuKSxQLmZyb21FcnJvcihOLlJlcXVlc3RUaW1lb3V0LCJNYXhpbXVtIHRvdGFsIHRpbWVvdXQgZXhjZWVkZWQiLHttYXhUb3RhbFRpbWVvdXQ6ci5tYXhUb3RhbFRpbWVvdXQsdG90YWxFbGFwc2VkOm99KTtyZXR1cm4gY2xlYXJUaW1lb3V0KHIudGltZW91dElkKSxyLnRpbWVvdXRJZD1zZXRUaW1lb3V0KHIub25UaW1lb3V0LHIudGltZW91dCksITB9X2NsZWFudXBUaW1lb3V0KG4pe2NvbnN0IHI9dGhpcy5fdGltZW91dEluZm8uZ2V0KG4pO3ImJihjbGVhclRpbWVvdXQoci50aW1lb3V0SWQpLHRoaXMuX3RpbWVvdXRJbmZvLmRlbGV0ZShuKSl9YXN5bmMgY29ubmVjdChuKXtpZih0aGlzLl90cmFuc3BvcnQpdGhyb3cgbmV3IEVycm9yKCJBbHJlYWR5IGNvbm5lY3RlZCB0byBhIHRyYW5zcG9ydC4gQ2FsbCBjbG9zZSgpIGJlZm9yZSBjb25uZWN0aW5nIHRvIGEgbmV3IHRyYW5zcG9ydCwgb3IgdXNlIGEgc2VwYXJhdGUgUHJvdG9jb2wgaW5zdGFuY2UgcGVyIGNvbm5lY3Rpb24uIik7dGhpcy5fdHJhbnNwb3J0PW47Y29uc3Qgcj10aGlzLnRyYW5zcG9ydD8ub25jbG9zZTt0aGlzLl90cmFuc3BvcnQub25jbG9zZT0oKT0+e3I/LigpLHRoaXMuX29uY2xvc2UoKX07Y29uc3Qgbz10aGlzLnRyYW5zcG9ydD8ub25lcnJvcjt0aGlzLl90cmFuc3BvcnQub25lcnJvcj1pPT57bz8uKGkpLHRoaXMuX29uZXJyb3IoaSl9O2NvbnN0IGU9dGhpcy5fdHJhbnNwb3J0Py5vbm1lc3NhZ2U7dGhpcy5fdHJhbnNwb3J0Lm9ubWVzc2FnZT0oaSxhKT0+e2U/LihpLGEpLHpuKGkpfHxhdihpKT90aGlzLl9vbnJlc3BvbnNlKGkpOklzKGkpP3RoaXMuX29ucmVxdWVzdChpLGEpOm92KGkpP3RoaXMuX29ubm90aWZpY2F0aW9uKGkpOnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmtub3duIG1lc3NhZ2UgdHlwZTogJHtKU09OLnN0cmluZ2lmeShpKX1gKSl9LGF3YWl0IHRoaXMuX3RyYW5zcG9ydC5zdGFydCgpfV9vbmNsb3NlKCl7Y29uc3Qgbj10aGlzLl9yZXNwb25zZUhhbmRsZXJzO3RoaXMuX3Jlc3BvbnNlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmNsZWFyKCksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmNsZWFyKCksdGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuY2xlYXIoKTtmb3IoY29uc3QgbyBvZiB0aGlzLl90aW1lb3V0SW5mby52YWx1ZXMoKSljbGVhclRpbWVvdXQoby50aW1lb3V0SWQpO3RoaXMuX3RpbWVvdXRJbmZvLmNsZWFyKCk7Zm9yKGNvbnN0IG8gb2YgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnZhbHVlcygpKW8uYWJvcnQoKTt0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuY2xlYXIoKTtjb25zdCByPVAuZnJvbUVycm9yKE4uQ29ubmVjdGlvbkNsb3NlZCwiQ29ubmVjdGlvbiBjbG9zZWQiKTt0aGlzLl90cmFuc3BvcnQ9dm9pZCAwLHRoaXMub25jbG9zZT8uKCk7Zm9yKGNvbnN0IG8gb2Ygbi52YWx1ZXMoKSlvKHIpfV9vbmVycm9yKG4pe3RoaXMub25lcnJvcj8uKG4pfV9vbm5vdGlmaWNhdGlvbihuKXtjb25zdCByPXRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmdldChuLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tOb3RpZmljYXRpb25IYW5kbGVyO3IhPT12b2lkIDAmJlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnIobikpLmNhdGNoKG89PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBVbmNhdWdodCBlcnJvciBpbiBub3RpZmljYXRpb24gaGFuZGxlcjogJHtvfWApKSl9X29ucmVxdWVzdChuLHIpe2NvbnN0IG89dGhpcy5fcmVxdWVzdEhhbmRsZXJzLmdldChuLm1ldGhvZCk/P3RoaXMuZmFsbGJhY2tSZXF1ZXN0SGFuZGxlcixlPXRoaXMuX3RyYW5zcG9ydCxpPW4ucGFyYW1zPy5fbWV0YT8uW3dlXT8udGFza0lkO2lmKG89PT12b2lkIDApe2NvbnN0IGw9e2pzb25ycGM6IjIuMCIsaWQ6bi5pZCxlcnJvcjp7Y29kZTpOLk1ldGhvZE5vdEZvdW5kLG1lc3NhZ2U6Ik1ldGhvZCBub3QgZm91bmQifX07aSYmdGhpcy5fdGFza01lc3NhZ2VRdWV1ZT90aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2UoaSx7dHlwZToiZXJyb3IiLG1lc3NhZ2U6bCx0aW1lc3RhbXA6RGF0ZS5ub3coKX0sZT8uc2Vzc2lvbklkKS5jYXRjaChnPT50aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIGVucXVldWUgZXJyb3IgcmVzcG9uc2U6ICR7Z31gKSkpOmU/LnNlbmQobCkuY2F0Y2goZz0+dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIGFuIGVycm9yIHJlc3BvbnNlOiAke2d9YCkpKTtyZXR1cm59Y29uc3QgYT1uZXcgQWJvcnRDb250cm9sbGVyO3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5zZXQobi5pZCxhKTtjb25zdCBzPWl2KG4ucGFyYW1zKT9uLnBhcmFtcy50YXNrOnZvaWQgMCxjPXRoaXMuX3Rhc2tTdG9yZT90aGlzLnJlcXVlc3RUYXNrU3RvcmUobixlPy5zZXNzaW9uSWQpOnZvaWQgMCx1PXtzaWduYWw6YS5zaWduYWwsc2Vzc2lvbklkOmU/LnNlc3Npb25JZCxfbWV0YTpuLnBhcmFtcz8uX21ldGEsc2VuZE5vdGlmaWNhdGlvbjphc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17cmVsYXRlZFJlcXVlc3RJZDpuLmlkfTtpJiYoZy5yZWxhdGVkVGFzaz17dGFza0lkOml9KSxhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbihsLGcpfSxzZW5kUmVxdWVzdDphc3luYyhsLGcsdik9PntpZihhLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBQKE4uQ29ubmVjdGlvbkNsb3NlZCwiUmVxdWVzdCB3YXMgY2FuY2VsbGVkIik7Y29uc3QgJD17Li4udixyZWxhdGVkUmVxdWVzdElkOm4uaWR9O2kmJiEkLnJlbGF0ZWRUYXNrJiYoJC5yZWxhdGVkVGFzaz17dGFza0lkOml9KTtjb25zdCB5PSQucmVsYXRlZFRhc2s/LnRhc2tJZD8/aTtyZXR1cm4geSYmYyYmYXdhaXQgYy51cGRhdGVUYXNrU3RhdHVzKHksImlucHV0X3JlcXVpcmVkIiksYXdhaXQgdGhpcy5yZXF1ZXN0KGwsZywkKX0sYXV0aEluZm86cj8uYXV0aEluZm8scmVxdWVzdElkOm4uaWQscmVxdWVzdEluZm86cj8ucmVxdWVzdEluZm8sdGFza0lkOmksdGFza1N0b3JlOmMsdGFza1JlcXVlc3RlZFR0bDpzPy50dGwsY2xvc2VTU0VTdHJlYW06cj8uY2xvc2VTU0VTdHJlYW0sY2xvc2VTdGFuZGFsb25lU1NFU3RyZWFtOnI/LmNsb3NlU3RhbmRhbG9uZVNTRVN0cmVhbX07UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+e3MmJnRoaXMuYXNzZXJ0VGFza0hhbmRsZXJDYXBhYmlsaXR5KG4ubWV0aG9kKX0pLnRoZW4oKCk9Pm8obix1KSkudGhlbihhc3luYyBsPT57aWYoYS5zaWduYWwuYWJvcnRlZClyZXR1cm47Y29uc3QgZz17cmVzdWx0OmwsanNvbnJwYzoiMi4wIixpZDpuLmlkfTtpJiZ0aGlzLl90YXNrTWVzc2FnZVF1ZXVlP2F3YWl0IHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShpLHt0eXBlOiJyZXNwb25zZSIsbWVzc2FnZTpnLHRpbWVzdGFtcDpEYXRlLm5vdygpfSxlPy5zZXNzaW9uSWQpOmF3YWl0IGU/LnNlbmQoZyl9LGFzeW5jIGw9PntpZihhLnNpZ25hbC5hYm9ydGVkKXJldHVybjtjb25zdCBnPXtqc29ucnBjOiIyLjAiLGlkOm4uaWQsZXJyb3I6e2NvZGU6TnVtYmVyLmlzU2FmZUludGVnZXIobC5jb2RlKT9sLmNvZGU6Ti5JbnRlcm5hbEVycm9yLG1lc3NhZ2U6bC5tZXNzYWdlPz8iSW50ZXJuYWwgZXJyb3IiLC4uLmwuZGF0YSE9PXZvaWQgMCYme2RhdGE6bC5kYXRhfX19O2kmJnRoaXMuX3Rhc2tNZXNzYWdlUXVldWU/YXdhaXQgdGhpcy5fZW5xdWV1ZVRhc2tNZXNzYWdlKGkse3R5cGU6ImVycm9yIixtZXNzYWdlOmcsdGltZXN0YW1wOkRhdGUubm93KCl9LGU/LnNlc3Npb25JZCk6YXdhaXQgZT8uc2VuZChnKX0pLmNhdGNoKGw9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCByZXNwb25zZTogJHtsfWApKSkuZmluYWxseSgoKT0+e3RoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobi5pZCk9PT1hJiZ0aGlzLl9yZXF1ZXN0SGFuZGxlckFib3J0Q29udHJvbGxlcnMuZGVsZXRlKG4uaWQpfSl9X29ucHJvZ3Jlc3Mobil7Y29uc3R7cHJvZ3Jlc3NUb2tlbjpyLC4uLm99PW4ucGFyYW1zLGU9TnVtYmVyKHIpLGk9dGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5nZXQoZSk7aWYoIWkpe3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZWNlaXZlZCBhIHByb2dyZXNzIG5vdGlmaWNhdGlvbiBmb3IgYW4gdW5rbm93biB0b2tlbjogJHtKU09OLnN0cmluZ2lmeShuKX1gKSk7cmV0dXJufWNvbnN0IGE9dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5nZXQoZSkscz10aGlzLl90aW1lb3V0SW5mby5nZXQoZSk7aWYocyYmYSYmcy5yZXNldFRpbWVvdXRPblByb2dyZXNzKXRyeXt0aGlzLl9yZXNldFRpbWVvdXQoZSl9Y2F0Y2goYyl7dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUoZSksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoZSksdGhpcy5fY2xlYW51cFRpbWVvdXQoZSksYShjKTtyZXR1cm59aShvKX1fb25yZXNwb25zZShuKXtjb25zdCByPU51bWJlcihuLmlkKSxvPXRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZ2V0KHIpO2lmKG8pe2lmKHRoaXMuX3JlcXVlc3RSZXNvbHZlcnMuZGVsZXRlKHIpLHpuKG4pKW8obik7ZWxzZXtjb25zdCBhPW5ldyBQKG4uZXJyb3IuY29kZSxuLmVycm9yLm1lc3NhZ2Usbi5lcnJvci5kYXRhKTtvKGEpfXJldHVybn1jb25zdCBlPXRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KHIpO2lmKGU9PT12b2lkIDApe3RoaXMuX29uZXJyb3IobmV3IEVycm9yKGBSZWNlaXZlZCBhIHJlc3BvbnNlIGZvciBhbiB1bmtub3duIG1lc3NhZ2UgSUQ6ICR7SlNPTi5zdHJpbmdpZnkobil9YCkpO3JldHVybn10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmRlbGV0ZShyKSx0aGlzLl9jbGVhbnVwVGltZW91dChyKTtsZXQgaT0hMTtpZih6bihuKSYmbi5yZXN1bHQmJnR5cGVvZiBuLnJlc3VsdD09Im9iamVjdCIpe2NvbnN0IGE9bi5yZXN1bHQ7aWYoYS50YXNrJiZ0eXBlb2YgYS50YXNrPT0ib2JqZWN0Iil7Y29uc3Qgcz1hLnRhc2s7dHlwZW9mIHMudGFza0lkPT0ic3RyaW5nIiYmKGk9ITAsdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLnNldChzLnRhc2tJZCxyKSl9fWlmKGl8fHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuZGVsZXRlKHIpLHpuKG4pKWUobik7ZWxzZXtjb25zdCBhPVAuZnJvbUVycm9yKG4uZXJyb3IuY29kZSxuLmVycm9yLm1lc3NhZ2Usbi5lcnJvci5kYXRhKTtlKGEpfX1nZXQgdHJhbnNwb3J0KCl7cmV0dXJuIHRoaXMuX3RyYW5zcG9ydH1hc3luYyBjbG9zZSgpe2F3YWl0IHRoaXMuX3RyYW5zcG9ydD8uY2xvc2UoKX1hc3luYypyZXF1ZXN0U3RyZWFtKG4scixvKXtjb25zdHt0YXNrOmV9PW8/P3t9O2lmKCFlKXt0cnl7eWllbGR7dHlwZToicmVzdWx0IixyZXN1bHQ6YXdhaXQgdGhpcy5yZXF1ZXN0KG4scixvKX19Y2F0Y2goYSl7eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOmEgaW5zdGFuY2VvZiBQP2E6bmV3IFAoTi5JbnRlcm5hbEVycm9yLFN0cmluZyhhKSl9fXJldHVybn1sZXQgaTt0cnl7Y29uc3QgYT1hd2FpdCB0aGlzLnJlcXVlc3QobixFYSxvKTtpZihhLnRhc2spaT1hLnRhc2sudGFza0lkLHlpZWxke3R5cGU6InRhc2tDcmVhdGVkIix0YXNrOmEudGFza307ZWxzZSB0aHJvdyBuZXcgUChOLkludGVybmFsRXJyb3IsIlRhc2sgY3JlYXRpb24gZGlkIG5vdCByZXR1cm4gYSB0YXNrIik7Zm9yKDs7KXtjb25zdCBzPWF3YWl0IHRoaXMuZ2V0VGFzayh7dGFza0lkOml9LG8pO2lmKHlpZWxke3R5cGU6InRhc2tTdGF0dXMiLHRhc2s6c30sU2Uocy5zdGF0dXMpKXtzLnN0YXR1cz09PSJjb21wbGV0ZWQiP3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOml9LHIsbyl9OnMuc3RhdHVzPT09ImZhaWxlZCI/eWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixgVGFzayAke2l9IGZhaWxlZGApfTpzLnN0YXR1cz09PSJjYW5jZWxsZWQiJiYoeWllbGR7dHlwZToiZXJyb3IiLGVycm9yOm5ldyBQKE4uSW50ZXJuYWxFcnJvcixgVGFzayAke2l9IHdhcyBjYW5jZWxsZWRgKX0pO3JldHVybn1pZihzLnN0YXR1cz09PSJpbnB1dF9yZXF1aXJlZCIpe3lpZWxke3R5cGU6InJlc3VsdCIscmVzdWx0OmF3YWl0IHRoaXMuZ2V0VGFza1Jlc3VsdCh7dGFza0lkOml9LHIsbyl9O3JldHVybn1jb25zdCBjPXMucG9sbEludGVydmFsPz90aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO2F3YWl0IG5ldyBQcm9taXNlKHU9PnNldFRpbWVvdXQodSxjKSksbz8uc2lnbmFsPy50aHJvd0lmQWJvcnRlZCgpfX1jYXRjaChhKXt5aWVsZHt0eXBlOiJlcnJvciIsZXJyb3I6YSBpbnN0YW5jZW9mIFA/YTpuZXcgUChOLkludGVybmFsRXJyb3IsU3RyaW5nKGEpKX19fXJlcXVlc3QobixyLG8pe2NvbnN0e3JlbGF0ZWRSZXF1ZXN0SWQ6ZSxyZXN1bXB0aW9uVG9rZW46aSxvbnJlc3VtcHRpb250b2tlbjphLHRhc2s6cyxyZWxhdGVkVGFzazpjfT1vPz97fTtyZXR1cm4gbmV3IFByb21pc2UoKHUsbCk9Pntjb25zdCBnPUs9PntsKEspfTtpZighdGhpcy5fdHJhbnNwb3J0KXtnKG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpKTtyZXR1cm59aWYodGhpcy5fb3B0aW9ucz8uZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcz09PSEwKXRyeXt0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2Qobi5tZXRob2QpLHMmJnRoaXMuYXNzZXJ0VGFza0NhcGFiaWxpdHkobi5tZXRob2QpfWNhdGNoKEspe2coSyk7cmV0dXJufW8/LnNpZ25hbD8udGhyb3dJZkFib3J0ZWQoKTtjb25zdCB2PXRoaXMuX3JlcXVlc3RNZXNzYWdlSWQrKywkPXsuLi5uLGpzb25ycGM6IjIuMCIsaWQ6dn07bz8ub25wcm9ncmVzcyYmKHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuc2V0KHYsby5vbnByb2dyZXNzKSwkLnBhcmFtcz17Li4ubi5wYXJhbXMsX21ldGE6ey4uLm4ucGFyYW1zPy5fbWV0YXx8e30scHJvZ3Jlc3NUb2tlbjp2fX0pLHMmJigkLnBhcmFtcz17Li4uJC5wYXJhbXMsdGFzazpzfSksYyYmKCQucGFyYW1zPXsuLi4kLnBhcmFtcyxfbWV0YTp7Li4uJC5wYXJhbXM/Ll9tZXRhfHx7fSxbd2VdOmN9fSk7Y29uc3QgeT1LPT57dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUodiksdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUodiksdGhpcy5fY2xlYW51cFRpbWVvdXQodiksdGhpcy5fdHJhbnNwb3J0Py5zZW5kKHtqc29ucnBjOiIyLjAiLG1ldGhvZDoibm90aWZpY2F0aW9ucy9jYW5jZWxsZWQiLHBhcmFtczp7cmVxdWVzdElkOnYscmVhc29uOlN0cmluZyhLKX19LHtyZWxhdGVkUmVxdWVzdElkOmUscmVzdW1wdGlvblRva2VuOmksb25yZXN1bXB0aW9udG9rZW46YX0pLmNhdGNoKEM9PnRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBjYW5jZWxsYXRpb246ICR7Q31gKSkpO2NvbnN0IEo9SyBpbnN0YW5jZW9mIFA/SzpuZXcgUChOLlJlcXVlc3RUaW1lb3V0LFN0cmluZyhLKSk7bChKKX07dGhpcy5fcmVzcG9uc2VIYW5kbGVycy5zZXQodixLPT57aWYoIW8/LnNpZ25hbD8uYWJvcnRlZCl7aWYoSyBpbnN0YW5jZW9mIEVycm9yKXJldHVybiBsKEspO3RyeXtjb25zdCBKPUZkKHIsSy5yZXN1bHQpO0ouc3VjY2Vzcz91KEouZGF0YSk6bChKLmVycm9yKX1jYXRjaChKKXtsKEopfX19KSxvPy5zaWduYWw/LmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e3kobz8uc2lnbmFsPy5yZWFzb24pfSk7Y29uc3QgRj1vPy50aW1lb3V0Pz9NaCxSPSgpPT55KFAuZnJvbUVycm9yKE4uUmVxdWVzdFRpbWVvdXQsIlJlcXVlc3QgdGltZWQgb3V0Iix7dGltZW91dDpGfSkpO3RoaXMuX3NldHVwVGltZW91dCh2LEYsbz8ubWF4VG90YWxUaW1lb3V0LFIsbz8ucmVzZXRUaW1lb3V0T25Qcm9ncmVzcz8/ITEpO2NvbnN0IFJlPWM/LnRhc2tJZDtpZihSZSl7Y29uc3QgSz1KPT57Y29uc3QgQz10aGlzLl9yZXNwb25zZUhhbmRsZXJzLmdldCh2KTtDP0MoSik6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc3BvbnNlIGhhbmRsZXIgbWlzc2luZyBmb3Igc2lkZS1jaGFubmVsZWQgcmVxdWVzdCAke3Z9YCkpfTt0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLnNldCh2LEspLHRoaXMuX2VucXVldWVUYXNrTWVzc2FnZShSZSx7dHlwZToicmVxdWVzdCIsbWVzc2FnZTokLHRpbWVzdGFtcDpEYXRlLm5vdygpfSkuY2F0Y2goSj0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KHYpLGwoSil9KX1lbHNlIHRoaXMuX3RyYW5zcG9ydC5zZW5kKCQse3JlbGF0ZWRSZXF1ZXN0SWQ6ZSxyZXN1bXB0aW9uVG9rZW46aSxvbnJlc3VtcHRpb250b2tlbjphfSkuY2F0Y2goSz0+e3RoaXMuX2NsZWFudXBUaW1lb3V0KHYpLGwoSyl9KX0pfWFzeW5jIGdldFRhc2sobixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2dldCIscGFyYW1zOm59LFJhLHIpfWFzeW5jIGdldFRhc2tSZXN1bHQobixyLG8pe3JldHVybiB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidGFza3MvcmVzdWx0IixwYXJhbXM6bn0scixvKX1hc3luYyBsaXN0VGFza3MobixyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KHttZXRob2Q6InRhc2tzL2xpc3QiLHBhcmFtczpufSxMYSxyKX1hc3luYyBjYW5jZWxUYXNrKG4scil7cmV0dXJuIHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ0YXNrcy9jYW5jZWwiLHBhcmFtczpufSxJdixyKX1hc3luYyBub3RpZmljYXRpb24obixyKXtpZighdGhpcy5fdHJhbnNwb3J0KXRocm93IG5ldyBFcnJvcigiTm90IGNvbm5lY3RlZCIpO3RoaXMuYXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eShuLm1ldGhvZCk7Y29uc3Qgbz1yPy5yZWxhdGVkVGFzaz8udGFza0lkO2lmKG8pe2NvbnN0IHM9ey4uLm4sanNvbnJwYzoiMi4wIixwYXJhbXM6ey4uLm4ucGFyYW1zLF9tZXRhOnsuLi5uLnBhcmFtcz8uX21ldGF8fHt9LFt3ZV06ci5yZWxhdGVkVGFza319fTthd2FpdCB0aGlzLl9lbnF1ZXVlVGFza01lc3NhZ2Uobyx7dHlwZToibm90aWZpY2F0aW9uIixtZXNzYWdlOnMsdGltZXN0YW1wOkRhdGUubm93KCl9KTtyZXR1cm59aWYoKHRoaXMuX29wdGlvbnM/LmRlYm91bmNlZE5vdGlmaWNhdGlvbk1ldGhvZHM/P1tdKS5pbmNsdWRlcyhuLm1ldGhvZCkmJiFuLnBhcmFtcyYmIXI/LnJlbGF0ZWRSZXF1ZXN0SWQmJiFyPy5yZWxhdGVkVGFzayl7aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuaGFzKG4ubWV0aG9kKSlyZXR1cm47dGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuYWRkKG4ubWV0aG9kKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT57aWYodGhpcy5fcGVuZGluZ0RlYm91bmNlZE5vdGlmaWNhdGlvbnMuZGVsZXRlKG4ubWV0aG9kKSwhdGhpcy5fdHJhbnNwb3J0KXJldHVybjtsZXQgcz17Li4ubixqc29ucnBjOiIyLjAifTtyPy5yZWxhdGVkVGFzayYmKHM9ey4uLnMscGFyYW1zOnsuLi5zLnBhcmFtcyxfbWV0YTp7Li4ucy5wYXJhbXM/Ll9tZXRhfHx7fSxbd2VdOnIucmVsYXRlZFRhc2t9fX0pLHRoaXMuX3RyYW5zcG9ydD8uc2VuZChzLHIpLmNhdGNoKGM9PnRoaXMuX29uZXJyb3IoYykpfSk7cmV0dXJufWxldCBhPXsuLi5uLGpzb25ycGM6IjIuMCJ9O3I/LnJlbGF0ZWRUYXNrJiYoYT17Li4uYSxwYXJhbXM6ey4uLmEucGFyYW1zLF9tZXRhOnsuLi5hLnBhcmFtcz8uX21ldGF8fHt9LFt3ZV06ci5yZWxhdGVkVGFza319fSksYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnNlbmQoYSxyKX1zZXRSZXF1ZXN0SGFuZGxlcihuLHIpe2NvbnN0IG89enMobik7dGhpcy5hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkobyksdGhpcy5fcmVxdWVzdEhhbmRsZXJzLnNldChvLChlLGkpPT57Y29uc3QgYT14cyhuLGUpO3JldHVybiBQcm9taXNlLnJlc29sdmUocihhLGkpKX0pfXJlbW92ZVJlcXVlc3RIYW5kbGVyKG4pe3RoaXMuX3JlcXVlc3RIYW5kbGVycy5kZWxldGUobil9YXNzZXJ0Q2FuU2V0UmVxdWVzdEhhbmRsZXIobil7aWYodGhpcy5fcmVxdWVzdEhhbmRsZXJzLmhhcyhuKSl0aHJvdyBuZXcgRXJyb3IoYEEgcmVxdWVzdCBoYW5kbGVyIGZvciAke259IGFscmVhZHkgZXhpc3RzLCB3aGljaCB3b3VsZCBiZSBvdmVycmlkZGVuYCl9c2V0Tm90aWZpY2F0aW9uSGFuZGxlcihuLHIpe2NvbnN0IG89enMobik7dGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuc2V0KG8sZT0+e2NvbnN0IGk9eHMobixlKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHIoaSkpfSl9cmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlcihuKXt0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5kZWxldGUobil9X2NsZWFudXBUYXNrUHJvZ3Jlc3NIYW5kbGVyKG4pe2NvbnN0IHI9dGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmdldChuKTtyIT09dm9pZCAwJiYodGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUociksdGhpcy5fdGFza1Byb2dyZXNzVG9rZW5zLmRlbGV0ZShuKSl9YXN5bmMgX2VucXVldWVUYXNrTWVzc2FnZShuLHIsbyl7aWYoIXRoaXMuX3Rhc2tTdG9yZXx8IXRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZW5xdWV1ZSB0YXNrIG1lc3NhZ2U6IHRhc2tTdG9yZSBhbmQgdGFza01lc3NhZ2VRdWV1ZSBhcmUgbm90IGNvbmZpZ3VyZWQiKTtjb25zdCBlPXRoaXMuX29wdGlvbnM/Lm1heFRhc2tRdWV1ZVNpemU7YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5lbnF1ZXVlKG4scixvLGUpfWFzeW5jIF9jbGVhclRhc2tRdWV1ZShuLHIpe2lmKHRoaXMuX3Rhc2tNZXNzYWdlUXVldWUpe2NvbnN0IG89YXdhaXQgdGhpcy5fdGFza01lc3NhZ2VRdWV1ZS5kZXF1ZXVlQWxsKG4scik7Zm9yKGNvbnN0IGUgb2YgbylpZihlLnR5cGU9PT0icmVxdWVzdCImJklzKGUubWVzc2FnZSkpe2NvbnN0IGk9ZS5tZXNzYWdlLmlkLGE9dGhpcy5fcmVxdWVzdFJlc29sdmVycy5nZXQoaSk7YT8oYShuZXcgUChOLkludGVybmFsRXJyb3IsIlRhc2sgY2FuY2VsbGVkIG9yIGNvbXBsZXRlZCIpKSx0aGlzLl9yZXF1ZXN0UmVzb2x2ZXJzLmRlbGV0ZShpKSk6dGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlc29sdmVyIG1pc3NpbmcgZm9yIHJlcXVlc3QgJHtpfSBkdXJpbmcgdGFzayAke259IGNsZWFudXBgKSl9fX1hc3luYyBfd2FpdEZvclRhc2tVcGRhdGUobixyKXtsZXQgbz10aGlzLl9vcHRpb25zPy5kZWZhdWx0VGFza1BvbGxJbnRlcnZhbD8/MWUzO3RyeXtjb25zdCBlPWF3YWl0IHRoaXMuX3Rhc2tTdG9yZT8uZ2V0VGFzayhuKTtlPy5wb2xsSW50ZXJ2YWwmJihvPWUucG9sbEludGVydmFsKX1jYXRjaHt9cmV0dXJuIG5ldyBQcm9taXNlKChlLGkpPT57aWYoci5hYm9ydGVkKXtpKG5ldyBQKE4uSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpO3JldHVybn1jb25zdCBhPXNldFRpbWVvdXQoZSxvKTtyLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IiwoKT0+e2NsZWFyVGltZW91dChhKSxpKG5ldyBQKE4uSW52YWxpZFJlcXVlc3QsIlJlcXVlc3QgY2FuY2VsbGVkIikpfSx7b25jZTohMH0pfSl9cmVxdWVzdFRhc2tTdG9yZShuLHIpe2NvbnN0IG89dGhpcy5fdGFza1N0b3JlO2lmKCFvKXRocm93IG5ldyBFcnJvcigiTm8gdGFzayBzdG9yZSBjb25maWd1cmVkIik7cmV0dXJue2NyZWF0ZVRhc2s6YXN5bmMgZT0+e2lmKCFuKXRocm93IG5ldyBFcnJvcigiTm8gcmVxdWVzdCBwcm92aWRlZCIpO3JldHVybiBhd2FpdCBvLmNyZWF0ZVRhc2soZSxuLmlkLHttZXRob2Q6bi5tZXRob2QscGFyYW1zOm4ucGFyYW1zfSxyKX0sZ2V0VGFzazphc3luYyBlPT57Y29uc3QgaT1hd2FpdCBvLmdldFRhc2soZSxyKTtpZighaSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsIkZhaWxlZCB0byByZXRyaWV2ZSB0YXNrOiBUYXNrIG5vdCBmb3VuZCIpO3JldHVybiBpfSxzdG9yZVRhc2tSZXN1bHQ6YXN5bmMoZSxpLGEpPT57YXdhaXQgby5zdG9yZVRhc2tSZXN1bHQoZSxpLGEscik7Y29uc3Qgcz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZihzKXtjb25zdCBjPUVuLnBhcnNlKHttZXRob2Q6Im5vdGlmaWNhdGlvbnMvdGFza3Mvc3RhdHVzIixwYXJhbXM6c30pO2F3YWl0IHRoaXMubm90aWZpY2F0aW9uKGMpLFNlKHMuc3RhdHVzKSYmdGhpcy5fY2xlYW51cFRhc2tQcm9ncmVzc0hhbmRsZXIoZSl9fSxnZXRUYXNrUmVzdWx0OmU9Pm8uZ2V0VGFza1Jlc3VsdChlLHIpLHVwZGF0ZVRhc2tTdGF0dXM6YXN5bmMoZSxpLGEpPT57Y29uc3Qgcz1hd2FpdCBvLmdldFRhc2soZSxyKTtpZighcyl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYFRhc2sgIiR7ZX0iIG5vdCBmb3VuZCAtIGl0IG1heSBoYXZlIGJlZW4gY2xlYW5lZCB1cGApO2lmKFNlKHMuc3RhdHVzKSl0aHJvdyBuZXcgUChOLkludmFsaWRQYXJhbXMsYENhbm5vdCB1cGRhdGUgdGFzayAiJHtlfSIgZnJvbSB0ZXJtaW5hbCBzdGF0dXMgIiR7cy5zdGF0dXN9IiB0byAiJHtpfSIuIFRlcm1pbmFsIHN0YXRlcyAoY29tcGxldGVkLCBmYWlsZWQsIGNhbmNlbGxlZCkgY2Fubm90IHRyYW5zaXRpb24gdG8gb3RoZXIgc3RhdGVzLmApO2F3YWl0IG8udXBkYXRlVGFza1N0YXR1cyhlLGksYSxyKTtjb25zdCBjPWF3YWl0IG8uZ2V0VGFzayhlLHIpO2lmKGMpe2NvbnN0IHU9RW4ucGFyc2Uoe21ldGhvZDoibm90aWZpY2F0aW9ucy90YXNrcy9zdGF0dXMiLHBhcmFtczpjfSk7YXdhaXQgdGhpcy5ub3RpZmljYXRpb24odSksU2UoYy5zdGF0dXMpJiZ0aGlzLl9jbGVhbnVwVGFza1Byb2dyZXNzSGFuZGxlcihlKX19LGxpc3RUYXNrczplPT5vLmxpc3RUYXNrcyhlLHIpfX19ZnVuY3Rpb24gVHModCl7cmV0dXJuIHQhPT1udWxsJiZ0eXBlb2YgdD09Im9iamVjdCImJiFBcnJheS5pc0FycmF5KHQpfWZ1bmN0aW9uIEZoKHQsbil7Y29uc3Qgcj17Li4udH07Zm9yKGNvbnN0IG8gaW4gbil7Y29uc3QgZT1vLGk9bltlXTtpZihpPT09dm9pZCAwKWNvbnRpbnVlO2NvbnN0IGE9cltlXTtUcyhhKSYmVHMoaSk/cltlXT17Li4uYSwuLi5pfTpyW2VdPWl9cmV0dXJuIHJ9KHQ9PnR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOnR5cGVvZiBQcm94eTwidSI/bmV3IFByb3h5KHQse2dldDoobixyKT0+KHR5cGVvZiByZXF1aXJlPCJ1Ij9yZXF1aXJlOm4pW3JdfSk6dCkoZnVuY3Rpb24odCl7aWYodHlwZW9mIHJlcXVpcmU8InUiKXJldHVybiByZXF1aXJlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aHJvdyBFcnJvcignRHluYW1pYyByZXF1aXJlIG9mICInK3QrJyIgaXMgbm90IHN1cHBvcnRlZCcpfSk7Y2xhc3MgSmggZXh0ZW5kcyBxaHtfcmVnaXN0ZXJlZE1ldGhvZHM9bmV3IFNldDtfZXZlbnRTbG90cz1uZXcgTWFwO29uRXZlbnREaXNwYXRjaChuLHIpe31fZW5zdXJlRXZlbnRTbG90KG4pe2xldCByPXRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pO2lmKCFyKXtsZXQgbz10aGlzLmV2ZW50U2NoZW1hc1tuXTtpZighbyl0aHJvdyBFcnJvcihgVW5rbm93biBldmVudDogJHtTdHJpbmcobil9YCk7cj17bGlzdGVuZXJzOltdfSx0aGlzLl9ldmVudFNsb3RzLnNldChuLHIpO2xldCBlPW8uc2hhcGUubWV0aG9kLnZhbHVlO3RoaXMuX3JlZ2lzdGVyZWRNZXRob2RzLmFkZChlKTtsZXQgaT1yO3N1cGVyLnNldE5vdGlmaWNhdGlvbkhhbmRsZXIobyxhPT57bGV0IHM9YS5wYXJhbXM7dGhpcy5vbkV2ZW50RGlzcGF0Y2gobixzKSxpLm9uSGFuZGxlcj8uKHMpO2ZvcihsZXQgYyBvZlsuLi5pLmxpc3RlbmVyc10pYyhzKX0pfXJldHVybiByfXNldEV2ZW50SGFuZGxlcihuLHIpe2xldCBvPXRoaXMuX2Vuc3VyZUV2ZW50U2xvdChuKTtvLm9uSGFuZGxlciYmciYmY29uc29sZS53YXJuKGBbTUNQIEFwcHNdIG9uJHtTdHJpbmcobil9IGhhbmRsZXIgcmVwbGFjZWQuIFVzZSBhZGRFdmVudExpc3RlbmVyKCIke1N0cmluZyhuKX0iLCDigKYpIHRvIGFkZCBtdWx0aXBsZSBsaXN0ZW5lcnMgd2l0aG91dCByZXBsYWNpbmcuYCksby5vbkhhbmRsZXI9cn1nZXRFdmVudEhhbmRsZXIobil7cmV0dXJuIHRoaXMuX2V2ZW50U2xvdHMuZ2V0KG4pPy5vbkhhbmRsZXJ9YWRkRXZlbnRMaXN0ZW5lcihuLHIpe3RoaXMuX2Vuc3VyZUV2ZW50U2xvdChuKS5saXN0ZW5lcnMucHVzaChyKX1yZW1vdmVFdmVudExpc3RlbmVyKG4scil7bGV0IG89dGhpcy5fZXZlbnRTbG90cy5nZXQobik7aWYoIW8pcmV0dXJuO2xldCBlPW8ubGlzdGVuZXJzLmluZGV4T2Yocik7ZSE9PS0xJiZvLmxpc3RlbmVycy5zcGxpY2UoZSwxKX1zZXRSZXF1ZXN0SGFuZGxlcj0obixyKT0+e3RoaXMuX2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobiwic2V0UmVxdWVzdEhhbmRsZXIiKSxzdXBlci5zZXRSZXF1ZXN0SGFuZGxlcihuLHIpfTtzZXROb3RpZmljYXRpb25IYW5kbGVyPShuLHIpPT57dGhpcy5fYXNzZXJ0TWV0aG9kTm90UmVnaXN0ZXJlZChuLCJzZXROb3RpZmljYXRpb25IYW5kbGVyIiksc3VwZXIuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihuLHIpfTt3YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKG4scixvKXtyJiZvJiZjb25zb2xlLndhcm4oYFtNQ1AgQXBwc10gJHtufSBoYW5kbGVyIHJlcGxhY2VkLiBQcmV2aW91cyBoYW5kbGVyIHdpbGwgbm8gbG9uZ2VyIGJlIGNhbGxlZC5gKX1yZXBsYWNlUmVxdWVzdEhhbmRsZXI9KG4scik9PntsZXQgbz1uLnNoYXBlLm1ldGhvZC52YWx1ZTt0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5hZGQobyksc3VwZXIuc2V0UmVxdWVzdEhhbmRsZXIobixyKX07X2Fzc2VydE1ldGhvZE5vdFJlZ2lzdGVyZWQobixyKXtsZXQgbz1uLnNoYXBlLm1ldGhvZC52YWx1ZTtpZih0aGlzLl9yZWdpc3RlcmVkTWV0aG9kcy5oYXMobykpdGhyb3cgRXJyb3IoYEhhbmRsZXIgZm9yICIke299IiBhbHJlYWR5IHJlZ2lzdGVyZWQgKHZpYSAke3J9KS4gVXNlIGFkZEV2ZW50TGlzdGVuZXIoKSB0byBhdHRhY2ggbXVsdGlwbGUgbGlzdGVuZXJzLCBvciB0aGUgb24qIHNldHRlciBmb3IgcmVwbGFjZSBzZW1hbnRpY3MuYCk7dGhpcy5fcmVnaXN0ZXJlZE1ldGhvZHMuYWRkKG8pfX12YXIgSGg9IjIwMjYtMDEtMjYiLFZoPSJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQtcGFydGlhbCI7Y2xhc3MgS2h7ZXZlbnRUYXJnZXQ7ZXZlbnRTb3VyY2U7bWVzc2FnZUxpc3RlbmVyO2NvbnN0cnVjdG9yKG49d2luZG93LnBhcmVudCxyKXt0aGlzLmV2ZW50VGFyZ2V0PW4sdGhpcy5ldmVudFNvdXJjZT1yLHRoaXMubWVzc2FnZUxpc3RlbmVyPW89PntpZihyJiZvLnNvdXJjZSE9PXRoaXMuZXZlbnRTb3VyY2Upe2NvbnNvbGUuZGVidWcoIklnbm9yaW5nIG1lc3NhZ2UgZnJvbSB1bmtub3duIHNvdXJjZSIsbyk7cmV0dXJufWxldCBlPXN2LnNhZmVQYXJzZShvLmRhdGEpO2Uuc3VjY2Vzcz8oY29uc29sZS5kZWJ1ZygiUGFyc2VkIG1lc3NhZ2UiLGUuZGF0YSksdGhpcy5vbm1lc3NhZ2U/LihlLmRhdGEpKTpvLmRhdGE/Lmpzb25ycGMhPT0iMi4wIj9jb25zb2xlLmRlYnVnKCJJZ25vcmluZyBub24tSlNPTi1SUEMgbWVzc2FnZSIsZS5lcnJvci5tZXNzYWdlLG8pOihjb25zb2xlLmVycm9yKCJGYWlsZWQgdG8gcGFyc2UgbWVzc2FnZSIsZS5lcnJvci5tZXNzYWdlLG8pLHRoaXMub25lcnJvcj8uKEVycm9yKCJJbnZhbGlkIEpTT04tUlBDIG1lc3NhZ2UgcmVjZWl2ZWQ6ICIrZS5lcnJvci5tZXNzYWdlKSkpfX1hc3luYyBzdGFydCgpe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIix0aGlzLm1lc3NhZ2VMaXN0ZW5lcil9YXN5bmMgc2VuZChuLHIpe24ubWV0aG9kIT09VmgmJmNvbnNvbGUuZGVidWcoIlNlbmRpbmcgbWVzc2FnZSIsbiksdGhpcy5ldmVudFRhcmdldC5wb3N0TWVzc2FnZShuLCIqIil9YXN5bmMgY2xvc2UoKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsdGhpcy5tZXNzYWdlTGlzdGVuZXIpLHRoaXMub25jbG9zZT8uKCl9b25jbG9zZTtvbmVycm9yO29ubWVzc2FnZTtzZXNzaW9uSWQ7c2V0UHJvdG9jb2xWZXJzaW9ufXZhciBCaD1qKFttKCJsaWdodCIpLG0oImRhcmsiKV0pLmRlc2NyaWJlKCJDb2xvciB0aGVtZSBwcmVmZXJlbmNlIGZvciB0aGUgaG9zdCBlbnZpcm9ubWVudC4iKSxfdD1qKFttKCJpbmxpbmUiKSxtKCJmdWxsc2NyZWVuIiksbSgicGlwIildKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlIGZvciBVSSBwcmVzZW50YXRpb24uIiksV2g9aihbbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXByaW1hcnkiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtc2Vjb25kYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5IiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWludmVyc2UiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtZ2hvc3QiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtaW5mbyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC1kYW5nZXIiKSxtKCItLWNvbG9yLWJhY2tncm91bmQtc3VjY2VzcyIpLG0oIi0tY29sb3ItYmFja2dyb3VuZC13YXJuaW5nIiksbSgiLS1jb2xvci1iYWNrZ3JvdW5kLWRpc2FibGVkIiksbSgiLS1jb2xvci10ZXh0LXByaW1hcnkiKSxtKCItLWNvbG9yLXRleHQtc2Vjb25kYXJ5IiksbSgiLS1jb2xvci10ZXh0LXRlcnRpYXJ5IiksbSgiLS1jb2xvci10ZXh0LWludmVyc2UiKSxtKCItLWNvbG9yLXRleHQtZ2hvc3QiKSxtKCItLWNvbG9yLXRleHQtaW5mbyIpLG0oIi0tY29sb3ItdGV4dC1kYW5nZXIiKSxtKCItLWNvbG9yLXRleHQtc3VjY2VzcyIpLG0oIi0tY29sb3ItdGV4dC13YXJuaW5nIiksbSgiLS1jb2xvci10ZXh0LWRpc2FibGVkIiksbSgiLS1jb2xvci1ib3JkZXItcHJpbWFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLXNlY29uZGFyeSIpLG0oIi0tY29sb3ItYm9yZGVyLXRlcnRpYXJ5IiksbSgiLS1jb2xvci1ib3JkZXItaW52ZXJzZSIpLG0oIi0tY29sb3ItYm9yZGVyLWdob3N0IiksbSgiLS1jb2xvci1ib3JkZXItaW5mbyIpLG0oIi0tY29sb3ItYm9yZGVyLWRhbmdlciIpLG0oIi0tY29sb3ItYm9yZGVyLXN1Y2Nlc3MiKSxtKCItLWNvbG9yLWJvcmRlci13YXJuaW5nIiksbSgiLS1jb2xvci1ib3JkZXItZGlzYWJsZWQiKSxtKCItLWNvbG9yLXJpbmctcHJpbWFyeSIpLG0oIi0tY29sb3ItcmluZy1zZWNvbmRhcnkiKSxtKCItLWNvbG9yLXJpbmctaW52ZXJzZSIpLG0oIi0tY29sb3ItcmluZy1pbmZvIiksbSgiLS1jb2xvci1yaW5nLWRhbmdlciIpLG0oIi0tY29sb3ItcmluZy1zdWNjZXNzIiksbSgiLS1jb2xvci1yaW5nLXdhcm5pbmciKSxtKCItLWZvbnQtc2FucyIpLG0oIi0tZm9udC1tb25vIiksbSgiLS1mb250LXdlaWdodC1ub3JtYWwiKSxtKCItLWZvbnQtd2VpZ2h0LW1lZGl1bSIpLG0oIi0tZm9udC13ZWlnaHQtc2VtaWJvbGQiKSxtKCItLWZvbnQtd2VpZ2h0LWJvbGQiKSxtKCItLWZvbnQtdGV4dC14cy1zaXplIiksbSgiLS1mb250LXRleHQtc20tc2l6ZSIpLG0oIi0tZm9udC10ZXh0LW1kLXNpemUiKSxtKCItLWZvbnQtdGV4dC1sZy1zaXplIiksbSgiLS1mb250LWhlYWRpbmcteHMtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXNtLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy1tZC1zaXplIiksbSgiLS1mb250LWhlYWRpbmctbGctc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLXhsLXNpemUiKSxtKCItLWZvbnQtaGVhZGluZy0yeGwtc2l6ZSIpLG0oIi0tZm9udC1oZWFkaW5nLTN4bC1zaXplIiksbSgiLS1mb250LXRleHQteHMtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtdGV4dC1zbS1saW5lLWhlaWdodCIpLG0oIi0tZm9udC10ZXh0LW1kLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LXRleHQtbGctbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy14cy1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLXNtLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctbWQtbGluZS1oZWlnaHQiKSxtKCItLWZvbnQtaGVhZGluZy1sZy1saW5lLWhlaWdodCIpLG0oIi0tZm9udC1oZWFkaW5nLXhsLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctMnhsLWxpbmUtaGVpZ2h0IiksbSgiLS1mb250LWhlYWRpbmctM3hsLWxpbmUtaGVpZ2h0IiksbSgiLS1ib3JkZXItcmFkaXVzLXhzIiksbSgiLS1ib3JkZXItcmFkaXVzLXNtIiksbSgiLS1ib3JkZXItcmFkaXVzLW1kIiksbSgiLS1ib3JkZXItcmFkaXVzLWxnIiksbSgiLS1ib3JkZXItcmFkaXVzLXhsIiksbSgiLS1ib3JkZXItcmFkaXVzLWZ1bGwiKSxtKCItLWJvcmRlci13aWR0aC1yZWd1bGFyIiksbSgiLS1zaGFkb3ctaGFpcmxpbmUiKSxtKCItLXNoYWRvdy1zbSIpLG0oIi0tc2hhZG93LW1kIiksbSgiLS1zaGFkb3ctbGciKV0pLmRlc2NyaWJlKCJDU1MgdmFyaWFibGUga2V5cyBhdmFpbGFibGUgdG8gTUNQIGFwcHMgZm9yIHRoZW1pbmcuIiksR2g9VShXaC5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKSxqKFtwKCksS2UoKV0pLmRlc2NyaWJlKGBTdHlsZSB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgTUNQIGFwcHMuCgpJbmRpdmlkdWFsIHN0eWxlIGtleXMgYXJlIG9wdGlvbmFsIC0gaG9zdHMgbWF5IHByb3ZpZGUgYW55IHN1YnNldCBvZiB0aGVzZSB2YWx1ZXMuClZhbHVlcyBhcmUgc3RyaW5ncyBjb250YWluaW5nIENTUyB2YWx1ZXMgKGNvbG9ycywgc2l6ZXMsIGZvbnQgc3RhY2tzLCBldGMuKS4KCk5vdGU6IFRoaXMgdHlwZSB1c2VzIFxgUmVjb3JkPEssIHN0cmluZyB8IHVuZGVmaW5lZD5cYCByYXRoZXIgdGhhbiBcYFBhcnRpYWw8UmVjb3JkPEssIHN0cmluZz4+XGAKZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBab2Qgc2NoZW1hIGdlbmVyYXRpb24uIEJvdGggYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGZvciB2YWxpZGF0aW9uLmApKS5kZXNjcmliZShgU3R5bGUgdmFyaWFibGVzIGZvciB0aGVtaW5nIE1DUCBhcHBzLgoKSW5kaXZpZHVhbCBzdHlsZSBrZXlzIGFyZSBvcHRpb25hbCAtIGhvc3RzIG1heSBwcm92aWRlIGFueSBzdWJzZXQgb2YgdGhlc2UgdmFsdWVzLgpWYWx1ZXMgYXJlIHN0cmluZ3MgY29udGFpbmluZyBDU1MgdmFsdWVzIChjb2xvcnMsIHNpemVzLCBmb250IHN0YWNrcywgZXRjLikuCgpOb3RlOiBUaGlzIHR5cGUgdXNlcyBcYFJlY29yZDxLLCBzdHJpbmcgfCB1bmRlZmluZWQ+XGAgcmF0aGVyIHRoYW4gXGBQYXJ0aWFsPFJlY29yZDxLLCBzdHJpbmc+PlxgCmZvciBjb21wYXRpYmlsaXR5IHdpdGggWm9kIHNjaGVtYSBnZW5lcmF0aW9uLiBCb3RoIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCBmb3IgdmFsaWRhdGlvbi5gKTtmKHttZXRob2Q6bSgidWkvb3Blbi1saW5rIikscGFyYW1zOmYoe3VybDpwKCkuZGVzY3JpYmUoIlVSTCB0byBvcGVuIGluIHRoZSBob3N0J3MgYnJvd3NlciIpfSl9KTt2YXIgWGg9Zih7aXNFcnJvcjpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgaG9zdCBmYWlsZWQgdG8gb3BlbiB0aGUgVVJMIChlLmcuLCBkdWUgdG8gc2VjdXJpdHkgcG9saWN5KS4iKX0pLnBhc3N0aHJvdWdoKCksWWg9Zih7aXNFcnJvcjpEKCkub3B0aW9uYWwoKS5kZXNjcmliZSgiVHJ1ZSBpZiB0aGUgZG93bmxvYWQgZmFpbGVkIChlLmcuLCB1c2VyIGNhbmNlbGxlZCBvciBob3N0IGRlbmllZCkuIil9KS5wYXNzdGhyb3VnaCgpLFFoPWYoe2lzRXJyb3I6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlRydWUgaWYgdGhlIGhvc3QgcmVqZWN0ZWQgb3IgZmFpbGVkIHRvIGRlbGl2ZXIgdGhlIG1lc3NhZ2UuIil9KS5wYXNzdGhyb3VnaCgpO2Yoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3NhbmRib3gtcHJveHktcmVhZHkiKSxwYXJhbXM6Zih7fSl9KTt2YXIgQmE9Zih7Y29ubmVjdERvbWFpbnM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoYE9yaWdpbnMgZm9yIG5ldHdvcmsgcmVxdWVzdHMgKGZldGNoL1hIUi9XZWJTb2NrZXQpLgoKLSBNYXBzIHRvIENTUCBcYGNvbm5lY3Qtc3JjXGAgZGlyZWN0aXZlCi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayBjb25uZWN0aW9ucyAoc2VjdXJlIGRlZmF1bHQpYCkscmVzb3VyY2VEb21haW5zOncocCgpKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJPcmlnaW5zIGZvciBzdGF0aWMgcmVzb3VyY2VzIChpbWFnZXMsIHNjcmlwdHMsIHN0eWxlc2hlZXRzLCBmb250cywgbWVkaWEpLlxuXG4tIE1hcHMgdG8gQ1NQIGBpbWctc3JjYCwgYHNjcmlwdC1zcmNgLCBgc3R5bGUtc3JjYCwgYGZvbnQtc3JjYCwgYG1lZGlhLXNyY2AgZGlyZWN0aXZlc1xuLSBXaWxkY2FyZCBzdWJkb21haW5zIHN1cHBvcnRlZDogYGh0dHBzOi8vKi5leGFtcGxlLmNvbWBcbi0gRW1wdHkgb3Igb21pdHRlZCDihpIgbm8gbmV0d29yayByZXNvdXJjZXMgKHNlY3VyZSBkZWZhdWx0KSIpLGZyYW1lRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiT3JpZ2lucyBmb3IgbmVzdGVkIGlmcmFtZXMuXG5cbi0gTWFwcyB0byBDU1AgYGZyYW1lLXNyY2AgZGlyZWN0aXZlXG4tIEVtcHR5IG9yIG9taXR0ZWQg4oaSIG5vIG5lc3RlZCBpZnJhbWVzIGFsbG93ZWQgKGBmcmFtZS1zcmMgJ25vbmUnYCkiKSxiYXNlVXJpRG9tYWluczp3KHAoKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiQWxsb3dlZCBiYXNlIFVSSXMgZm9yIHRoZSBkb2N1bWVudC5cblxuLSBNYXBzIHRvIENTUCBgYmFzZS11cmlgIGRpcmVjdGl2ZVxuLSBFbXB0eSBvciBvbWl0dGVkIOKGkiBvbmx5IHNhbWUgb3JpZ2luIGFsbG93ZWQgKGBiYXNlLXVyaSAnc2VsZidgKSIpfSksV2E9Zih7Y2FtZXJhOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlJlcXVlc3QgY2FtZXJhIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgY2FtZXJhYCBmZWF0dXJlLiIpLG1pY3JvcGhvbmU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBtaWNyb3Bob25lIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgbWljcm9waG9uZWAgZmVhdHVyZS4iKSxnZW9sb2NhdGlvbjpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJSZXF1ZXN0IGdlb2xvY2F0aW9uIGFjY2Vzcy5cblxuTWFwcyB0byBQZXJtaXNzaW9uIFBvbGljeSBgZ2VvbG9jYXRpb25gIGZlYXR1cmUuIiksY2xpcGJvYXJkV3JpdGU6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUmVxdWVzdCBjbGlwYm9hcmQgd3JpdGUgYWNjZXNzLlxuXG5NYXBzIHRvIFBlcm1pc3Npb24gUG9saWN5IGBjbGlwYm9hcmQtd3JpdGVgIGZlYXR1cmUuIil9KTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiKSxwYXJhbXM6Zih7d2lkdGg6eigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk5ldyB3aWR0aCBpbiBwaXhlbHMuIiksaGVpZ2h0OnooKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJOZXcgaGVpZ2h0IGluIHBpeGVscy4iKX0pfSk7dmFyIGUkPWYoe21ldGhvZDptKCJ1aS9ub3RpZmljYXRpb25zL3Rvb2wtaW5wdXQiKSxwYXJhbXM6Zih7YXJndW1lbnRzOlUocCgpLE8oKS5kZXNjcmliZSgiQ29tcGxldGUgdG9vbCBjYWxsIGFyZ3VtZW50cyBhcyBrZXktdmFsdWUgcGFpcnMuIikpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNvbXBsZXRlIHRvb2wgY2FsbCBhcmd1bWVudHMgYXMga2V5LXZhbHVlIHBhaXJzLiIpfSl9KSx0JD1mKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy90b29sLWlucHV0LXBhcnRpYWwiKSxwYXJhbXM6Zih7YXJndW1lbnRzOlUocCgpLE8oKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiUGFydGlhbCB0b29sIGNhbGwgYXJndW1lbnRzIChpbmNvbXBsZXRlLCBtYXkgY2hhbmdlKS4iKX0pfSksbiQ9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1jYW5jZWxsZWQiKSxwYXJhbXM6Zih7cmVhc29uOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCdPcHRpb25hbCByZWFzb24gZm9yIHRoZSBjYW5jZWxsYXRpb24gKGUuZy4sICJ1c2VyIGFjdGlvbiIsICJ0aW1lb3V0IikuJyl9KX0pLHIkPWYoe2ZvbnRzOnAoKS5vcHRpb25hbCgpfSksaSQ9Zih7dmFyaWFibGVzOkdoLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUyB2YXJpYWJsZXMgZm9yIHRoZW1pbmcgdGhlIGFwcC4iKSxjc3M6ciQub3B0aW9uYWwoKS5kZXNjcmliZSgiQ1NTIGJsb2NrcyB0aGF0IGFwcHMgY2FuIGluamVjdC4iKX0pLG8kPWYoe21ldGhvZDptKCJ1aS9yZXNvdXJjZS10ZWFyZG93biIpLHBhcmFtczpmKHt9KX0pO1UocCgpLE8oKSk7dmFyIGpzPWYoe3RleHQ6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyB0ZXh0IGNvbnRlbnQgYmxvY2tzLiIpLGltYWdlOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgaW1hZ2UgY29udGVudCBibG9ja3MuIiksYXVkaW86Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBhdWRpbyBjb250ZW50IGJsb2Nrcy4iKSxyZXNvdXJjZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGNvbnRlbnQgYmxvY2tzLiIpLHJlc291cmNlTGluazpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlc291cmNlIGxpbmsgY29udGVudCBibG9ja3MuIiksc3RydWN0dXJlZENvbnRlbnQ6Zih7fSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBzdHJ1Y3R1cmVkIGNvbnRlbnQuIil9KTtmKHttZXRob2Q6bSgidWkvbm90aWZpY2F0aW9ucy9yZXF1ZXN0LXRlYXJkb3duIikscGFyYW1zOmYoe30pLm9wdGlvbmFsKCl9KTt2YXIgYSQ9Zih7ZXhwZXJpbWVudGFsOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkV4cGVyaW1lbnRhbCBmZWF0dXJlcyAoc3RydWN0dXJlIFRCRCkuIiksb3BlbkxpbmtzOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgb3BlbmluZyBleHRlcm5hbCBVUkxzLiIpLGRvd25sb2FkRmlsZTpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIGZpbGUgZG93bmxvYWRzIHZpYSB1aS9kb3dubG9hZC1maWxlLiIpLHNlcnZlclRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHRvb2xzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgdG9vbCBjYWxscyB0byB0aGUgTUNQIHNlcnZlci4iKSxzZXJ2ZXJSZXNvdXJjZXM6Zih7bGlzdENoYW5nZWQ6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgcmVzb3VyY2VzL2xpc3RfY2hhbmdlZCBub3RpZmljYXRpb25zLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBjYW4gcHJveHkgcmVzb3VyY2UgcmVhZHMgdG8gdGhlIE1DUCBzZXJ2ZXIuIiksbG9nZ2luZzpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IGFjY2VwdHMgbG9nIG1lc3NhZ2VzLiIpLHNhbmRib3g6Zih7cGVybWlzc2lvbnM6V2Eub3B0aW9uYWwoKS5kZXNjcmliZSgiUGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGUgaG9zdCAoY2FtZXJhLCBtaWNyb3Bob25lLCBnZW9sb2NhdGlvbikuIiksY3NwOkJhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBkb21haW5zIGFwcHJvdmVkIGJ5IHRoZSBob3N0LiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBjb25maWd1cmF0aW9uIGFwcGxpZWQgYnkgdGhlIGhvc3QuIiksdXBkYXRlTW9kZWxDb250ZXh0OmpzLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYWNjZXB0cyBjb250ZXh0IHVwZGF0ZXMgKHVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0KSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbW9kZWwncyBjb250ZXh0IGZvciBmdXR1cmUgdHVybnMuIiksbWVzc2FnZTpqcy5vcHRpb25hbCgpLmRlc2NyaWJlKCJIb3N0IHN1cHBvcnRzIHJlY2VpdmluZyBjb250ZW50IG1lc3NhZ2VzICh1aS9tZXNzYWdlKSBmcm9tIHRoZSB2aWV3LiIpLHNhbXBsaW5nOmYoe3Rvb2xzOmYoe30pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3Qgc3VwcG9ydHMgdG9vbCB1c2UgdmlhIGB0b29sc2AgYW5kIGB0b29sQ2hvaWNlYCBwYXJhbWV0ZXJzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiSG9zdCBzdXBwb3J0cyBMTE0gc2FtcGxpbmcgKHNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UpIGZyb20gdGhlIHZpZXcuXG5NaXJyb3JzIHRoZSBNQ1AgYENsaWVudENhcGFiaWxpdGllcy5zYW1wbGluZ2Agc2hhcGUgc28gaG9zdHMgY2FuIHBhc3MgaXQgdGhyb3VnaC4iKX0pLHMkPWYoe2V4cGVyaW1lbnRhbDpmKHt9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJFeHBlcmltZW50YWwgZmVhdHVyZXMgKHN0cnVjdHVyZSBUQkQpLiIpLHRvb2xzOmYoe2xpc3RDaGFuZ2VkOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgc3VwcG9ydHMgdG9vbHMvbGlzdF9jaGFuZ2VkIG5vdGlmaWNhdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJBcHAgZXhwb3NlcyBNQ1Atc3R5bGUgdG9vbHMgdGhhdCB0aGUgaG9zdCBjYW4gY2FsbC4iKSxhdmFpbGFibGVEaXNwbGF5TW9kZXM6dyhfdCkub3B0aW9uYWwoKS5kZXNjcmliZSgiRGlzcGxheSBtb2RlcyB0aGUgYXBwIHN1cHBvcnRzLiIpfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWQiKSxwYXJhbXM6Zih7fSkub3B0aW9uYWwoKX0pO2Yoe2NzcDpCYS5vcHRpb25hbCgpLmRlc2NyaWJlKCJDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjb25maWd1cmF0aW9uIGZvciBVSSByZXNvdXJjZXMuIikscGVybWlzc2lvbnM6V2Eub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgYnkgdGhlIFVJIHJlc291cmNlLiIpLGRvbWFpbjpwKCkub3B0aW9uYWwoKS5kZXNjcmliZShgRGVkaWNhdGVkIG9yaWdpbiBmb3IgdmlldyBzYW5kYm94LgoKVXNlZnVsIHdoZW4gdmlld3MgbmVlZCBzdGFibGUsIGRlZGljYXRlZCBvcmlnaW5zIGZvciBPQXV0aCBjYWxsYmFja3MsIENPUlMgcG9saWNpZXMsIG9yIEFQSSBrZXkgYWxsb3dsaXN0cy4KCioqSG9zdC1kZXBlbmRlbnQ6KiogVGhlIGZvcm1hdCBhbmQgdmFsaWRhdGlvbiBydWxlcyBmb3IgdGhpcyBmaWVsZCBhcmUgZGV0ZXJtaW5lZCBieSBlYWNoIGhvc3QuIFNlcnZlcnMgTVVTVCBjb25zdWx0IGhvc3Qtc3BlY2lmaWMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGV4cGVjdGVkIGRvbWFpbiBmb3JtYXQuIENvbW1vbiBwYXR0ZXJucyBpbmNsdWRlOgotIEhhc2gtYmFzZWQgc3ViZG9tYWlucyAoZS5nLiwgXGB7aGFzaH0uY2xhdWRlbWNwY29udGVudC5jb21cYCkKLSBVUkwtZGVyaXZlZCBzdWJkb21haW5zIChlLmcuLCBcYHd3dy1leGFtcGxlLWNvbS5vYWl1c2VyY29udGVudC5jb21cYCkKCklmIG9taXR0ZWQsIGhvc3QgdXNlcyBkZWZhdWx0IHNhbmRib3ggb3JpZ2luICh0eXBpY2FsbHkgcGVyLWNvbnZlcnNhdGlvbikuYCkscHJlZmVyc0JvcmRlcjpEKCkub3B0aW9uYWwoKS5kZXNjcmliZShgVmlzdWFsIGJvdW5kYXJ5IHByZWZlcmVuY2UgLSB0cnVlIGlmIHZpZXcgcHJlZmVycyBhIHZpc2libGUgYm9yZGVyLgoKQm9vbGVhbiByZXF1ZXN0aW5nIHdoZXRoZXIgYSB2aXNpYmxlIGJvcmRlciBhbmQgYmFja2dyb3VuZCBpcyBwcm92aWRlZCBieSB0aGUgaG9zdC4gU3BlY2lmeWluZyBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBpcyByZWNvbW1lbmRlZCBiZWNhdXNlIGhvc3RzJyBkZWZhdWx0cyBtYXkgdmFyeS4KCi0gXGB0cnVlXGA6IHJlcXVlc3QgdmlzaWJsZSBib3JkZXIgKyBiYWNrZ3JvdW5kCi0gXGBmYWxzZVxgOiByZXF1ZXN0IG5vIHZpc2libGUgYm9yZGVyICsgYmFja2dyb3VuZAotIG9taXR0ZWQ6IGhvc3QgZGVjaWRlcyBib3JkZXJgKX0pO2Yoe21ldGhvZDptKCJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIpLHBhcmFtczpmKHttb2RlOl90LmRlc2NyaWJlKCJUaGUgZGlzcGxheSBtb2RlIGJlaW5nIHJlcXVlc3RlZC4iKX0pfSk7dmFyIGMkPWYoe21vZGU6X3QuZGVzY3JpYmUoIlRoZSBkaXNwbGF5IG1vZGUgdGhhdCB3YXMgYWN0dWFsbHkgc2V0LiBNYXkgZGlmZmVyIGZyb20gcmVxdWVzdGVkIGlmIG5vdCBzdXBwb3J0ZWQuIil9KS5wYXNzdGhyb3VnaCgpLHUkPWooW20oIm1vZGVsIiksbSgiYXBwIildKS5kZXNjcmliZSgiVG9vbCB2aXNpYmlsaXR5IHNjb3BlIC0gd2hvIGNhbiBhY2Nlc3MgdGhlIHRvb2wuIik7Zih7cmVzb3VyY2VVcmk6cCgpLm9wdGlvbmFsKCksdmlzaWJpbGl0eTp3KHUkKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBXaG8gY2FuIGFjY2VzcyB0aGlzIHRvb2wuIERlZmF1bHQ6IFsibW9kZWwiLCAiYXBwIl0KLSAibW9kZWwiOiBUb29sIHZpc2libGUgdG8gYW5kIGNhbGxhYmxlIGJ5IHRoZSBhZ2VudAotICJhcHAiOiBUb29sIGNhbGxhYmxlIGJ5IHRoZSBhcHAgZnJvbSB0aGlzIHNlcnZlciBvbmx5YCksY3NwOlVlKCkub3B0aW9uYWwoKSxwZXJtaXNzaW9uczpVZSgpLm9wdGlvbmFsKCl9KTtmKHttaW1lVHlwZXM6dyhwKCkpLm9wdGlvbmFsKCkuZGVzY3JpYmUoJ0FycmF5IG9mIHN1cHBvcnRlZCBNSU1FIHR5cGVzIGZvciBVSSByZXNvdXJjZXMuXG5NdXN0IGluY2x1ZGUgYCJ0ZXh0L2h0bWw7cHJvZmlsZT1tY3AtYXBwImAgZm9yIE1DUCBBcHBzIHN1cHBvcnQuJyl9KTtmKHttZXRob2Q6bSgidWkvZG93bmxvYWQtZmlsZSIpLHBhcmFtczpmKHtjb250ZW50czp3KGooW2RtLG1tXSkpLmRlc2NyaWJlKCJSZXNvdXJjZSBjb250ZW50cyB0byBkb3dubG9hZCDigJQgZW1iZWRkZWQgKGlubGluZSBkYXRhKSBvciBsaW5rZWQgKGhvc3QgZmV0Y2hlcykuIFVzZXMgc3RhbmRhcmQgTUNQIHJlc291cmNlIHR5cGVzLiIpfSl9KTtmKHttZXRob2Q6bSgidWkvbWVzc2FnZSIpLHBhcmFtczpmKHtyb2xlOm0oInVzZXIiKS5kZXNjcmliZSgnTWVzc2FnZSByb2xlLCBjdXJyZW50bHkgb25seSAidXNlciIgaXMgc3VwcG9ydGVkLicpLGNvbnRlbnQ6dyhrbikuZGVzY3JpYmUoIk1lc3NhZ2UgY29udGVudCBibG9ja3MgKHRleHQsIGltYWdlLCBldGMuKS4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvc2FuZGJveC1yZXNvdXJjZS1yZWFkeSIpLHBhcmFtczpmKHtodG1sOnAoKS5kZXNjcmliZSgiSFRNTCBjb250ZW50IHRvIGxvYWQgaW50byB0aGUgaW5uZXIgaWZyYW1lLiIpLHNhbmRib3g6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgaW5uZXIgaWZyYW1lJ3Mgc2FuZGJveCBhdHRyaWJ1dGUuIiksY3NwOkJhLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkNTUCBjb25maWd1cmF0aW9uIGZyb20gcmVzb3VyY2UgbWV0YWRhdGEuIikscGVybWlzc2lvbnM6V2Eub3B0aW9uYWwoKS5kZXNjcmliZSgiU2FuZGJveCBwZXJtaXNzaW9ucyBmcm9tIHJlc291cmNlIG1ldGFkYXRhLiIpfSl9KTt2YXIgbCQ9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvdG9vbC1yZXN1bHQiKSxwYXJhbXM6V3IuZGVzY3JpYmUoIlN0YW5kYXJkIE1DUCB0b29sIGV4ZWN1dGlvbiByZXN1bHQuIil9KSwkbT1mKHt0b29sSW5mbzpmKHtpZDp2bi5vcHRpb25hbCgpLmRlc2NyaWJlKCJKU09OLVJQQyBpZCBvZiB0aGUgdG9vbHMvY2FsbCByZXF1ZXN0LiIpLHRvb2w6S2EuZGVzY3JpYmUoIlRvb2wgZGVmaW5pdGlvbiBpbmNsdWRpbmcgbmFtZSwgaW5wdXRTY2hlbWEsIGV0Yy4iKX0pLm9wdGlvbmFsKCkuZGVzY3JpYmUoIk1ldGFkYXRhIG9mIHRoZSB0b29sIGNhbGwgdGhhdCBpbnN0YW50aWF0ZWQgdGhpcyBBcHAuIiksdGhlbWU6Qmgub3B0aW9uYWwoKS5kZXNjcmliZSgiQ3VycmVudCBjb2xvciB0aGVtZSBwcmVmZXJlbmNlLiIpLHN0eWxlczppJC5vcHRpb25hbCgpLmRlc2NyaWJlKCJTdHlsZSBjb25maWd1cmF0aW9uIGZvciB0aGVtaW5nIHRoZSBhcHAuIiksZGlzcGxheU1vZGU6X3Qub3B0aW9uYWwoKS5kZXNjcmliZSgiSG93IHRoZSBVSSBpcyBjdXJyZW50bHkgZGlzcGxheWVkLiIpLGF2YWlsYWJsZURpc3BsYXlNb2Rlczp3KF90KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEaXNwbGF5IG1vZGVzIHRoZSBob3N0IHN1cHBvcnRzLiIpLGNvbnRhaW5lckRpbWVuc2lvbnM6aihbZih7aGVpZ2h0OnooKS5kZXNjcmliZSgiRml4ZWQgY29udGFpbmVyIGhlaWdodCBpbiBwaXhlbHMuIil9KSxmKHttYXhIZWlnaHQ6aihbeigpLEtlKCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciBoZWlnaHQgaW4gcGl4ZWxzLiIpfSldKS5hbmQoaihbZih7d2lkdGg6eigpLmRlc2NyaWJlKCJGaXhlZCBjb250YWluZXIgd2lkdGggaW4gcGl4ZWxzLiIpfSksZih7bWF4V2lkdGg6aihbeigpLEtlKCldKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJNYXhpbXVtIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHMuIil9KV0pKS5vcHRpb25hbCgpLmRlc2NyaWJlKGBDb250YWluZXIgZGltZW5zaW9ucy4gUmVwcmVzZW50cyB0aGUgZGltZW5zaW9ucyBvZiB0aGUgaWZyYW1lIG9yIG90aGVyCmNvbnRhaW5lciBob2xkaW5nIHRoZSBhcHAuIFNwZWNpZnkgZWl0aGVyIHdpZHRoIG9yIG1heFdpZHRoLCBhbmQgZWl0aGVyIGhlaWdodCBvciBtYXhIZWlnaHQuYCksbG9jYWxlOnAoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJVc2VyJ3MgbGFuZ3VhZ2UgYW5kIHJlZ2lvbiBwcmVmZXJlbmNlIGluIEJDUCA0NyBmb3JtYXQuIiksdGltZVpvbmU6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIlVzZXIncyB0aW1lem9uZSBpbiBJQU5BIGZvcm1hdC4iKSx1c2VyQWdlbnQ6cCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmllci4iKSxwbGF0Zm9ybTpqKFttKCJ3ZWIiKSxtKCJkZXNrdG9wIiksbSgibW9iaWxlIildKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJQbGF0Zm9ybSB0eXBlIGZvciByZXNwb25zaXZlIGRlc2lnbiBkZWNpc2lvbnMuIiksZGV2aWNlQ2FwYWJpbGl0aWVzOmYoe3RvdWNoOkQoKS5vcHRpb25hbCgpLmRlc2NyaWJlKCJXaGV0aGVyIHRoZSBkZXZpY2Ugc3VwcG9ydHMgdG91Y2ggaW5wdXQuIiksaG92ZXI6RCgpLm9wdGlvbmFsKCkuZGVzY3JpYmUoIldoZXRoZXIgdGhlIGRldmljZSBzdXBwb3J0cyBob3ZlciBpbnRlcmFjdGlvbnMuIil9KS5vcHRpb25hbCgpLmRlc2NyaWJlKCJEZXZpY2UgaW5wdXQgY2FwYWJpbGl0aWVzLiIpLHNhZmVBcmVhSW5zZXRzOmYoe3RvcDp6KCkuZGVzY3JpYmUoIlRvcCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpLHJpZ2h0OnooKS5kZXNjcmliZSgiUmlnaHQgc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxib3R0b206eigpLmRlc2NyaWJlKCJCb3R0b20gc2FmZSBhcmVhIGluc2V0IGluIHBpeGVscy4iKSxsZWZ0OnooKS5kZXNjcmliZSgiTGVmdCBzYWZlIGFyZWEgaW5zZXQgaW4gcGl4ZWxzLiIpfSkub3B0aW9uYWwoKS5kZXNjcmliZSgiTW9iaWxlIHNhZmUgYXJlYSBib3VuZGFyaWVzIGluIHBpeGVscy4iKX0pLnBhc3N0aHJvdWdoKCksZCQ9Zih7bWV0aG9kOm0oInVpL25vdGlmaWNhdGlvbnMvaG9zdC1jb250ZXh0LWNoYW5nZWQiKSxwYXJhbXM6JG0uZGVzY3JpYmUoIlBhcnRpYWwgY29udGV4dCB1cGRhdGUgY29udGFpbmluZyBvbmx5IGNoYW5nZWQgZmllbGRzLiIpfSk7Zih7bWV0aG9kOm0oInVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IikscGFyYW1zOmYoe2NvbnRlbnQ6dyhrbikub3B0aW9uYWwoKS5kZXNjcmliZSgiQ29udGV4dCBjb250ZW50IGJsb2NrcyAodGV4dCwgaW1hZ2UsIGV0Yy4pLiIpLHN0cnVjdHVyZWRDb250ZW50OlUocCgpLE8oKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKSkub3B0aW9uYWwoKS5kZXNjcmliZSgiU3RydWN0dXJlZCBjb250ZW50IGZvciBtYWNoaW5lLXJlYWRhYmxlIGNvbnRleHQgZGF0YS4iKX0pfSk7Zih7bWV0aG9kOm0oInVpL2luaXRpYWxpemUiKSxwYXJhbXM6Zih7YXBwSW5mbzpLci5kZXNjcmliZSgiQXBwIGlkZW50aWZpY2F0aW9uIChuYW1lIGFuZCB2ZXJzaW9uKS4iKSxhcHBDYXBhYmlsaXRpZXM6cyQuZGVzY3JpYmUoIkZlYXR1cmVzIGFuZCBjYXBhYmlsaXRpZXMgdGhpcyBhcHAgcHJvdmlkZXMuIikscHJvdG9jb2xWZXJzaW9uOnAoKS5kZXNjcmliZSgiUHJvdG9jb2wgdmVyc2lvbiB0aGlzIGFwcCBzdXBwb3J0cy4iKX0pfSk7dmFyIG0kPWYoe3Byb3RvY29sVmVyc2lvbjpwKCkuZGVzY3JpYmUoJ05lZ290aWF0ZWQgcHJvdG9jb2wgdmVyc2lvbiBzdHJpbmcgKGUuZy4sICIyMDI1LTExLTIxIikuJyksaG9zdEluZm86S3IuZGVzY3JpYmUoIkhvc3QgYXBwbGljYXRpb24gaWRlbnRpZmljYXRpb24gYW5kIHZlcnNpb24uIiksaG9zdENhcGFiaWxpdGllczphJC5kZXNjcmliZSgiRmVhdHVyZXMgYW5kIGNhcGFiaWxpdGllcyBwcm92aWRlZCBieSB0aGUgaG9zdC4iKSxob3N0Q29udGV4dDokbS5kZXNjcmliZSgiUmljaCBjb250ZXh0IGFib3V0IHRoZSBob3N0IGVudmlyb25tZW50LiIpfSkucGFzc3Rocm91Z2goKSxwJD17dGFyZ2V0OiJkcmFmdC0yMDIwLTEyIn07YXN5bmMgZnVuY3Rpb24gVXModCxuKXtsZXQgcj10WyJ+c3RhbmRhcmQiXTtpZihyLmpzb25TY2hlbWEpcmV0dXJuIHIuanNvblNjaGVtYVtuXShwJCk7aWYoci52ZW5kb3I9PT0iem9kIil7bGV0e3o6b309YXdhaXQgeG0oKCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnR2KSx2b2lkIDAsaW1wb3J0Lm1ldGEudXJsKTtyZXR1cm4gby50b0pTT05TY2hlbWEodCx7aW86bn0pfXRocm93IEVycm9yKGBTY2hlbWEgKHZlbmRvcjogJHtyLnZlbmRvcn0pIGRvZXMgbm90IGltcGxlbWVudCBTdGFuZGFyZCBKU09OIFNjaGVtYSAofnN0YW5kYXJkLmpzb25TY2hlbWEpLiBVc2UgYSBsaWJyYXJ5IHRoYXQgZG9lcyAoem9kIHY0LCBBcmtUeXBlLCBWYWxpYm90KSBvciB3cmFwIHlvdXIgc2NoZW1hIGFjY29yZGluZ2x5LmApfWFzeW5jIGZ1bmN0aW9uIFBzKHQsbixyPSIiKXtsZXQgbz1hd2FpdCB0WyJ+c3RhbmRhcmQiXS52YWxpZGF0ZShuKTtpZihvLmlzc3Vlcyl7bGV0IGU9by5pc3N1ZXMubWFwKGk9PntsZXQgYT1pLnBhdGg/Lm1hcChzPT50eXBlb2Ygcz09Im9iamVjdCI/cy5rZXk6cykuam9pbigiLiIpO3JldHVybiBhP2Ake2F9OiAke2kubWVzc2FnZX1gOmkubWVzc2FnZX0pLmpvaW4oIjsgIik7dGhyb3cgRXJyb3IocitlKX1yZXR1cm4gby52YWx1ZX1jbGFzcyBHYSBleHRlbmRzIEpoe19hcHBJbmZvO19jYXBhYmlsaXRpZXM7b3B0aW9ucztfaG9zdENhcGFiaWxpdGllcztfaG9zdEluZm87X2hvc3RDb250ZXh0O19yZWdpc3RlcmVkVG9vbHM9e307X2luaXRpYWxpemVkU2VudD0hMTtfYXNzZXJ0SW5pdGlhbGl6ZWQobil7aWYodGhpcy5faW5pdGlhbGl6ZWRTZW50KXJldHVybjtsZXQgcj1gW2V4dC1hcHBzXSBBcHAuJHtufSgpIGNhbGxlZCBiZWZvcmUgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIEF3YWl0IGFwcC5jb25uZWN0KCkgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QsIG9yIG1vdmUgZGF0YSBsb2FkaW5nIHRvIGFuIG9udG9vbHJlc3VsdCBoYW5kbGVyLmA7aWYodGhpcy5vcHRpb25zPy5zdHJpY3QpdGhyb3cgRXJyb3Iocik7Y29uc29sZS53YXJuKGAke3J9LiBUaGlzIHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS5gKX1ldmVudFNjaGVtYXM9e3Rvb2xpbnB1dDplJCx0b29saW5wdXRwYXJ0aWFsOnQkLHRvb2xyZXN1bHQ6bCQsdG9vbGNhbmNlbGxlZDpuJCxob3N0Y29udGV4dGNoYW5nZWQ6ZCR9O3N0YXRpYyBPTkVfU0hPVF9FVkVOVFM9bmV3IFNldChbInRvb2xpbnB1dCIsInRvb2xpbnB1dHBhcnRpYWwiLCJ0b29scmVzdWx0IiwidG9vbGNhbmNlbGxlZCJdKTtfZXZlckhhZExpc3RlbmVyPW5ldyBTZXQ7X2Fzc2VydEhhbmRsZXJUaW1pbmcobil7aWYoIUdhLk9ORV9TSE9UX0VWRU5UUy5oYXMobil8fHRoaXMuX2V2ZXJIYWRMaXN0ZW5lci5oYXMobil8fCh0aGlzLl9ldmVySGFkTGlzdGVuZXIuYWRkKG4pLCF0aGlzLl9pbml0aWFsaXplZFNlbnQpKXJldHVybjtsZXQgcj1gW2V4dC1hcHBzXSAiJHtTdHJpbmcobil9IiBoYW5kbGVyIHJlZ2lzdGVyZWQgYWZ0ZXIgY29ubmVjdCgpIGNvbXBsZXRlZCB0aGUgdWkvaW5pdGlhbGl6ZSBoYW5kc2hha2UuIFRoZSBob3N0IG1heSBoYXZlIGFscmVhZHkgc2VudCB0aGlzIG5vdGlmaWNhdGlvbi4gUmVnaXN0ZXIgaGFuZGxlcnMgYmVmb3JlIGNhbGxpbmcgYXBwLmNvbm5lY3QoKS5gO2lmKHRoaXMub3B0aW9ucz8uc3RyaWN0KXRocm93IEVycm9yKHIpO2NvbnNvbGUud2FybihyKX1zZXRFdmVudEhhbmRsZXIobixyKXtyJiZ0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKG4pLHN1cGVyLnNldEV2ZW50SGFuZGxlcihuLHIpfWFkZEV2ZW50TGlzdGVuZXIobixyKXt0aGlzLl9hc3NlcnRIYW5kbGVyVGltaW5nKG4pLHN1cGVyLmFkZEV2ZW50TGlzdGVuZXIobixyKX1vbkV2ZW50RGlzcGF0Y2gobixyKXtuPT09Imhvc3Rjb250ZXh0Y2hhbmdlZCImJih0aGlzLl9ob3N0Q29udGV4dD17Li4udGhpcy5faG9zdENvbnRleHQsLi4ucn0pfWNvbnN0cnVjdG9yKG4scj17fSxvPXthdXRvUmVzaXplOiEwfSl7c3VwZXIobyksdGhpcy5fYXBwSW5mbz1uLHRoaXMuX2NhcGFiaWxpdGllcz1yLHRoaXMub3B0aW9ucz1vLG8uYWxsb3dVbnNhZmVFdmFsfHxWKHtqaXRsZXNzOiEwfSksdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihCcixlPT4oY29uc29sZS5sb2coIlJlY2VpdmVkIHBpbmc6IixlLnBhcmFtcykse30pKSx0aGlzLnNldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIix2b2lkIDApfXJlZ2lzdGVyQ2FwYWJpbGl0aWVzKG4pe2lmKHRoaXMudHJhbnNwb3J0KXRocm93IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgY2FwYWJpbGl0aWVzIGFmdGVyIHRyYW5zcG9ydCBpcyBlc3RhYmxpc2hlZCIpO3RoaXMuX2NhcGFiaWxpdGllcz1GaCh0aGlzLl9jYXBhYmlsaXRpZXMsbil9cmVnaXN0ZXJUb29sKG4scixvKXtpZih0aGlzLl9yZWdpc3RlcmVkVG9vbHNbbl0pdGhyb3cgRXJyb3IoYFRvb2wgJHtufSBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRgKTtsZXQgZT10aGlzLGk9KCk9PntlLl9pbml0aWFsaXplZFNlbnQmJmUuX2NhcGFiaWxpdGllcy50b29scz8ubGlzdENoYW5nZWQmJmUuc2VuZFRvb2xMaXN0Q2hhbmdlZCgpfSxhPXIuaW5wdXRTY2hlbWEhPT12b2lkIDAscz17dGl0bGU6ci50aXRsZSxkZXNjcmlwdGlvbjpyLmRlc2NyaXB0aW9uLGlucHV0U2NoZW1hOnIuaW5wdXRTY2hlbWEsb3V0cHV0U2NoZW1hOnIub3V0cHV0U2NoZW1hLGFubm90YXRpb25zOnIuYW5ub3RhdGlvbnMsX21ldGE6ci5fbWV0YSxlbmFibGVkOiEwLGVuYWJsZSgpe3RoaXMuZW5hYmxlZD0hMCxpKCl9LGRpc2FibGUoKXt0aGlzLmVuYWJsZWQ9ITEsaSgpfSx1cGRhdGUoYyl7T2JqZWN0LmFzc2lnbih0aGlzLGMpLGkoKX0scmVtb3ZlKCl7ZS5fcmVnaXN0ZXJlZFRvb2xzW25dPT09cyYmKGRlbGV0ZSBlLl9yZWdpc3RlcmVkVG9vbHNbbl0saSgpKX0saGFuZGxlcjphc3luYyhjLHUpPT57aWYoIXMuZW5hYmxlZCl0aHJvdyBFcnJvcihgVG9vbCAke259IGlzIGRpc2FibGVkYCk7bGV0IGw7aWYoYSl7bGV0IGc9cy5pbnB1dFNjaGVtYSx2PWc/YXdhaXQgUHMoZyxjPz97fSxgSW52YWxpZCBpbnB1dCBmb3IgdG9vbCAke259OiBgKTpjPz97fTtsPWF3YWl0IG8odix1KX1lbHNlIGw9YXdhaXQgbyh1KTtyZXR1cm4gcy5vdXRwdXRTY2hlbWEmJiFsLmlzRXJyb3ImJihsLnN0cnVjdHVyZWRDb250ZW50PWF3YWl0IFBzKHMub3V0cHV0U2NoZW1hLGwuc3RydWN0dXJlZENvbnRlbnQsYEludmFsaWQgb3V0cHV0IGZvciB0b29sICR7bn06IGApKSxsfX07cmV0dXJuIHRoaXMuX3JlZ2lzdGVyZWRUb29sc1tuXT1zLCF0aGlzLl9jYXBhYmlsaXRpZXMudG9vbHMmJiF0aGlzLnRyYW5zcG9ydCYmdGhpcy5yZWdpc3RlckNhcGFiaWxpdGllcyh7dG9vbHM6e2xpc3RDaGFuZ2VkOiEwfX0pLHRoaXMuZW5zdXJlVG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQoKSxpKCksc31fdG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQ9ITE7ZW5zdXJlVG9vbEhhbmRsZXJzSW5pdGlhbGl6ZWQoKXt0aGlzLl90b29sSGFuZGxlcnNJbml0aWFsaXplZHx8KHRoaXMuX3Rvb2xIYW5kbGVyc0luaXRpYWxpemVkPSEwLHRoaXMub25jYWxsdG9vbD1hc3luYyhuLHIpPT57bGV0IG89dGhpcy5fcmVnaXN0ZXJlZFRvb2xzW24ubmFtZV07aWYoIW8pdGhyb3cgRXJyb3IoYFRvb2wgJHtuLm5hbWV9IG5vdCBmb3VuZGApO3JldHVybiBvLmhhbmRsZXIobi5hcmd1bWVudHMscil9LHRoaXMub25saXN0dG9vbHM9YXN5bmMobixyKT0+KHt0b29sczphd2FpdCBQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyh0aGlzLl9yZWdpc3RlcmVkVG9vbHMpLmZpbHRlcigoW28sZV0pPT5lLmVuYWJsZWQpLm1hcChhc3luYyhbbyxlXSk9PntsZXQgaT17bmFtZTpvLHRpdGxlOmUudGl0bGUsZGVzY3JpcHRpb246ZS5kZXNjcmlwdGlvbixpbnB1dFNjaGVtYTplLmlucHV0U2NoZW1hP2F3YWl0IFVzKGUuaW5wdXRTY2hlbWEsImlucHV0Iik6e3R5cGU6Im9iamVjdCIscHJvcGVydGllczp7fX19O3JldHVybiBlLm91dHB1dFNjaGVtYSYmKGkub3V0cHV0U2NoZW1hPWF3YWl0IFVzKGUub3V0cHV0U2NoZW1hLCJvdXRwdXQiKSksZS5hbm5vdGF0aW9ucyYmKGkuYW5ub3RhdGlvbnM9ZS5hbm5vdGF0aW9ucyksZS5fbWV0YSYmKGkuX21ldGE9ZS5fbWV0YSksaX0pKX0pKX1hc3luYyBzZW5kVG9vbExpc3RDaGFuZ2VkKG49e30pe3RoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJzZW5kVG9vbExpc3RDaGFuZ2VkIiksYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWQiLHBhcmFtczpufSl9Z2V0SG9zdENhcGFiaWxpdGllcygpe3JldHVybiB0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzfWdldEhvc3RWZXJzaW9uKCl7cmV0dXJuIHRoaXMuX2hvc3RJbmZvfWdldEhvc3RDb250ZXh0KCl7cmV0dXJuIHRoaXMuX2hvc3RDb250ZXh0fWdldCBvbnRvb2xpbnB1dCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGlucHV0Iil9c2V0IG9udG9vbGlucHV0KG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXQiLG4pfWdldCBvbnRvb2xpbnB1dHBhcnRpYWwoKXtyZXR1cm4gdGhpcy5nZXRFdmVudEhhbmRsZXIoInRvb2xpbnB1dHBhcnRpYWwiKX1zZXQgb250b29saW5wdXRwYXJ0aWFsKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJ0b29saW5wdXRwYXJ0aWFsIixuKX1nZXQgb250b29scmVzdWx0KCl7cmV0dXJuIHRoaXMuZ2V0RXZlbnRIYW5kbGVyKCJ0b29scmVzdWx0Iil9c2V0IG9udG9vbHJlc3VsdChuKXt0aGlzLnNldEV2ZW50SGFuZGxlcigidG9vbHJlc3VsdCIsbil9Z2V0IG9udG9vbGNhbmNlbGxlZCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigidG9vbGNhbmNlbGxlZCIpfXNldCBvbnRvb2xjYW5jZWxsZWQobil7dGhpcy5zZXRFdmVudEhhbmRsZXIoInRvb2xjYW5jZWxsZWQiLG4pfWdldCBvbmhvc3Rjb250ZXh0Y2hhbmdlZCgpe3JldHVybiB0aGlzLmdldEV2ZW50SGFuZGxlcigiaG9zdGNvbnRleHRjaGFuZ2VkIil9c2V0IG9uaG9zdGNvbnRleHRjaGFuZ2VkKG4pe3RoaXMuc2V0RXZlbnRIYW5kbGVyKCJob3N0Y29udGV4dGNoYW5nZWQiLG4pfV9vbnRlYXJkb3duO2dldCBvbnRlYXJkb3duKCl7cmV0dXJuIHRoaXMuX29udGVhcmRvd259c2V0IG9udGVhcmRvd24obil7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbnRlYXJkb3duIix0aGlzLl9vbnRlYXJkb3duLG4pLHRoaXMuX29udGVhcmRvd249bix0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihvJCwocixvKT0+e2lmKCF0aGlzLl9vbnRlYXJkb3duKXRocm93IEVycm9yKCJObyBvbnRlYXJkb3duIGhhbmRsZXIgc2V0Iik7cmV0dXJuIHRoaXMuX29udGVhcmRvd24oci5wYXJhbXMsbyl9KX1fb25jYWxsdG9vbDtnZXQgb25jYWxsdG9vbCgpe3JldHVybiB0aGlzLl9vbmNhbGx0b29sfXNldCBvbmNhbGx0b29sKG4pe3RoaXMud2FybklmUmVxdWVzdEhhbmRsZXJSZXBsYWNlZCgib25jYWxsdG9vbCIsdGhpcy5fb25jYWxsdG9vbCxuKSx0aGlzLl9vbmNhbGx0b29sPW4sdGhpcy5yZXBsYWNlUmVxdWVzdEhhbmRsZXIoZm0sKHIsbyk9PntpZighdGhpcy5fb25jYWxsdG9vbCl0aHJvdyBFcnJvcigiTm8gb25jYWxsdG9vbCBoYW5kbGVyIHNldCIpO3JldHVybiB0aGlzLl9vbmNhbGx0b29sKHIucGFyYW1zLG8pfSl9X29ubGlzdHRvb2xzO2dldCBvbmxpc3R0b29scygpe3JldHVybiB0aGlzLl9vbmxpc3R0b29sc31zZXQgb25saXN0dG9vbHMobil7dGhpcy53YXJuSWZSZXF1ZXN0SGFuZGxlclJlcGxhY2VkKCJvbmxpc3R0b29scyIsdGhpcy5fb25saXN0dG9vbHMsbiksdGhpcy5fb25saXN0dG9vbHM9bix0aGlzLnJlcGxhY2VSZXF1ZXN0SGFuZGxlcihwbSwocixvKT0+e2lmKCF0aGlzLl9vbmxpc3R0b29scyl0aHJvdyBFcnJvcigiTm8gb25saXN0dG9vbHMgaGFuZGxlciBzZXQiKTtyZXR1cm4gdGhpcy5fb25saXN0dG9vbHMoci5wYXJhbXMsbyl9KX1hc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kKG4pe3N3aXRjaChuKXtjYXNlInNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiOmlmKCF0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzPy5zYW1wbGluZyl0aHJvdyBFcnJvcihgSG9zdCBkb2VzIG5vdCBzdXBwb3J0IHNhbXBsaW5nIChyZXF1aXJlZCBmb3IgJHtufSlgKTticmVha319YXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5KG4pe3N3aXRjaChuKXtjYXNlInRvb2xzL2NhbGwiOmNhc2UidG9vbHMvbGlzdCI6aWYoIXRoaXMuX2NhcGFiaWxpdGllcy50b29scyl0aHJvdyBFcnJvcihgQ2xpZW50IGRvZXMgbm90IHN1cHBvcnQgdG9vbCBjYXBhYmlsaXR5IChyZXF1aXJlZCBmb3IgJHtufSlgKTtyZXR1cm47Y2FzZSJwaW5nIjpjYXNlInVpL3Jlc291cmNlLXRlYXJkb3duIjpyZXR1cm47ZGVmYXVsdDp0aHJvdyBFcnJvcihgTm8gaGFuZGxlciBmb3IgbWV0aG9kICR7bn0gcmVnaXN0ZXJlZGApfX1hc3NlcnROb3RpZmljYXRpb25DYXBhYmlsaXR5KG4pe31hc3NlcnRUYXNrQ2FwYWJpbGl0eShuKXt0aHJvdyBFcnJvcigiVGFza3MgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gTUNQIEFwcHMiKX1hc3NlcnRUYXNrSGFuZGxlckNhcGFiaWxpdHkobil7dGhyb3cgRXJyb3IoIlRhc2sgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gTUNQIEFwcHMiKX1hc3luYyBjYWxsU2VydmVyVG9vbChuLHIpe2lmKHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJjYWxsU2VydmVyVG9vbCIpLHR5cGVvZiBuPT0ic3RyaW5nIil0aHJvdyBFcnJvcihgY2FsbFNlcnZlclRvb2woKSBleHBlY3RzIGFuIG9iamVjdCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIGJ1dCByZWNlaXZlZCBhIHN0cmluZyAoIiR7bn0iKS4gRGlkIHlvdSBtZWFuOiBjYWxsU2VydmVyVG9vbCh7IG5hbWU6ICIke259IiwgYXJndW1lbnRzOiB7IC4uLiB9IH0pP2ApO3JldHVybiBhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoidG9vbHMvY2FsbCIscGFyYW1zOm59LFdyLHtvbnByb2dyZXNzOigpPT57fSxyZXNldFRpbWVvdXRPblByb2dyZXNzOiEwLC4uLnJ9KX1hc3luYyByZWFkU2VydmVyUmVzb3VyY2UobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInJlYWRTZXJ2ZXJSZXNvdXJjZSIpLGF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJyZXNvdXJjZXMvcmVhZCIscGFyYW1zOm59LGxtLHIpfWFzeW5jIGxpc3RTZXJ2ZXJSZXNvdXJjZXMobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoImxpc3RTZXJ2ZXJSZXNvdXJjZXMiKSxhd2FpdCB0aGlzLnJlcXVlc3Qoe21ldGhvZDoicmVzb3VyY2VzL2xpc3QiLHBhcmFtczpufSx1bSxyKX1hc3luYyBjcmVhdGVTYW1wbGluZ01lc3NhZ2UobixyKXt0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiY3JlYXRlU2FtcGxpbmdNZXNzYWdlIik7bGV0IG89bi50b29scz9obTp2bTtyZXR1cm4gYXdhaXQgdGhpcy5yZXF1ZXN0KHttZXRob2Q6InNhbXBsaW5nL2NyZWF0ZU1lc3NhZ2UiLHBhcmFtczpufSxvLHIpfXNlbmRNZXNzYWdlKG4scil7cmV0dXJuIHRoaXMuX2Fzc2VydEluaXRpYWxpemVkKCJzZW5kTWVzc2FnZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9tZXNzYWdlIixwYXJhbXM6bn0sUWgscil9c2VuZExvZyhuKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoibm90aWZpY2F0aW9ucy9tZXNzYWdlIixwYXJhbXM6bn0pfXVwZGF0ZU1vZGVsQ29udGV4dChuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgidXBkYXRlTW9kZWxDb250ZXh0IiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL3VwZGF0ZS1tb2RlbC1jb250ZXh0IixwYXJhbXM6bn0sT2Escil9b3BlbkxpbmsobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoIm9wZW5MaW5rIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL29wZW4tbGluayIscGFyYW1zOm59LFhoLHIpfXNlbmRPcGVuTGluaz10aGlzLm9wZW5MaW5rO2Rvd25sb2FkRmlsZShuLHIpe3JldHVybiB0aGlzLl9hc3NlcnRJbml0aWFsaXplZCgiZG93bmxvYWRGaWxlIiksdGhpcy5yZXF1ZXN0KHttZXRob2Q6InVpL2Rvd25sb2FkLWZpbGUiLHBhcmFtczpufSxZaCxyKX1yZXF1ZXN0VGVhcmRvd24obj17fSl7cmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHttZXRob2Q6InVpL25vdGlmaWNhdGlvbnMvcmVxdWVzdC10ZWFyZG93biIscGFyYW1zOm59KX1yZXF1ZXN0RGlzcGxheU1vZGUobixyKXtyZXR1cm4gdGhpcy5fYXNzZXJ0SW5pdGlhbGl6ZWQoInJlcXVlc3REaXNwbGF5TW9kZSIpLHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9yZXF1ZXN0LWRpc3BsYXktbW9kZSIscGFyYW1zOm59LGMkLHIpfXNlbmRTaXplQ2hhbmdlZChuKXtyZXR1cm4gdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9zaXplLWNoYW5nZWQiLHBhcmFtczpufSl9c2V0dXBTaXplQ2hhbmdlZE5vdGlmaWNhdGlvbnMoKXtsZXQgbj0hMSxyPTAsbz0wLGU9KCk9PntufHwobj0hMCxyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PntuPSExO2xldCBhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxzPWEuc3R5bGUuaGVpZ2h0O2Euc3R5bGUuaGVpZ2h0PSJtYXgtY29udGVudCI7bGV0IGM9TWF0aC5jZWlsKGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KTthLnN0eWxlLmhlaWdodD1zO2xldCB1PU1hdGguY2VpbCh3aW5kb3cuaW5uZXJXaWR0aCk7KHUhPT1yfHxjIT09bykmJihyPXUsbz1jLHRoaXMuc2VuZFNpemVDaGFuZ2VkKHt3aWR0aDp1LGhlaWdodDpjfSkpfSkpfTtlKCk7bGV0IGk9bmV3IFJlc2l6ZU9ic2VydmVyKGUpO3JldHVybiBpLm9ic2VydmUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSxpLm9ic2VydmUoZG9jdW1lbnQuYm9keSksKCk9PmkuZGlzY29ubmVjdCgpfWFzeW5jIGNvbm5lY3Qobj1uZXcgS2god2luZG93LnBhcmVudCx3aW5kb3cucGFyZW50KSxyKXtpZih0aGlzLnRyYW5zcG9ydCl0aHJvdyBFcnJvcigiQXBwIGlzIGFscmVhZHkgY29ubmVjdGVkLiBDYWxsIGNsb3NlKCkgYmVmb3JlIGNvbm5lY3RpbmcgYWdhaW4uIik7dGhpcy5faW5pdGlhbGl6ZWRTZW50PSExLGF3YWl0IHN1cGVyLmNvbm5lY3Qobik7dHJ5e2xldCBvPWF3YWl0IHRoaXMucmVxdWVzdCh7bWV0aG9kOiJ1aS9pbml0aWFsaXplIixwYXJhbXM6e2FwcENhcGFiaWxpdGllczp0aGlzLl9jYXBhYmlsaXRpZXMsYXBwSW5mbzp0aGlzLl9hcHBJbmZvLHByb3RvY29sVmVyc2lvbjpIaH19LG0kLHIpO2lmKG89PT12b2lkIDApdGhyb3cgRXJyb3IoYFNlcnZlciBzZW50IGludmFsaWQgaW5pdGlhbGl6ZSByZXN1bHQ6ICR7b31gKTt0aGlzLl9ob3N0Q2FwYWJpbGl0aWVzPW8uaG9zdENhcGFiaWxpdGllcyx0aGlzLl9ob3N0SW5mbz1vLmhvc3RJbmZvLHRoaXMuX2hvc3RDb250ZXh0PW8uaG9zdENvbnRleHQsYXdhaXQgdGhpcy5ub3RpZmljYXRpb24oe21ldGhvZDoidWkvbm90aWZpY2F0aW9ucy9pbml0aWFsaXplZCJ9KSx0aGlzLl9pbml0aWFsaXplZFNlbnQ9ITAsdGhpcy5vcHRpb25zPy5hdXRvUmVzaXplJiZ0aGlzLnNldHVwU2l6ZUNoYW5nZWROb3RpZmljYXRpb25zKCl9Y2F0Y2gobyl7dGhyb3cgdGhpcy5jbG9zZSgpLG99fX1jb25zdCBEZT10PT5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSxmJD17VVNEOjIsRVVSOjIsR0JQOjIsSlBZOjAsVVNEQzo2LFVTRFQ6NixFVVJDOjZ9LG5pPXtVU0Q6IiQiLEVVUjoi4oKsIixHQlA6IsKjIixKUFk6IsKlIn0sZyQ9bmV3IFNldChbIlVTREMiLCJVU0RUIiwiRVVSQyJdKSxPcz17VVNEQzonPHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiPjxnIGZpbGw9Im5vbmUiPjxjaXJjbGUgZmlsbD0iIzNFNzNDNCIgY3g9IjE2IiBjeT0iMTYiIHI9IjE2Ii8+PGcgZmlsbD0iI0ZGRiI+PHBhdGggZD0iTTIwLjAyMiAxOC4xMjRjMC0yLjEyNC0xLjI4LTIuODUyLTMuODQtMy4xNTYtMS44MjgtLjI0My0yLjE5My0uNzI4LTIuMTkzLTEuNTc4IDAtLjg1LjYxLTEuMzk2IDEuODI4LTEuMzk2IDEuMDk3IDAgMS43MDcuMzY0IDIuMDExIDEuMjc1YS40NTguNDU4IDAgMDAuNDI3LjMwM2guOTc1YS40MTYuNDE2IDAgMDAuNDI3LS40MjV2LS4wNmEzLjA0IDMuMDQgMCAwMC0yLjc0My0yLjQ4OVY5LjE0MmMwLS4yNDMtLjE4My0uNDI1LS40ODctLjQ4NmgtLjkxNWMtLjI0MyAwLS40MjYuMTgyLS40ODcuNDg2djEuMzk2Yy0xLjgyOS4yNDItMi45ODYgMS40NTYtMi45ODYgMi45NzQgMCAyLjAwMiAxLjIxOCAyLjc5MSAzLjc3OCAzLjA5NSAxLjcwNy4zMDMgMi4yNTUuNjY4IDIuMjU1IDEuNjM5IDAgLjk3LS44NTMgMS42MzgtMi4wMTEgMS42MzgtMS41ODUgMC0yLjEzMy0uNjY3LTIuMzE2LTEuNTc4LS4wNi0uMjQyLS4yNDQtLjM2NC0uNDI3LS4zNjRoLTEuMDM2YS40MTYuNDE2IDAgMDAtLjQyNi40MjV2LjA2Yy4yNDMgMS41MTggMS4yMTkgMi42MSAzLjIzIDIuOTE0djEuNDU3YzAgLjI0Mi4xODMuNDI1LjQ4Ny40ODVoLjkxNWMuMjQzIDAgLjQyNi0uMTgyLjQ4Ny0uNDg1VjIxLjM0YzEuODI5LS4zMDMgMy4wNDctMS41NzggMy4wNDctMy4yMTd6Ii8+PHBhdGggZD0iTTEyLjg5MiAyNC40OTdjLTQuNzU0LTEuNy03LjE5Mi02Ljk4LTUuNDI0LTExLjY1My45MTQtMi41NSAyLjkyNS00LjQ5MSA1LjQyNC01LjQwMi4yNDQtLjEyMS4zNjUtLjMwMy4zNjUtLjYwN3YtLjg1YzAtLjI0Mi0uMTIxLS40MjQtLjM2NS0uNDg1LS4wNjEgMC0uMTgzIDAtLjI0NC4wNmExMC44OTUgMTAuODk1IDAgMDAtNy4xMyAxMy43MTdjMS4wOTYgMy40IDMuNzE3IDYuMDEgNy4xMyA3LjEwMi4yNDQuMTIxLjQ4OCAwIC41NDgtLjI0My4wNjEtLjA2LjA2MS0uMTIyLjA2MS0uMjQzdi0uODVjMC0uMTgyLS4xODItLjQyNC0uMzY1LS41NDZ6bTYuNDYtMTguOTM2Yy0uMjQ0LS4xMjItLjQ4OCAwLS41NDguMjQyLS4wNjEuMDYxLS4wNjEuMTIyLS4wNjEuMjQzdi44NWMwIC4yNDMuMTgyLjQ4NS4zNjUuNjA3IDQuNzU0IDEuNyA3LjE5MiA2Ljk4IDUuNDI0IDExLjY1My0uOTE0IDIuNTUtMi45MjUgNC40OTEtNS40MjQgNS40MDItLjI0NC4xMjEtLjM2NS4zMDMtLjM2NS42MDd2Ljg1YzAgLjI0Mi4xMjEuNDI0LjM2NS40ODUuMDYxIDAgLjE4MyAwIC4yNDQtLjA2YTEwLjg5NSAxMC44OTUgMCAwMDcuMTMtMTMuNzE3Yy0xLjA5Ni0zLjQ2LTMuNzc4LTYuMDctNy4xMy03LjE2MnoiLz48L2c+PC9nPjwvc3ZnPicsVVNEVDonPHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiMyNkExN0IiLz48cGF0aCBmaWxsPSIjRkZGIiBkPSJNMTcuOTIyIDE3LjM4M3YtLjAwMmMtLjExLjAwOC0uNjc3LjA0Mi0xLjk0Mi4wNDItMS4wMSAwLTEuNzIxLS4wMy0xLjk3MS0uMDQydi4wMDNjLTMuODg4LS4xNzEtNi43OS0uODQ4LTYuNzktMS42NTggMC0uODA5IDIuOTAyLTEuNDg2IDYuNzktMS42NnYyLjY0NGMuMjU0LjAxOC45ODIuMDYxIDEuOTg4LjA2MSAxLjIwNyAwIDEuODEyLS4wNSAxLjkyNS0uMDZ2LTIuNjQzYzMuODguMTczIDYuNzc1Ljg1IDYuNzc1IDEuNjU4IDAgLjgxLTIuODk1IDEuNDg1LTYuNzc1IDEuNjU3bTAtMy41OXYtMi4zNjZoNS40MTRWNy44MTlIOC41OTV2My42MDhoNS40MTR2Mi4zNjVjLTQuNC4yMDItNy43MDkgMS4wNzQtNy43MDkgMi4xMTggMCAxLjA0NCAzLjMwOSAxLjkxNSA3LjcwOSAyLjExOHY3LjU4MmgzLjkxM3YtNy41ODRjNC4zOTMtLjIwMiA3LjY5NC0xLjA3MyA3LjY5NC0yLjExNiAwLTEuMDQzLTMuMzAxLTEuOTE0LTcuNjk0LTIuMTE3Ii8+PC9nPjwvc3ZnPid9LHYkPSh0LG4pPT57Y29uc3Qgcj1mJFsobnx8IiIpLnRvVXBwZXJDYXNlKCldPz8yLG89dDwwLGU9U3RyaW5nKE1hdGguYWJzKHQpKS5wYWRTdGFydChyKzEsIjAiKSxpPWUuc2xpY2UoMCxlLmxlbmd0aC1yKS5yZXBsYWNlKC9cQig/PShcZHszfSkrKD8hXGQpKS9nLCIsIiksYT1yPjA/YC4ke2Uuc2xpY2UoZS5sZW5ndGgtcil9YDoiIjtyZXR1cm5gJHtvPyItIjoiIn0ke2l9JHthfWB9LFJuPSh0LG4pPT57Y29uc3Qgcj0obnx8IiIpLnRvVXBwZXJDYXNlKCk7bGV0IG89diQodCxyKTtpZihnJC5oYXMocikmJm8uaW5jbHVkZXMoIi4iKSl7bz1vLnJlcGxhY2UoLzArJC8sIiIpLnJlcGxhY2UoL1wuJC8sIiIpO2NvbnN0IGU9by5pbmRleE9mKCIuIik7ZTwwP28rPSIuMDAiOm8ubGVuZ3RoLWUtMTwyJiYobz1gJHtvfSR7IjAiLnJlcGVhdCgyLShvLmxlbmd0aC1lLTEpKX1gKX1yZXR1cm4gb30sRHM9KHQsbik9PmAke25pWyhufHwiIikudG9VcHBlckNhc2UoKV0/PyIifSR7Um4odCxuKX1gLE09dD0+U3RyaW5nKHQpLnJlcGxhY2UoL1smPD4iJ10vZyxuPT4oeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyJ9KVtuXSksX209dD0+e2NvbnN0IG49bmV3IERhdGUodCk7cmV0dXJuIE51bWJlci5pc05hTihuLmdldFRpbWUoKSk/IiI6bi50b0lTT1N0cmluZygpLnNsaWNlKDAsMTApfSxYYT0odCxuKT0+e0RlKCJraW5kIikudGV4dENvbnRlbnQ9dCxEZSgibWVyY2hhbnQiKS50ZXh0Q29udGVudD1uPz8iIn0saCQ9e3BlbmRpbmdfcGF5bWVudDoicGVuZGluZyBwYXltZW50In0sYm09dD0+YDxzcGFuIGNsYXNzPSJiYWRnZSBpcy0ke00odCl9Ij48c3BhbiBjbGFzcz0iZG90Ij48L3NwYW4+JHtNKGgkW3RdPz90LnJlcGxhY2UoL18vZywiICIpKX08L3NwYW4+YCwkJD10PT57Y29uc3Qgbj0odHx8IiIpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIE9zW25dP2A8ZGl2IGNsYXNzPSJ0b2sgbG9nbyI+JHtPc1tuXX08L2Rpdj5gOm5pW25dP2A8ZGl2IGNsYXNzPSJ0b2siPiR7TShuaVtuXSl9PC9kaXY+YDpgPGRpdiBjbGFzcz0idG9rIGNvZGUiPiR7TShuLnNsaWNlKDAsNCkpfTwvZGl2PmB9LF8kPXQ9PmA8ZGl2IGNsYXNzPSJjY3kiPiR7TSgodHx8IiIpLnRvVXBwZXJDYXNlKCkpfTwvZGl2PmAsYiQ9dD0+e2Z0PW51bGwsWGEoIkN1cmxlc3Mgd2FsbGV0Iix0Lm1lcmNoYW50SWQpO2NvbnN0IG49dC5jdXJsZXNzV2FsbGV0Pz9bXTtpZighbi5sZW5ndGgpe0RlKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+Tm8gd2FsbGV0IGJhbGFuY2UgeWV0LjwvZGl2Pic7cmV0dXJufURlKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJ3YWwiPiR7bi5tYXAocj0+YDxkaXYgY2xhc3M9Indyb3ciPiR7JCQoci5jdXJyZW5jeSl9JHtfJChyLmN1cnJlbmN5KX0KICAgICAgICA8ZGl2IGNsYXNzPSJudW1zIj48ZGl2IGNsYXNzPSJhdiI+JHtEcyhyLmF2YWlsYWJsZSxyLmN1cnJlbmN5KX08L2Rpdj48ZGl2IGNsYXNzPSJmeiI+ZnJvemVuICR7RHMoci5mcm96ZW4sci5jdXJyZW5jeSl9PC9kaXY+PC9kaXY+CiAgICAgIDwvZGl2PmApLmpvaW4oIiIpfTwvZGl2PmB9LHkkPXQ9Pntjb25zdCBuPSh0LmxpbmVJdGVtcz8/W10pLm1hcChyPT5NKGAke3IubmFtZX0ke3IucXVhbnRpdHk+MT9gIMOXJHtyLnF1YW50aXR5fWA6IiJ9YCkpLmpvaW4oIiwgIil8fE0oU3RyaW5nKHQuaWQpKTtyZXR1cm5gPGRpdiBjbGFzcz0ib3JkZXIgY2xpY2thYmxlIiBkYXRhLW9pZD0iJHtNKFN0cmluZyh0LmlkKSl9Ij4KICAgIDxkaXYgY2xhc3M9InRpdGxlIj4ke259PC9kaXY+CiAgICAke2JtKFN0cmluZyh0LnN0YXR1cz8/IiIpKX0KICAgIDxkaXYgY2xhc3M9ImFtdCI+JHtSbih0LmFtb3VudCx0LmN1cnJlbmN5KX08c3BhbiBjbGFzcz0iY2N5Ij4ke00odC5jdXJyZW5jeSl9PC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0id2hlbiI+JHtfbSh0LmNyZWF0ZWRBdCl9PC9kaXY+CiAgPC9kaXY+YH0sR3I9MTA7bGV0IHBlPTAsVG49bnVsbCxmdD1udWxsO2NvbnN0IHltPXQ9PntUbj10LGZ0PW51bGwsWGEoIk9yZGVycyIsdC5tZXJjaGFudElkKTtjb25zdCBuPXQub3JkZXJzPz9bXTtpZighbi5sZW5ndGgpe0RlKCJjb250ZW50IikuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJlbXB0eSI+Tm8gb3JkZXJzIHlldC48L2Rpdj4nO3JldHVybn1jb25zdCByPU1hdGguY2VpbChuLmxlbmd0aC9Hcik7cGU9TWF0aC5tYXgoMCxNYXRoLm1pbihwZSxyLTEpKTtjb25zdCBvPSgpPT57cGU9TWF0aC5tYXgoMCxNYXRoLm1pbihwZSxyLTEpKTtjb25zdCBlPXBlKkdyLGk9bi5zbGljZShlLGUrR3IpLm1hcCh5JCkuam9pbigiIiksYT1yPjE/YDxkaXYgY2xhc3M9InBhZ2VyIj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0ib3AtcHJldiIke3BlPT09MD8iIGRpc2FibGVkIjoiIn0+4oC5IFByZXY8L2J1dHRvbj4KICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBhZ2VpbmZvIj5QYWdlICR7cGUrMX0gLyAke3J9IMK3ICR7bi5sZW5ndGh9IG9yZGVyczwvc3Bhbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0ib3AtbmV4dCIke3BlPj1yLTE/IiBkaXNhYmxlZCI6IiJ9Pk5leHQg4oC6PC9idXR0b24+CiAgICAgICAgICA8L2Rpdj5gOiIiO0RlKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJvcmRlcnMiPiR7aX08L2Rpdj4ke2F9YCxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3AtcHJldiIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntwZS09MSxvKCl9KSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3AtbmV4dCIpPy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9PntwZSs9MSxvKCl9KTtmb3IoY29uc3QgcyBvZiBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5vcmRlci5jbGlja2FibGUiKSkpcy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsKCk9Pntjb25zdCBjPW4uZmluZCh1PT5TdHJpbmcodS5pZCk9PT1zLmRhdGFzZXQub2lkKTtjJiZrJCh0LGMpfSl9O28oKX0sayQ9KHQsbik9Pntjb25zdCByPVN0cmluZyhuLmlkKTtmdD1yO2NvbnN0IG89e21lcmNoYW50SWQ6dC5tZXJjaGFudElkLG1vZGU6dC5tb2RlLG9yZGVyOm59O2puKHsuLi5vLHBheW1lbnQ6dm9pZCAwfSksQWUuY2FsbFNlcnZlclRvb2woe25hbWU6ImdldF9vcmRlciIsYXJndW1lbnRzOntvcmRlcklkOm4uaWR9fSkudGhlbihlPT57ZnQ9PT1yJiZqbihlPy5zdHJ1Y3R1cmVkQ29udGVudD8/ey4uLm8scGF5bWVudDpudWxsfSl9KS5jYXRjaCgoKT0+e2Z0PT09ciYmam4oey4uLm8scGF5bWVudDpudWxsfSl9KX0sUyQ9dD0+e2lmKHQ9PT12b2lkIDApcmV0dXJuJzxzcGFuIGNsYXNzPSJtdXRlZCI+bG9hZGluZ+KApjwvc3Bhbj4nO2lmKCF0KXJldHVybic8c3BhbiBjbGFzcz0ibXV0ZWQiPuKAlDwvc3Bhbj4nO2NvbnN0IG49dC5sYXN0ND9gIOKAouKAouKAouKAoiAke00oU3RyaW5nKHQubGFzdDQpKX1gOiIiO3JldHVybmA8c3BhbiBjbGFzcz0iYnJhbmQiPiR7TShTdHJpbmcodC5icmFuZD8/ImNhcmQiKSl9PC9zcGFuPiR7bn1gfSxJZT0odCxuKT0+YDxkaXYgY2xhc3M9Imt2Ij48c3BhbiBjbGFzcz0iayI+JHtNKHQpfTwvc3Bhbj48c3BhbiBjbGFzcz0idiI+JHtufTwvc3Bhbj48L2Rpdj5gLHhuPSh0LG4pPT5uP2A8ZGl2IGNsYXNzPSJvZC1zZWMiPjxkaXYgY2xhc3M9Im9kLXNlYy1oIj4ke00odCl9PC9kaXY+JHtufTwvZGl2PmA6IiIsTnM9dD0+IXR8fHR5cGVvZiB0IT0ib2JqZWN0Ij8iIjpPYmplY3QuZW50cmllcyh0KS5maWx0ZXIoKFssbl0pPT5uIT1udWxsJiZuIT09IiImJnR5cGVvZiBuIT0ib2JqZWN0IikubWFwKChbbixyXSk9PkllKG4ucmVwbGFjZSgvXy9nLCIgIiksTShTdHJpbmcocikpKSkuam9pbigiIiksam49dD0+e2NvbnN0IG49dC5vcmRlcjtpZighbilyZXR1cm47WGEoIk9yZGVyIix0Lm1lcmNoYW50SWQpO2NvbnN0IHI9dC5wYXltZW50Pz9uLnBheW1lbnRNZXRob2Qsbz0obi5saW5lSXRlbXM/P1tdKS5tYXAobD0+YDxkaXYgY2xhc3M9ImxpIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsaS1uYW1lIj4ke00obC5uYW1lKX08L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJsaS1xdHkiPsOXJHtNKFN0cmluZyhsLnF1YW50aXR5KSl9PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibGktYW10Ij4ke1JuKChsLnVuaXRQcmljZT8/MCkqKGwucXVhbnRpdHk/PzEpLG4uY3VycmVuY3kpfSAke00obi5jdXJyZW5jeSl9PC9kaXY+CiAgICAgIDwvZGl2PmApLmpvaW4oIiIpLGU9cj9bci50eXBlLHIuZnVuZGluZ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKToiIixpPXI/LnJlZmVyZW5jZT8/bi5yYWlsUmVmZXJlbmNlLGE9W24ucHJvdG9jb2w/U3RyaW5nKG4ucHJvdG9jb2wpLnRvVXBwZXJDYXNlKCk6IiIsbi5yYWlsPz9yPy5wcm92aWRlcl0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiDCtyAiKSxzPShhP0llKCJTb3VyY2UiLE0oYSkpOiIiKStJZSgiQ2FyZCIsUyQocikpKyhlP0llKCJNZXRob2QiLE0oZSkpOiIiKSsocj8ud2FsbGV0P0llKCJXYWxsZXQiLE0oU3RyaW5nKHIud2FsbGV0KSkpOiIiKSsoaT9JZSgiUmVmZXJlbmNlIixgPHNwYW4gY2xhc3M9Im1vbm8iPiR7TShTdHJpbmcoaSkpfTwvc3Bhbj5gKToiIiksYz1OcyhuLmJ1eWVyKSsobi5jdXN0b21lcklkP0llKCJDdXN0b21lciIsYDxzcGFuIGNsYXNzPSJtb25vIj4ke00oU3RyaW5nKG4uY3VzdG9tZXJJZCkpfTwvc3Bhbj5gKToiIiksdT1Ubj8nPGJ1dHRvbiBpZD0ib2QtYmFjayIgY2xhc3M9ImJhY2siPuKAuSBPcmRlcnM8L2J1dHRvbj4nOiIiO0RlKCJjb250ZW50IikuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJkZXRhaWwiPgogICAgJHt1fQogICAgPGRpdiBjbGFzcz0ib2QtaGVybyI+CiAgICAgIDxkaXYgY2xhc3M9Im9kLXRvdGFsIj4ke1JuKG4uYW1vdW50LG4uY3VycmVuY3kpfSA8c3BhbiBjbGFzcz0iY2N5Ij4ke00obi5jdXJyZW5jeSl9PC9zcGFuPjwvZGl2PgogICAgICAke2JtKFN0cmluZyhuLnN0YXR1cz8/IiIpKX0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0ib2Qtc3ViIj4ke19tKG4uY3JlYXRlZEF0KX0gwrcgPHNwYW4gY2xhc3M9Im1vbm8iPiR7TShuLmlkKX08L3NwYW4+PC9kaXY+CiAgICAke3huKCJJdGVtcyIsb3x8JzxkaXYgY2xhc3M9ImVtcHR5Ij5ObyBpdGVtcy48L2Rpdj4nKX0KICAgICR7eG4oIlBheW1lbnQiLHMpfQogICAgJHt4bigiQnV5ZXIiLGMpfQogICAgJHt4bigiRGV0YWlscyIsTnMobi5tZXRhZGF0YSkpfQogIDwvZGl2PmAsZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9kLWJhY2siKT8uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCgpPT57VG4mJnltKFRuKX0pfSxrbT10PT57dCYmKHQub3JkZXI/am4odCk6QXJyYXkuaXNBcnJheSh0LmN1cmxlc3NXYWxsZXQpP2IkKHQpOkFycmF5LmlzQXJyYXkodC5vcmRlcnMpJiZ5bSh0KSl9LFNtPXQ9Pntjb25zdCBuPXQ/LnN0eWxlcz8udmFyaWFibGVzO2lmKG4pZm9yKGNvbnN0W3Isb11vZiBPYmplY3QuZW50cmllcyhuKSlvIT1udWxsJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocixTdHJpbmcobykpO3Q/LnRoZW1lJiYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRhdGFzZXQudGhlbWU9dC50aGVtZSl9LEFlPW5ldyBHYSh7bmFtZToiYWdlbnRiYW5rLW1lcmNoYW50LWtpdCIsdmVyc2lvbjoiMS4wLjAifSk7QWUub250b29scmVzdWx0PXQ9PmttKHQ/LnN0cnVjdHVyZWRDb250ZW50KTtBZS5vbmhvc3Rjb250ZXh0Y2hhbmdlZD10PT5TbSh0KTtBZS5jb25uZWN0KCkudGhlbigoKT0+e1NtKEFlLmdldEhvc3RDb250ZXh0KCkpO2NvbnN0IHQ9QWUuZ2V0SG9zdENvbnRleHQoKT8udG9vbEluZm8/LnJlc3VsdD8uc3RydWN0dXJlZENvbnRlbnQ7dCYma20odCl9KS5jYXRjaCgoKT0+e30pOzwvc2NyaXB0PgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxkaXYgY2xhc3M9ImNhcmQiPgogICAgICA8ZGl2IGNsYXNzPSJoZWFkIiBpZD0iaGVhZCI+CiAgICAgICAgPGltZyBjbGFzcz0ibG9nbyIgYWx0PSJDdXJsZXNzIiBzcmM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSTBBQUFCNENBWUFBQURQQVhFUEFBQWtVRWxFUVZSNDJ1MmRlWmhjVlpuL3YrODU5MVoxZDdvN1lVa1FEYkxJNGlRUWtMQ2pVd2tKRUhZQ1ZKQlZjWno0akQ5UWxIR2NrYVZTamc2andvRGlNSUw0SUlnRzB1SzRrSVVBZGtwR1FVbURSR2lOaUpBUUVwT1FwWlBlcXU0NTcvZjNSMVYxVjI5SmQ2Yzc2UTUxbmlkVVVWM3J2Wi83YnVjOTM0TnJ2cmJxaEN0dlgzVVlBQ1FYMElJVWxFZDU5QmhKVzd4bmFzWlUvQW1XbDEzOTlWWFgxczBSRHhFbUY5Q1dEMUo1Rklia2dhbnoxZFZUOXg4elpzclJBZ0J6NzJQWXNuWDFmR01zTmphditjU1M5Q25ia2d0bzY1SlFpTEI4M043TjFxWE9BMEJsOVpSTEJQdzdnOWg5S0xnakFZQ3J2dkhXMG12djJyanVvLy94MnF6aXl4S3ArcUI4OE41MXczUzRvL0dUcXNmVUh2OVFaZTJ4Q3pGK1VuWG5VMGhCaWdZQXJ2N0dXMDk5OHQ1V1huSDc2L2QvOUt1dkh3QUFxUlJOcXZEMzh0amJSNkxEU0ZUdE0vVzhNZU5PZkx1cTlrUDFSY01Dd09SQkVDRXdEeURsbmRWL09MKzFhVjJtZXR6Ny9sRUVMMXp4bGRldVRhZEYwMm5Sdk5VcEI4cDdkNkNiY2VQR25YcHc5VDRuUG13bC9nU2hqYTNiWHByZWFZR2dYUUJJcFdqU2FkSGtGNWVQRGNidDgyU3NvdlprbDJ1RmQyNlI1ckpmWEpDZTlFb3h5NnFiSTc1OG9QY2FWeVNGMk1YVzdIdnE5WUMvMlVoc3ZQZHRTNXEzNGtLZ3dSVXNqYUxFNVBRRTU2dC9IaCtLclJkcko1TUFmZFJHMVR1OFcvdjF1dlQwNXFLN1NxZEZ5OGQ5dEdaRkNRdGtIQUNNM2UvVU0xVGtkZ0ZPQWdGcTlQVDJNZlpDckhtK3JXaGhTbDdZaTZGS0xyQjFkWFA4NWYvK2g0Tk1VSlVSeXFGUjFLYnh5bkVteWphdlZMcmI2bTZidktERDZwU3pyRkdiRlkwOTRDT0hna3lCK0JpWjU0THFmN1U5YkRzWDYxZTBkQWVtVDJoS1hkQWxYMzcxaUhoUWtRRndvTXUxWm0xUUVSZHI0YVBzWXUrajJ4NVBUMWxlekxJeTZXa2VLTU16d21GUkFCdy9QbEVkQ1Q4TDRUOEx6RGp2Y3ptSWphbTY1MlBVc3pkdi90MjIzb0RaSVRTZElFeDNjMjU1OFZoYldmdExndnU2YkpzamFNS0thdU9qTmsvaXU4TDIyK3ZTSjZ3dXd6TlNSNnFRK2FZVkFQWjd6L1JyRkx4RnhCeXBHb0hxMjBWc2hWZTMzRVN0WnpZMXZieTFMMkIyQ2swcE9NbGJHMDYxOGRxblZIMlZkMWtDSkFBYlZsVERaVnUzZ1ByTnR0ejJieTM4ejQ5czZiUlUwREk4ZXhxV3htS1FpMzBtenBnbGlsdEU1SFNxQjlWNWtpcGlRdS85N3pWc1A3TjVYY003cGU1clVOQ1VnblBKelMvT2pGWFdMUFFhQmVweStjaGIxY0dZSUl4VklaZHRXVTNWTzZLQTMzc2lmVUpyR1o2UkFjdjQ5NTk1dWlyK0RjQjVJRUdOUEFraHZZb0VnWHIzcWpQK2pKYjF6MjNZR1REOWhpWVBEb05NV3R5bHQ3NTRVUkN2L29uNkhMM0xHWUVJMVpPRUYydURJS3hBbEcxWlNmVjNib20xL2lDVG50NWVkbHU3dTlhU1ArbnZtVGpyUkcveEJaQkpRa0NmVTZvQ2dDSFZDV3lnZEgreXpzL1l0T2szYS9zRHpJQ2dBWUNwYzVlSERmZWZFRjEyMjB0WEJmSHFSNkpjcTZkM0JvQ0FoS29uU2JWQnpCb2JJc3ExL3BIUXUrTHRiejFTZDllY3RnNTQ1azN6NVd4cnFHR1p4R0xNY3NDaDU1MUU1ZWNCSmlIR3FNK1JWQVZwU1FLa0EweEE5YThqcDlPM2JIbjJyZjRDTTJCb1NzR1pmVnZEcCtJVlk3OFR0VFU3cXJNQWhGU1FCRldWVU5vZ2JvMEo0SEt0SzVYNGRwdTAvT0RwcjUzWlZIUmJrMTRGeTNXZVhhaXpKQklXbVh5ZEJRQU9QUFNpajZqb1owRmVBakZDbndQemJxQUFpNEpLSjJJQzByL2hsV2MwcmMrOE9SQmdCZ1ZOS1RpWDNQYmlUZkdLc1hka1c1c2M2SzJTQWhJa0FSQ3FYa0hTQnFFMU5nYVhiVjFOK2dlaXJENjQ1SjdwYS9MRnhKUnBiSndzZFhYSmN0elQzM2dsc2N5VXdDSUhISDdSK1VKY0Q4RlpnSUg2TEVEMUlHekhoVXlDOUY1Z3JhcGY0NjFPMzdZbTg1ZUJBak5vYUVxRDQ5bTNOc3lMVjR4TFpWdTNScUFQaTE4UVZCRDVKRXRWVlVnVmF3TWJWQ0RLTm05UjROR0ErTzdQLzJ2YVM2WHZPUTNMTkoxT2w2MVA5L09VVEJyVWRicWdndysrYUp5THhlWW9kSzZJVENVSjFSeEJWWklXZVRkVWdFVkJxZ2VNcGZxMUFwNnhhVzM5eXNFQXMwdlFBSkJFcXQ1bTB0UGQ3Qzh0dnpNK1p0em4yMXMyUnlERDd0Q1FtcjlWS3VnVllnSWJxMExVM3F3UWVaTGVmMitMM2JMbytVTGMwMkY5RmlUZjVaWG1IbFlGQi8zZFJ5Y3JlYTFRcjRUWWlVb0g5WkdDU2dJbHNHakhiUWN3OUJzMGNqTzJyTSs4a3AvTjduemYzUVVOQUVvaXRTd1B6czBOOThVcWErYm13VUVJYU1IaWxQNkFQRXhLSlpTZVlCQ0VsU0FKNzlwZUF6R2Y5STh0dWVmY3h0SXBEUUI0OTdpdmxFa2tscGxNQ1Nqakp5V3JLMjFzRnIxK25OU3pSSUtRUG9MWHlCZTZEa3pYWTF4NnpMMEhqRlZ5azlkb3h0YTM2MS9lRldDR0FKbzhPTWxrbmFtcm0rTXZ2bm41RDJNVk5WZG1XelpIUU5IaTlBWU5TNjRDZXBLdzFscGo0NGl5elJISmVpSG5xNGFMbnZyTzJSdDZBTFIzV1NBQlVwSkl3R1F5NlM0bjhwQXAxNTJzNmk0bk9OdUlPWVFrMU9kQVZRZlNFTXpEZ3A3SHVPQ1d2TUJZVmQxS3VyTTJyWG5taFYwRlpvaWd5VGR4cGVaQmdIbDRPVHIvZjhQNG1BdXpyVnNpQU9IT29Dbnh1NHA4RVNFd1FRVUF3R2RiTnhHeVZNSEhiZFJldi9SN2N6YVhUTWViQkthWkNZMGJPZnFzVU1vZzJTallzRUZLWFE4QUhQcWhmNWhDOVJjQ25FM2llQkVMMVFqMHpoY1NERVBWam9TREtCeERkTUtDTGpHTWJ2ZmVuYlg1N2FlZkh3cGdoZzZhd2tuRXZIbWM5Wm5Gc1lxYS9SY0dzYW9adVphdERvS2c5NnVnbDZzai84T3BwRklWeHVTdEQ2bnd1YmIxQU9xcCtvUURNcGtITGwzVGZXWit3NGJ4TW1IQ2lJTklnSlFrazQyeVljTWt5V1RTSGtESGQ1czZkVzY0R2ZJaElXYUI3bnlTSnhnVGlxcUQ5N204R3hjMUlFMkg1ZGFTaXcwRlM2TWxNYVI2RlRHR1pMTzY2THgzMWp6MXE2RUNabWloS2VuRlNYeTZ2bnJjMktxbmdyRGlsRnpyTmdkQlVIb1ZkTGMwSGZkUkd1MFhBWUtDaElpeDFzWkFLbHl1ZGJzU0w0am8wNTVtV1R6WHZ1S3BSNjV0NlJGdkplWlpBSmd3WVRMckpyMUtwTk1zUFdIREFrZ3FKY25HeWJKaHc2dVNtZEJJMVBYTVRnNC82WWFKRUQwWnFtZFMvVFFBUjRrSm9UNENOUUpWWGQ3MTBQUnFSYlRFdmFQem9pdkFvNEFZZ3UxZW8zTTNyVnBhUDVUQUREazBwZUNjOWJrbCsxYkc5Nm0zUVd4SzFMN2RBUXgyYW1rSzlaMU9hTG9FZGdUcGxSUUJyTmdZakJpNHFBM3FvN2NBTEtmaTF3TC8yd0Q0NHpNLytOaW12aXhpOGFRV0g1b3dZVEluVFhxVjZlSUQ2WG05Z0RWUGtBTFEyQ2hKSk5IMTlZMnNxOHUzSFBUbWlvNzhTUFBCSnRMakZQNDBVazhuZVl3eHRqci9zeU9vajBobElhaWxJU2xkanM5T29DaytoK29WRUFHUlUrWXUydmptazA4T05URERBazFwRTlmc0d6TUhha1U4WTB4d1JKUnQ5Z0RzWUtBcDNpOEo4S2hVRlpJa3JSZ3J4b1Q1T01pMVExMXVFOG1WSkZhUWZKa0dqWUUzYjJ6UzZ2V05kWE55dzJWbWpqcnRDelZCSUJNQk9aeDBSeXQ1SEpUSEVEek1tQ0FPQUhtM0V3SGVlNlZTT2l3S3VsbmIva0JURXRQazQwRUI0ZW5jeGV0WEwxcUlSQ0xvSGpPTldHaEt3Ym5ncHN5aEVvYS9NckFUbzF5ckY5QnFIMW5WVGl4TkY0aEs2eEQ1STZhRWtxQmFNVlpFTENBR3BFSmREdXB6YlZUOUc4azFwSzRHdUpyS3R3Ry8zbnR1Z3JvbU1XaWhzczJveVVVYWVSdkVHV1czRzBzRWFoRXozbGFxOFRWVTNVY3ArMU41b0VEZkIrSDc2WGt3aE8rajZnRmlBaEVScUdyQmtqaFF2YzliU3dpaEJnVnIwdmtiK2d0Tno1aW1BRXkrNlM3S1hiWmgxZUtmWXVyVUVBME4wVEFGYWNNNGpWYm8vcHQxMDlPVFlyWnFtUURqWGRUbUFkaStBK0crb05tQmErdFJFeW9FMC9rQlVSb0lqWWdCWUNBaUpkVnFCL1crRUU4NEpUVUM2WlQweUw5ZXFBd0VEQUNOQVFZUVV6aDBIWUVuVkIzb0M3ZXF2dkR4RUtoaGZrSlhTa3Y2WFNEb0JScVEwSDVCNHd0eG1nanBMLy9iWDM1ZU41ekFERHMwcGRNTjU5eTQ5SVF3TnVZWnFOWkdMcXZTb3lDMU0wdlRPelE5bjYvZHl1ZGRZcUw4WEdyaGNPZE52VXJoNnBlT2RleUZaNVJVVkV1Q2VFOW9mbHEyeS9kWE5RQWwvN0pDU295ZWNQU0VwbmpiaTZXQkFscnFna3ArbytaL0UwRVZNZGE1M0pVYi92cUwrY1Bsa3RCMStjTHdqa3g2dWt1azZvUEZkNSsxM1BuMkN5RFNibTBnSkh2Mm5rcUJnd0dWaURpUUM4U0l3SW9nRUNBUVNDQWlGb0lPMDVFZldxZzVlaFlOVnZFdmdBaEVqRUNDTHY5RVRQNFhEUFJDN092cExBbXJwY2VmZ0x3WkV4TllUM2ZkaHIvK1lqNm1UZzJIRzVqZEFrMHBPSXZ1blBHcktOZCtpWmpBaTdFb0ZCbEtBQmlrc2VSZ1R4SzdQeTZkLzBSS0lCQkkvblpBUkhCWFhJRHM1SjJOaW9TVzNuOXkvV3MvKy81d3U2VGREazBSbktsejd3c1hmM1BtNGlqWGVxVU5RaVBHc3J1cEVObWRUbGI2ZjRZSmlJeUV4YVVrSUY1TVlNbmMvMXYzbDU5OGIzY0NzMXVoQVlDRyt6OFZUWjE3WDdqa20yZlZ1V3piSjJ4WVljVVlYekMxZ3p6dGc3aWNCMW5pSzBSQy9UY2l1OEFZKzBiWEd4c0czdWMrdS9iUC8zdnY3Z1ptdDBOVENzN2liNTMxWUs2dCtiTkJiRXdnSWg0Y3BERWY4TlhQZ2ZzUEdTUUVITklNaFFDS3dQekx1dGNlL3hZU2lXQjNBd01BZTBTOGFGM0RFenAxN24zaHMvOXorWE9IblpDTXduanRtZDduSEVpem95Q0Z2WjF3N2dpRXZ1d0NDMmVGL2J5Kzg4OFg5T2V6ZHVVK3V6M0NUaHRIZUdOamdkZnNsOWIrcWU1cnV5TkxHbEhRRk1GSnBPcURwNzkrWnVhUXFjbUtXRVZOd3J1c3kzOG45c01Wc2VTU0hOb1QxaXRJN09zNUhCWm91bndvNlcwUUQ5Um41NzNkK05oWDlpUXdlOFE5ZFF1T2ZTSlZIeng1enpuL0ZyVnYrM2Fzb2pZa0dPMk9lZWZCUGI4VFc5bFYvOVAvc05mWklCNTQxLzdWTlkyUHBndkFlT3habVlrOW13cGswdE44Y3NFQ3UrU2VjMitJc3R1L0g2c1lHNUtJaGpSODdMUCswVStTdUNkS3B3U0F5QWJ4MFB2c045WTBQbnBMQ1RCOE4wTURRRmczSjZuSjVBSzc1SjV6cjR2YXQvODRWbGtiZ3AwV2h6dEpRQWQybG1Sd05NZ2c2T0V1TVJQWm9DSlVuNzM3clZkKzlDOGpCWmc5R3ROMEhXazB2cm9BS2NEOHBlcUluNWp0clNjRjhlcWp2R3VQU3I5amI0R3dEQ2FtRVE0Z2syS0pnV0kvTTdGZGpHbkl5SVlWb2ZyMi8xNzloMGMrTzVLQUdTR1dwaU4xWmhwQUpqM05OOFZhTG9seXJjK0c4ZW9RVkxmRGpKZEQ1Y0prcDVhbXA0MlNZWWhoOHNCNDEvN2RWU3QrY0QyU1NUdVNnQmxaME9SbHRUU1ZtaWZQM3pXbmphNzFBaDlsRzRKNFRVRFM3YmtwMTE2U3RlRUtoTW5JQmhXaDk5a0hWNjE0ZUM2U1NZcyttN3ZLMEpSd2s5WlVpdWJwKytjMFVUZWZxMUg3SDROWVZRQ3FHNWloNFFDTkRRZFJTSllodGpDVm9YZlpINzM1Kys5L0FxbVVHWW5BakVob2lqcCt5ZVFDKzlSM3J0MkE5cGF6dlkvZXRHRmxRTkQzMzlEc1lHSlNCdWVlZWs0amNtZ3lwdzZYbEh2c3paY2Z2QnFwbE5rTi9jd2p0NThHUTlEOU4rT1Q4NDhVVzVVUndYdGMxT1pCc1YwNjk4RCs5Tk4wdlVYM0hoZnRwWCtuZSsrT2Rtay83ZGNxQyt5NG40YjBrYlVWb1l2YWYvckdTKys3TlAvTDUzRWtMOGtaMFlMU2RYVnpmQ0tSQ3A1NTRJby8rMXpiTENxM1dCdTNwUlpIQmwrcFE3LzdXcnAwVGd6cGlHeFFHWHFmL2NVYnRhOGw4N0IwU2U5RzVCanhHMmVzV3BYUlJLbytXSGIzQmVzT1B1YWlaOFVHSHpXUXVOSjc2WUIrc0tYNmdhWGNQWlB1d2FmWkJDTWJ4RVA2M0pQeHRpMnpOeTVmVk5EcUhmbmlCNk5DdXI3WXhGWC8vU3QrNDZMV2l5RW1hMjFvQ2ZWOVgvenNSKzRzZy9iVXU5SWFrUWVtSXZRdTkweTBzZjNpeHNhNkNFaU5DbUJHRFRTbDRHUWV2T3BwbjJzNUQ1QnROcWl3cXVvRzVXNEdrVEt6eEJuSzRNZ2lnU2dJS2tQdmM1a3h1ZWFMVnExNnFIMDBBVE9xb0NrRlo5bEQxenpqc2kzVFFMNGVxNmdKbEhUb2Q3UHdqcTJMN0tUaGk0T3NLWkwwZ0NESTEySG1aODNHYzFhc2VLUWxMNm80dXZSNFJ1WG1HSWxFS3NoazB1N1VxeCtlRUEvakQ5Z2dkb0hMTmtQVkZSYmtkYzlVZHI1Y3B1ZXlrcDdMYVlET0pjWDl6cDdvcWFRM0pneFVYWTdxdi9UYWI3OTlKenBVT0VlZmdOT28zRUZ1MWFxTUpwTUw3Sk9QWHRuODV1OS9QUC85eDF6VUpHSk9EMktWRmVweVNsRHppNVA2M2JPeTgyQllCdkphRnB0RHZSaGpiUkEzNnQxelFIYk9hOC9mKzJPa1VnYVpESURNcUpSTEdiWGJEalkyMWhHa3BBRHowRGMvODl6RUtSYytMdVNCeGdTVGpRMk51cWdBVDNGMUFic0IwRjlvdWs1WTdqeDd5cTkvTVdLdERlSUczcTlUNzI1WitkeWFmOXEwNXFFMWlVUXFXUFZRMm85eVFaM1JQNHJ1Q2dBUzF6dzBrOEMvQWpKRGpJWEx0VUxWTzFKRkNFTlNPZ3R1cFM1bEorNnBJT2ZSZXlGUnRTaTVLaElJaklXUDJ0ZFQ5WUdZNGxzcm5ydHp3MmgyUjNzbE5FVTFpQlRtZFd3bGRQcFZEMDR6NEtlODZ2bEJFSzlXNzZDdUhkNTduKys1VlNrc3ZnY0xTMlo3cndoM2pXbFlYUEJiV0dFcFJBQ3hNR0lMS2xYK1phVSszQjc1Ui81YWdLVlkyY2JlSTkyMWQ0MWtjb0V0bFZjNzljb0hEaGJGaFlCZVJOV1RqUTJycGFEZW9MNjRPRjlWNlZuczRPNERHZ0hWRmhaWUZoSlB3a2Z0SUhVbGlTZUYrcE5YRXJGblVWQW56Y095OTJrRjdyVmJDM1lLUEhaZTRTZGRkZi9FSU9MSlZIZTZVbzhIOVhBbER6REdCaEFES1RaYTVlMUlwOElVdFFCWkRxcStDY1FxVUY4QjhUd3B2OTdYWTBXcFhsN2VYYzdiYXlYOTkvNzlLRk1wazFnR2s1a0dSVGQ5NGlsWGYyTk1WYmJ5UUJmNTk0SFJld0R1Ujg5YUFlS2Vhdkl0cDlwQ2xjMFEzUUN2YTJIczJ0OHZ1WGxqcjNGVlh2bEtSK3JzZEJtYVFRTFVJVzNXQzBRRHRXUWw3OE85SFpSM0x6Uzl5TmtpTlUrNnk2bjFOanAxKzBaMjJ3TEswd2psVWJZMFpmZFVobWIwQjhJUGo2bktidHRCSU93akFDMVUyU3dHNituY3VuSWcvSzVQdVhtNFVnOHd4Z1pTbUtycWtuSVg2alJLQlR0U2J0MEtjaldncjBEektYZXNhZDBmR2hydWo4b3A5MTVVM0RNMEY1RHU0aDBWOXdyNmRXU1hXZXl1eFQyQldpSmYzQk1Zc0tTNEo4cWxoSDM4bFdYbTJlSlV3ZDRLejE0N2paQzQ2c0ZwS3BoTDFmT05qZFgwT28xUUVHanM3elJDUVg2MVJLaVJFREtBV0lnWVVDTjQ3MTlHZVJvQm8yL0NVdVNMSUdZTytZUmxyMUt1dlUxWUduaVhYUS9GL1ZtdjMvN3JYalpoYVVmMXR5KzJSanlVOWgrKzVxRWpEem51c3Z1TUNXNFhZdzd6VVJ1OXp5a0lrZnp2N0JSTTZ1SXNpSDdJREJRNkt2cnNwNUZDazd1UVhyMkx2RUJxVFJBbUxQM1YreDE4U3JScDlVSExnWHMxa1VnRnExWmx0R3hwOXVDYUtBQklmT3hITjRyZ3k4YUdOYm4yNXFMNHJ1MUxYM2hRblh1OUNtUHZxSE5QcVVvdlJnSmpRdmdvOXh4YzdqTXJYL2p2NVNOOU1keGVDVTBSbUIyM2UvWm5zVnhmTFpybGRzKzl5ajBsVXZYQm9udlA5MzkvelVNZmlzZXJuclJCN0pSY2Ryc0RLU0tsTFo1OXVwSnV5VXcvTy9lNmlaMndQK3VicE9PL2h1bzh3TUFHOGJQSHZmZjRvNm9PK3ZDaWJXditNOHFETTdyYVB1MW9BeWFUbnU2bWYveEhaOWhZNVJLSUhCaGxXNXdSQ1RxdDVtQVh5KzBjR3BZSXFQVkx0SkZkUkVrTVFIaDF6dHI0c2NablB4emI3Nmk2bHZYMzVFWWJPSGEwQVpPNDdvY3piVmk1RU5BeDNtVzlFUk1NcFRDaTdBQWFHYWlsNlhsZkFGaXZVV1J0L0xCUXpNbTE0ZVFGVFUzZmRLTUpIRHU2TE16ODAyeXNjaUdvbGQ1SFhpQ1dISkJTWmkrYWEreFRkSFpIZjk5RmVWaXJHa1UyaUIyT1NweDQ0TGpERm16Y2VLOGZMZURZVVZHRGVlZzZOLzI2UjQrMXNjcWxBdFo2bi9NQ3NZT1RUOXRkUzFoMkxGY3JvRlYxa2JYeEl5TWJIRGZseUpxNlZhc09JVEJOUmpvNFpxUm5TWmxNMnMzNDVQd2piYXh5aVJqWngzdm5CY1lPWWhlV1FlYU1wVXRZaGp4SERyMXJpNnlOWDdCNjI1RUx1cm14c3FVWmJGcDkxc2ZuSHlTeE1iODB4azUwVWJ1WGp1L2NQM2N6ZUt2VHUxdVRnVmlhZnFpcEM4U3F6MFUyaUU4ZU8ySHpVVnYvZHRmalNFSHlpK25LMEdBZ202ZmVlKy9SZXViVkQwOUFWZTB6eG9aSCtGeWJFMEV3K0JSNkZ4WExCNnNrMmo5cGs3eXJDdUxIMWs0NCt2Q3RqOTM5ZU9jcXpESTAvUUFtWmRMcDZUcHo3b0t4cHJKMnFRMWlVMXkyMlVFazZQMUtIWVJNS3djSFRjOWRXQVlmMDNTL1gySnhqaHM3NFpqM2IzM3M3cDhobWJSb2JDeERzN09aNmt4NkhrLzUzT1RLT0tzV0JXSDhGTmZlN0NSZmg5bmxFOU4vMTlGTEVNemVCS3AyM1QzMW5sVlZuRkE3ZnZKN20rcC85UE9SQ0k0ZFVaT1B5NVlKcHNGV2JlZlB3dGlZR1ZGMmV3UklPSEoyWVJrNkpheSt2cWNJclBvb3NrSDhwTnJ4ay9adnFwK2YzeXA1MVNxV29lbDY4Q1haV0dmdXZmZDYvZURSY3g0TDQ5VVhSdTFOa1pRQU16eTdzUFJYNElpN2V4Y1dxejZLVEJBL3RYYjhwTnFtMy8xaXlVZ0N4NDRJWUJiVW1icjBISC8yOVF1L0gxYlVYSmxyYjRvQWhQMVhzUnFzekgwL1l4b3BOV3djaXVKZWZ5QzJxaTR5SnY3aG12R1RxcmE5OEl1bEl3V2NQUTJOSkZMVDdLTHJ6L2V6YmxoOFQ2eWlabTZ1dlNtU1hvRVpxc0pkWC8wME83QWszTWxHWlVNZGIzWHMrazFMNzV3SlloK3AzZitEZHRzTEM1OHBnS1B2V21pSzB3Tm4zN0Q0OW5oRnplZHo3ZHNLd1BRVk9mUTgwT1NRYjhxRnZpVmhCeGpUY0VoMmxoT3E4OGJHcHRmczkwRnVXNzZ3ZmsrRHM4ZWdtVHIzdnZDNS83ck1uWFA5NGkvRkttdFR1ZmJ0RWNoZ3gzc21EK2N1TFAwVE5kb3R1N0IwZlZ3Z0ZIcnZqWTNOcU43M3lQYnREWXVlM1pQZzJEMEZUTVA5bjRwbTNiRGtobGhsN1IxUiszYlhDUXgyc0FQQjBGN05BOUlSbGc2WDBZZjFHelpvaXB1UEM5VjdhMk5uamRubnlPYnREWXQvdmFmQXNYc0ttSE0rcy9TNnNLTDZPejdYNGtpMVhjWEgrMjlwSUJqQ2pHbkhscVo3ekxHYkxFM3BmSlJRdlRjbW5EVm0zT0dibTE5YzhqeW1UZzJ4YnAzdXRkQjBXSmpQTGsyR3NjcEhuTXQ2cUxkNUp6T0FxNzVMVE1OK3BNQjlCY0lEKzB6dXNIVmkyS0Vwc1RpcTFzVE9xeDUzK1BydHI5Yi9ibmVEWTNkbjBQdmNmMTNtWm4xbTZibGh2T3JINmlOUXZVQUtNKzNTMThrY0lUR043S0JXMU50OTJWWFgyZWZ6QmZsMVdpb212S0JtbnlQZTJ2NXFmY1B1Qk1mdXppenAzSnVlK2Zzd3JQd0YxWVhxSFRxQUthbTZEcDJsR1dqSzNmME1zOGYvU28rV2hSMThGb2ZGMG5SVXp3RVZRaFVtdUhqTVBrZSszdnhxL2U5M0Z6aDJkd0Z6em8zMUo0UmhmQW5KTWVvamRtMENIN2lyd01DTGJFVk5QUVdnSkxRZzM4b1NYa1JFUkNBQ0ZHOVIrZytFNWxmdmdqNHZPZHZ4SHV6c2d5bUZheGZxTkgxWlg3TEU0bERGbUV2SGpEMWlaVXZqc2hXN0l6Z2UxbWFmNUFMYXVqbmlMN3pwNlVsaXE1WUJHTzl5YlFxQjZiS1BVcmVsSmV4MS9WSHZ5MFE2bDh1V3ZvOFdOVGhKRXFJMEVCb1JBNGlCRkoxTWg1YWVSOTVkT2lVMUF1bEkrc0xyaGNwQXdBRFFHQXZydUR2OER3bXFMd2dFZUtnNlVOVVhQaDRDTmV4MEtYMnNzZExDVzNWS3pyS1A1VGFnbG9nVEVJVFhZdU9HODluTE52NTEwVTh3ZFdxSWhvWm8xRUZUYktLNjRLYk1vUktFdnpKaUowYTVWaS9vWE1TMnN3VnMvWWFHcWxxd0FGQzFZcXlJV0VCTS9pR1hoWGU1TmtEL1JuSU5WVmNEWEUzbDI0QmY3ejAzUVYyVENXeXpPdGR1MU9RaWpid040b3l5TkpiTmdWckVqTGVWYW53TlZmZFI1WGhTM2lQZyt3Z2VET2o3cVRvUjVBUXhnUWlrb0RaUkZCbndubFFpdjM3Y0ZLekVMa0tqeFl0TUN3Wk8xVWVYYm5oejRjK0hFeHdaVG1CbTM1ZzVVQ3ZpR1dPQ0k2SnNjMkVoVzErTHlrclhUR3UzbmQyS0M5UTZZS05TVmZLV3dJcXhZa3grNXNHN2RxakxiU0s1a3NRS2tpL1RvREh3NW8xTldyMitzVzVPYnJndWxLTk8rMEpORU1oRWdrZFFjVFRoandONXRGSS9ZRTBZQXdEMURsNGp3SHV2VkJhMGpNM2dMVTNuZXZMOHNtQTQ5ZTdDamFzV0xRRVNBWkJ4SXg2YVZJb21uUlk5NjNPLzJiY3lidXR0RUU2SjJwb2RoRUh4UitzT1ZpaWlUL2VrWkVIMldTQldiQWdqQmk1cWcvcm9MUURMcWZpMXdQODJBUDc0ekE4K3RtbG5hbGpvcnFkWEhPbDV2UVJWOHdRcEFJMk5ra1FTWFYvZnlMcSt4SXhTS1hQRU0wMkhXUEk0OVRpTmRLZVRQTWFZWUV6K1owZFFINUZLRDJoaFBYamVDdlVPVFVFNXZUczBJS2hlQVJFUU9mcmMrUnRXUC9uMGNJQWp3d0ZNOHRQMTFibXhWVThGWWVVcHVkWW1CMEhRNVVycHk5TDBjRS81MkFRRVJJeTFOZ1pTNFhLdDIwRzhRTkduUGMyeWVLNTl4Vk9QWE52U2ZmWThrWmhudTRvc0R2djZhVUVxMVNIOFdGREc2aUV4OG9FVC91a2dNZllVME0razZqUUFSNG9KQ25GVkJLbzZkbGlnZmtCVHFtaWhxb0FZUWx1VnVYUGZlZlBwekZDREkwUFpkWWQ1OHpqck00dGpsVFg3TDdTeHFobTVscTBPZ3FCL2E1NDdEa3ArNlR3VnhsaHJiQnlrd3VmYTFnT29wK29URHNoa0hyaDBUVThOdlBFeVljSkdqakNWY0FGU2trdzJ5b1lOa3lTVFNYZlptSDNxMUxuaE51QjRwendIMVBNQVRqVW1GTlVJM2tlRTBsUFVnSGxKL2c0THJaMHhUZmQ5RzZpcUFqRWttMGwzOXNiVlMzOHpsT0RJa0hYZHpZTUE4L0J5ZFA3L2h2SHFDN090bS9NOU1iM0FvYjN2Ykt1Rlh4N1lvQUlVd0dkYk41R3lsQ0kvTnJuV1pVdS9OMmR6VnkyOWFXWUVRdEtmSzh3ZzJTaEpBSFhkTE5FaHgxMTNMQlFYUWppYndJY0VCcW9SNkowdnVHOURWU25OTkR2am9DN0NBeDR3bHFwYnZlYk8zcnptbDc4YktuQmtTSnFva25XbXJtNk92L2ptNVQrTVZkUmNtVzNaSEFFTSs1TGswRjdpRkdzQ2E0SVlvbXh6QkxJZTVIelY3S0tudm5QcGhoNDZlbmxYTStyRmdUclBRZElrRXBPa1ZDb2ZBQTQrK3BwVENWeE82R3dqOXYwa0M1dDJxQVBWa3BRT1M5TkxHaytxRnhpcjFNMXdidVk3YTU5NWFTakFrVjBGSnBGYVpqUHA2VzcyelEzM3hTcHI1bVpiTmtja1FxQnZIUmZOUzVCNWdrRVFWb0lrdkd0N2pjcEhBWDEweVQzbk52WVVYTno3TnFib3l3b2xFc3RNSnRONVl2Yzc2aE0xVlVIN3VRQS9UdVZNRVJ2UVIvQWErVUloc2UrNlY4SGlLSFdqVno5ejY5dS9YTEdyNE1pdWRkM1ZGNEc1STE0MTlxYjJsczBSeUxEM2dodEJWWUxxS1NZSVlsV0kycHNWZ2lmcDlYdGI3SlpGejk4MXA2MDB3eWtWWEh4M2pwUkJZcGxCQ1VBVGowb2VRekVmZytvVk1QYTlWQWZWcUhpd2JXL2lUT3gwVlgrRFJ0TTNyY3Y4Q1VoYW9HZVFQcXpRRktjSFp0L2FNQzllT1RhVmJXbUtTQi8ybWcwVjFET05EYXdOS2hCbG03ZEE4U2pvSG5qaTdwa3ZscjduTkN6VDlON2plb2JPaFNXVEJuV1RXQlJCbWpncHVhODZYRTc0dVFKekhLbFFueXNTWTd1TE1wSHFBV1BoZFkxSWRzWTdhLy92ejRNRlJ3Ylg0ckE4YkxqL2hPaVNXMTY4S1ZZMTlvNWNhNU1EdmUyc0x4UlVvMVFWSkcwUVdtTmpjTm5XMWFSL0lETDY0Skt2VDE5VFhCelgyRGhaM2ozdVo2aXRUOUllZUtTL2dLclhBNWdCQVBRNTVoT0wwdXA3M3VJSXJLVzZWVjc5OUtiMXo3NHhHSEJrc01ETXZ1MmxUOFVyYXI0VHRUVTcwbGtRblhNckJjdGl3N2cxSm9UTHRhNFU4dHVodFB5ZzdtdG5OaFhucFNhOUNoWWxYTXRqRU5ZbmtiQ2xydXVBRDF3MERlU05nRjRFbUFJOFhrbllranFPRjdHVzZsK25SR2RzV2ZmcjFRTUZSd1lEekdXM3ZYUlZFSzkrSk1xMWVmcklGR1pjb2VwSlVtMFFzOGFHY0xtMlY2bThPNWJ6UDZ5NzY3UzJEcmMyYjVwL2Q4Y3FRNTk5QVowVjZRa0huMzhxaFA4TThKTDgxRVhFb21SdHdXMDV3QVNxYnFWMTdveE5tMzZ6ZGlEZ1NQOWpHQWFadExoTGIzM3hvaUJlL1pPODVtQlUwSlB6Sk9uRkJrRVFWaURLdHE2a3VqdmJtemM5dk9TZWM3T2RNZEEwWDNaQnd6bVNGdWlNZXlZY2ZQYXBKTDRBWURZaG9NOXBZVzdUa09vRU5sRDFqUkd5WjdScytPMzYvb0lqQXdsNkw3MzE1UmxodkdxUjF5aFFsOHZyMjZnNkdCT0VzU3Jrc2kycjZmMmQwVHRySDNqaS9ndGJPOXNqVUk1WGRuZmNBNkFJei80VFp5WUlmQW1Rcy9LSlNlUkpHRkE5eEFaVTkzdG43Wm5ONnpMdjlBY2M2Uzh3eVZ0WG5Hb3JxcGJTdXpIT1pZc2FxVFpXVVlOY3RtVUxWZS9PUnR2dldmaWZIOWxTMGt1ajc2WXRiVVk4UE8rZGNUNkJXeUZ5RXRYbkpYUkpGVEdocW10QXJtVm1VOVBMVzNjbVZTdjlBZWFqcVJWVEpGNVZUM0pmbDIxekJFMVlVVzE4MU9aSmZsZVl2YjB1ZmNMcXNoc2F5VzZyTHAvU0FtYmY5MDcvT0pVM2k1akRWQ05RZmJ1SXJWQjF6MXVmbTdWbFMwTlRRU1ZOQndSTnNldnVraSsvZWtROHFNZ0FPTkRsV3JNMnFJaUxzZkF1dTlqNzZMYkgwMU9XbDJFWlZmQjRBTmhubjVsakVZcytSL0R6QXFueFBwY1RzVEZWOTM5VlFldXM5ZXRYdFBRRmp1eW9pZXJ5Zi8vRFFTYW95Z2psMENocTAzalZPQk8xTjYrRTh0YkhVaCtzNjRBckNTMW5RNk1UbnByOS8vNElZMzBhbENzNkdnRFYvM0o3bFp5UE5jKzM5UWFPOU5rVDg5VS9qdy9FMWh0ckorY25UVjBiMWQvaDNkcXYxNlduTjZkU05BQlFyck9NNWxROVlZdHpVTFhqVHoyYkt2OGhndU1CZ2JyYzR1YXRMUmNEalZHQkUrMFZtaUl3VjZYK1hNc0t1elNzcUQzWjVWcmgxUzNTOXV3WEY2UW52VkxxdXNySEhYdko1cmRKeVZ1ZXFXSE5mdUdOcFA2cmxkaStYdHVlYU43U2NIRUJHT25wcWxJcEExSm0zYkFvZnVYdHJ5Lzd4LzlwNXhYLzhmcnFLNzd5MnJXbGdmRklseXN0ajExeFdmbFJXenYxQXpYalRueTBadC9UT0diczFDZEs1SU9sVTBlWUJSQkV1UDlCUnkrc0dudGdvbm5MMjk4bGNlTDhXNDU0T0pXaVNhVm9NdW5wcmh6bzdxMmp6aGRjVnJCdFc4UHIyN2UrOEZINjdHeUtPYkZ5N1BGUEZhd004OHprZ1JFQXVPcnJieTM5Mk4zdnJMMzhLMzg1cDZ0MUtZOTNvY3V5K1N4cjZ0aXFzY2ZQcjZvNTlxYzRjR3BWUjB3ejl6NkdMVnRYUFdwTTZKczJ2UEVQUC8vR2g3ZVhzNkx5S00yeUttcVB1Y0lvRGdzdDdwVlBmM3Q5OWRiV3RrK0w2dm9mL3V0aEQ1VUQzZkxvWTBMVWp4a3paUUxBQTNETjExYWRjT1h0cXc0cnd0SVIzNVJIZWZRUktQOS9sTVFZbUJ6VGc5OEFBQUFBU1VWT1JLNUNZSUk9IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsYWJlbCIgaWQ9ImtpbmQiPkN1cmxlc3Mgd2FsbGV0PC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJtZXJjaGFudCIgaWQ9Im1lcmNoYW50Ij48L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJjb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJlbXB0eSI+TG9hZGluZ+KApjwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvYm9keT4KPC9odG1sPgo=', 'base64').toString('utf8');
5
5
  //# sourceMappingURL=card.generated.js.map