{
"version": 4,
"timestamp": 1575393717849,
"reference": "3DcK9TkNHvUBCVr6X9aA4Q8pSmBup1GdbeEDe4h4ZNiCgoUKwWjzkE9Z1pgox8jmdD6x6Amx1LVGZad91YGWVELQ",
"nxt-consensus": {
"base-target": 994,
"generation-signature": "FdUUXjmxo2WTXHoLgJZSzZHbmA6H5d8qQKujxv5NHVkw"
},
"features": [],
"desiredReward": -1,
"generator": "3MxTeL8dKLUGh9B1A2aaZxQ8BLL22bDdm6G",
"generatorPublicKey": "GDchRrUufZVSoBhEC1jgwWt3GpukR2989rJPkK87KpSo",
"signature": "22KB5WwqqtJivYr39wqLdNeZEQq1ALhngg6czHany8HXE9wPnsLQiNecqf4nbUBLQDZgZukGkz5M8e4kQbN7hRNh",
"blocksize": 298225,
"transactionCount": 12,
"id": "22KB5WwqqtJivYr39wqLdNeZEQq1ALhngg6czHany8HXE9wPnsLQiNecqf4nbUBLQDZgZukGkz5M8e4kQbN7hRNh",
"totalFee": 51600000,
"reward": 600000000,
"rewardShares": {
"3MxTeL8dKLUGh9B1A2aaZxQ8BLL22bDdm6G": 600000000
},
"fee": 51600000,
"previous": "792792",
"height": "792793",
"next": "792794",
"transactions": [
{
"type": 7,
"id": "FHUQKXWjxYW56LH5QcJF2dbQ9q8E2FEKDBGh8LuhHtYj",
"fee": 1800000,
"feeAssetId": null,
"timestamp": 1575393711696,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"5Nyf4LojTD8XZqdXRuVfsJSoB7HuJJ9WeH7gdWmSPgVCVBkNNdN3ycUQeGC7UbDiPG8g9zF9SrY5afZzGXPnzB8M"
],
"order1": {
"version": 2,
"id": "HjfSz5DoiGqWVeNDV8hh3pAc69qQFk9tNkesmJDFRzVc",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": null,
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "buy",
"amount": 31525399,
"price": 8009,
"timestamp": 1575393711615,
"expiration": 1577899311615,
"matcherFee": 700000,
"signature": "2JogGwgJ3HPrSsMsqk5RJAxELLfwqDLKnCugfCFkAoXCimBowzgQVtjD7L37FSzm4KLeMAafy1PJwTELK2LfgKnz",
"proofs": [
"2JogGwgJ3HPrSsMsqk5RJAxELLfwqDLKnCugfCFkAoXCimBowzgQVtjD7L37FSzm4KLeMAafy1PJwTELK2LfgKnz"
]
},
"order2": {
"version": 2,
"id": "9beXyBKK3WMN1UEBRC5DXjfVwshfGrnxWUfbd3XcSjsi",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": null,
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "sell",
"amount": 31525399,
"price": 8009,
"timestamp": 1575393711122,
"expiration": 1577899311122,
"matcherFee": 700000,
"signature": "4Ug1pdAFgsCYfyFQyzLRzeg7HLu141rhXpN2we1cw6bfWq6f2v8rrGdf95uxa5kadpM3gdYjijdwWvZGsW83Qt7c",
"proofs": [
"4Ug1pdAFgsCYfyFQyzLRzeg7HLu141rhXpN2we1cw6bfWq6f2v8rrGdf95uxa5kadpM3gdYjijdwWvZGsW83Qt7c"
]
},
"amount": 31514547,
"price": 8009,
"buyMatcherFee": 699759,
"sellMatcherFee": 699759
},
{
"type": 7,
"id": "ERfAkSYrFMf71GdpZq2H4vatUjHv3pXqwyGgW2t3GMq9",
"fee": 1800000,
"feeAssetId": null,
"timestamp": 1575393715940,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"5pPrpPMPHMQFcZKptKg3g2VqQsAzvCTrffrcYn9QoFqjPCEF4oyuXFU8zf1DivWK1K3igFxYhYqAWBJdYoPXJLxd"
],
"order1": {
"version": 2,
"id": "FGuWAGz7NdtTRfvYtapoF4zhkyahPA8Fgx9pNBMfVWpZ",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "HUdXNRE4VcCx64PCPYwh6KL2cxvRaKcR8bXe3Ar9fG4p",
"priceAsset": null
},
"orderType": "buy",
"amount": 13254031,
"price": 3719394900,
"timestamp": 1575393715366,
"expiration": 1577899315366,
"matcherFee": 700000,
"signature": "2VKB5YuSD1GrK5t6iaULAGre1jJTyrGyGYyVtJvsJPgT47jk3pv3imRMCfNpumx3HfXev3oxYiNBhEEVj6jLzKJ8",
"proofs": [
"2VKB5YuSD1GrK5t6iaULAGre1jJTyrGyGYyVtJvsJPgT47jk3pv3imRMCfNpumx3HfXev3oxYiNBhEEVj6jLzKJ8"
]
},
"order2": {
"version": 2,
"id": "J1i2R8hmzCzjJ97t5uZnAUJEYZjGpAxWn3DgWQ6KfQ9g",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "HUdXNRE4VcCx64PCPYwh6KL2cxvRaKcR8bXe3Ar9fG4p",
"priceAsset": null
},
"orderType": "sell",
"amount": 13254031,
"price": 3719394900,
"timestamp": 1575393715862,
"expiration": 1577899315862,
"matcherFee": 700000,
"signature": "rjNyYFCVG2shH8XxBLsxsQMnKF8DsZS7Civ6Tz5GDusKhomGnGX8mqTM5zZ53KpGyNmw3idjUpGM5RE3rmq51UF",
"proofs": [
"rjNyYFCVG2shH8XxBLsxsQMnKF8DsZS7Civ6Tz5GDusKhomGnGX8mqTM5zZ53KpGyNmw3idjUpGM5RE3rmq51UF"
]
},
"amount": 13254031,
"price": 3719394900,
"buyMatcherFee": 700000,
"sellMatcherFee": 700000
},
{
"type": 7,
"id": "EH8cJiwEjbs8ChmPuJtJatqszyvj6JJw82A2fdiZ7jGp",
"fee": 2200000,
"feeAssetId": null,
"timestamp": 1575393723852,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"3WFWq2xB4FkATq7MaE8zg2Lcrgcvyy3sfKU6AT3MkABSNXtzyKdrNZmz166wnXgbQBUgk4CM3DvTf9M4grhTEY4R"
],
"order1": {
"version": 2,
"id": "EnUPuLnG2eHL7AANdpTn6RQRPd7qUkd6RDSLyjRQo1SD",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn",
"priceAsset": "C7NpjX1zJ1JrSGw8AvpBwfwUHU44a2u6mhCjdkJgXgrT"
},
"orderType": "buy",
"amount": 89,
"price": 733869723724,
"timestamp": 1575393723157,
"expiration": 1577899323157,
"matcherFee": 1100000,
"signature": "2KeHYCSYxLHMpeZ5xiN14e596gefuuKxW6zccYKRCu6akmUoc82LU4SYcqAr1vDLtVGa6VC5JJaR7NCYvftDDGGC",
"proofs": [
"2KeHYCSYxLHMpeZ5xiN14e596gefuuKxW6zccYKRCu6akmUoc82LU4SYcqAr1vDLtVGa6VC5JJaR7NCYvftDDGGC"
]
},
"order2": {
"version": 2,
"id": "DeUnhHAbFEHgmfQKeXLPy5yiyezUS3xqPdLEw9YP4uFH",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn",
"priceAsset": "C7NpjX1zJ1JrSGw8AvpBwfwUHU44a2u6mhCjdkJgXgrT"
},
"orderType": "sell",
"amount": 89,
"price": 733869723724,
"timestamp": 1575393723773,
"expiration": 1577899323773,
"matcherFee": 1100000,
"signature": "34XYnCBXfS9Sm8PFDntV94VeV6wqGbqrySQGC26x1vYhTouMVfEwd48sJijizaLfs8A9VqUYe5M76JGucLpZVDDU",
"proofs": [
"34XYnCBXfS9Sm8PFDntV94VeV6wqGbqrySQGC26x1vYhTouMVfEwd48sJijizaLfs8A9VqUYe5M76JGucLpZVDDU"
]
},
"amount": 89,
"price": 733869723724,
"buyMatcherFee": 1100000,
"sellMatcherFee": 1100000
},
{
"type": 7,
"id": "2yjWag7F3hfyo2acp7o5LmmkSX2biRhXbAoiMkUgq2WN",
"fee": 2200000,
"feeAssetId": null,
"timestamp": 1575393732728,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"5f4m4W3HM92LtV553YLsMQ64YZPayQ3PvD1ZvUyznhcg3KFCnmtZXcxQPUyyFfEhpX9Q7sY5eoWSYDYdGPkDhc4M"
],
"order1": {
"version": 2,
"id": "BtQNheCdGsL2khndsBBj1xtR2qvEU3o9hqUdnvpHsRF4",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Co11Tbj83TeZCnuXrZQwv6Bs4XG2sm1vGQiQ4FLDjJWs",
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "buy",
"amount": 10164643,
"price": 2024550,
"timestamp": 1575393732646,
"expiration": 1577899332646,
"matcherFee": 1100000,
"signature": "4qJJLPZYsZKJmRgD3vhxnw4NMHiTSP8rJQWM3y61ouZNJZh9WvrTdxapBksMWNdFcPHUmqbpeDs4bF1SyHkEm1uv",
"proofs": [
"4qJJLPZYsZKJmRgD3vhxnw4NMHiTSP8rJQWM3y61ouZNJZh9WvrTdxapBksMWNdFcPHUmqbpeDs4bF1SyHkEm1uv"
]
},
"order2": {
"version": 2,
"id": "4TERyazWiAeMeS3s1mvbD35KUunKns2djiGaaNHGk5eF",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Co11Tbj83TeZCnuXrZQwv6Bs4XG2sm1vGQiQ4FLDjJWs",
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "sell",
"amount": 10164643,
"price": 2024550,
"timestamp": 1575393732023,
"expiration": 1577899332023,
"matcherFee": 1100000,
"signature": "suUrgbSgU6LY1xADGqQyTBMWtat7Gouvw5nZoocqyU65C7QPTn53CoRinCVCvdMA3KqYFxAek3vMBfgnf4aR5Ww",
"proofs": [
"suUrgbSgU6LY1xADGqQyTBMWtat7Gouvw5nZoocqyU65C7QPTn53CoRinCVCvdMA3KqYFxAek3vMBfgnf4aR5Ww"
]
},
"amount": 10164630,
"price": 2024550,
"buyMatcherFee": 1099998,
"sellMatcherFee": 1099998
},
{
"type": 12,
"id": "3PcpRVC2hqZRMT6kQA8GJhxLuWcVt3mTSBZbHMk5FDSp",
"fee": 8900000,
"feeAssetId": null,
"timestamp": 1575393738042,
"version": 1,
"sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
"senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
"proofs": [
"6297yMAS3mifdDmWAAzj26muTkfbkHEFWdLM9bZQ1tgB835hhyn48nBYMc69NesnxrYFnyXDgzE4th3fA6mJLAoL"
],
"data": [
{
"key": "qwe?main.e3350ff4d88d534234ef.js?1?0?3",
"type": "binary",
"value": "base64:bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiV2hhdCBkbyB5b3Ugd2FudCB0byBkbyBuZXh0IHdpdGggeW91ciBhcHA/Il0pKSwodCgpKCksVmkoNTQsMCxbWyJzZWxlY3Rpb24iLDFdXSxudWxsLDAsImlucHV0IixbWyJ0eXBlIiwiaGlkZGVuIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1NSwwLG51bGwsbnVsbCwyNSwiZGl2IixbWyJjbGFzcyIsImNhcmQtY29udGFpbmVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1NiwwLG51bGwsbnVsbCw0LCJkaXYiLFtbImNsYXNzIiwiY2FyZCBjYXJkLXNtYWxsIl0sWyJ0YWJpbmRleCIsIjAiXV0sbnVsbCxbW251bGwsImNsaWNrIl1dLChmdW5jdGlvbih0LGUsbil7dmFyIHI9ITA7cmV0dXJuImNsaWNrIj09PWUmJihyPSExIT09KEdyKHQsNTQpLnZhbHVlPSJjb21wb25lbnQiKSYmcikscn0pLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1NywwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDU4LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1OSwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIk5ldyBDb21wb25lbnQiXSkpLCh0KCkoKSxWaSg2MSwwLG51bGwsbnVsbCw0LCJkaXYiLFtbImNsYXNzIiwiY2FyZCBjYXJkLXNtYWxsIl0sWyJ0YWJpbmRleCIsIjAiXV0sbnVsbCxbW251bGwsImNsaWNrIl1dLChmdW5jdGlvbih0LGUsbil7dmFyIHI9ITA7cmV0dXJuImNsaWNrIj09PWUmJihyPSExIT09KEdyKHQsNTQpLnZhbHVlPSJtYXRlcmlhbCIpJiZyKSxyfSksbnVsbCxudWxsKSksKHQoKSgpLFZpKDYyLDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNjMsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDY0LDAsbnVsbCxudWxsLDEsInNwYW4iLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiQW5ndWxhciBNYXRlcmlhbCJdKSksKHQoKSgpLFZpKDY2LDAsbnVsbCxudWxsLDQsImRpdiIsW1siY2xhc3MiLCJjYXJkIGNhcmQtc21hbGwiXSxbInRhYmluZGV4IiwiMCJdXSxudWxsLFtbbnVsbCwiY2xpY2siXV0sKGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0hMDtyZXR1cm4iY2xpY2siPT09ZSYmKHI9ITEhPT0oR3IodCw1NCkudmFsdWU9ImRlcGVuZGVuY3kiKSYmcikscn0pLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg2NywwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDY4LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xOSAxM2gtNnY2aC0ydi02SDV2LTJoNlY1aDJ2Nmg2djJ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg2OSwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIkFkZCBEZXBlbmRlbmN5Il0pKSwodCgpKCksVmkoNzEsMCxudWxsLG51bGwsNCwiZGl2IixbWyJjbGFzcyIsImNhcmQgY2FyZC1zbWFsbCJdLFsidGFiaW5kZXgiLCIwIl1dLG51bGwsW1tudWxsLCJjbGljayJdXSwoZnVuY3Rpb24odCxlLG4pe3ZhciByPSEwO3JldHVybiJjbGljayI9PT1lJiYocj0hMSE9PShHcih0LDU0KS52YWx1ZT0idGVzdCIpJiZyKSxyfSksbnVsbCxudWxsKSksKHQoKSgpLFZpKDcyLDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNzMsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDc0LDAsbnVsbCxudWxsLDEsInNwYW4iLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiUnVuIGFuZCBXYXRjaCBUZXN0cyJdKSksKHQoKSgpLFZpKDc2LDAsbnVsbCxudWxsLDQsImRpdiIsW1siY2xhc3MiLCJjYXJkIGNhcmQtc21hbGwiXSxbInRhYmluZGV4IiwiMCJdXSxudWxsLFtbbnVsbCwiY2xpY2siXV0sKGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0hMDtyZXR1cm4iY2xpY2siPT09ZSYmKHI9ITEhPT0oR3IodCw1NCkudmFsdWU9ImJ1aWxkIikmJnIpLHJ9KSxudWxsLG51bGwpKSwodCgpKCksVmkoNzcsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImNsYXNzIiwibWF0ZXJpYWwtaWNvbnMiXSxbImhlaWdodCIsIjI0Il0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0Il0sWyJ3aWR0aCIsIjI0Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg3OCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTkgMTNoLTZ2NmgtMnYtNkg1di0yaDZWNWgydjZoNnYyeiJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNzksMCxudWxsLG51bGwsMSwic3BhbiIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJCdWlsZCBmb3IgUHJvZHVjdGlvbiJdKSksKHQoKSgpLFZpKDgxLDAsbnVsbCxudWxsLDExLCJkaXYiLFtbImNsYXNzIiwidGVybWluYWwiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksb28oODIsMTYzODQsbnVsbCwwLGJ1LFtdLHtuZ1N3aXRjaDpbMCwibmdTd2l0Y2giXX0sbnVsbCksKHQoKSgpLExpKDE2Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsUGgpKSxvbyg4NCwxNjM4NCxudWxsLDAsQ3UsW01uLEluLGJ1XSxudWxsLG51bGwpLCh0KCkoKSxMaSgxNjc3NzIxNixudWxsLG51bGwsMSxudWxsLGtoKSksb28oODYsMjc4NTI4LG51bGwsMCx4dSxbTW4sSW4sYnVdLHtuZ1N3aXRjaENhc2U6WzAsIm5nU3dpdGNoQ2FzZSJdfSxudWxsKSwodCgpKCksTGkoMTY3NzcyMTYsbnVsbCxudWxsLDEsbnVsbCxBaCkpLG9vKDg4LDI3ODUyOCxudWxsLDAseHUsW01uLEluLGJ1XSx7bmdTd2l0Y2hDYXNlOlswLCJuZ1N3aXRjaENhc2UiXX0sbnVsbCksKHQoKSgpLExpKDE2Nzc3MjE2LG51bGwsbnVsbCwxLG51bGwsSWgpKSxvbyg5MCwyNzg1MjgsbnVsbCwwLHh1LFtNbixJbixidV0se25nU3dpdGNoQ2FzZTpbMCwibmdTd2l0Y2hDYXNlIl19LG51bGwpLCh0KCkoKSxMaSgxNjc3NzIxNixudWxsLG51bGwsMSxudWxsLFJoKSksb28oOTIsMjc4NTI4LG51bGwsMCx4dSxbTW4sSW4sYnVdLHtuZ1N3aXRjaENhc2U6WzAsIm5nU3dpdGNoQ2FzZSJdfSxudWxsKSwodCgpKCksVmkoOTMsMCxudWxsLG51bGwsNDcsImRpdiIsW1siY2xhc3MiLCJjYXJkLWNvbnRhaW5lciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoOTQsMCxudWxsLG51bGwsNiwiYSIsW1siY2xhc3MiLCJjaXJjbGUtbGluayJdLFsiaHJlZiIsImh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9hbmltYXRpb25zIl0sWyJyZWwiLCJub29wZW5lciJdLFsidGFyZ2V0IiwiX2JsYW5rIl0sWyJ0aXRsZSIsIkFuaW1hdGlvbnMiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDk1LDAsbnVsbCxudWxsLDUsIjpzdmc6c3ZnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyMCJdLFsiaGVpZ2h0IiwiMjMuNDUzIl0sWyJpZCIsIkdyb3VwXzIwIl0sWyJ2aWV3Qm94IiwiMCAwIDIxLjgxMyAyMy40NTMiXSxbIndpZHRoIiwiMjEuODEzIl0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg5NiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDA5OS41ODQsOTcyLjczNmgwbC0xMC44ODIsMy45LDEuNjM3LDE0LjQsOS4yNDUsNS4xNTMsOS4yNDUtNS4xNTMsMS42ODYtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMTUiXSxbImZpbGwiLCIjZmZhNzI2Il0sWyJpZCIsIlBhdGhfMTUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDA4OC43MDIgLTk3Mi43MzYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg5NywwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDE4MS41MTYsOTcyLjczNnYyMy40NTNsOS4yNDUtNS4xNTMsMS42ODYtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMTYiXSxbImZpbGwiLCIjZmI4YzAwIl0sWyJpZCIsIlBhdGhfMTYiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDE3MC42MzMgLTk3Mi43MzYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg5OCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDEzNy41MjksMTA3Ni4xMjdsLTcuNy0zLjcyMyw0LjQxNy0yLjcyMSw3Ljc1MywzLjcyM1oiXSxbImRhdGEtbmFtZSIsIlBhdGggMTciXSxbImZpbGwiLCIjZmZlMGIyIl0sWyJpZCIsIlBhdGhfMTciXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDEyNS4wMDMgLTEwNTguMzE1KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoOTksMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTQxMzcuNTI5LDEwNTEuNzA1bC03LjctMy43MjMsNC40MTctMi43MjEsNy43NTMsMy43MjNaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDE4Il0sWyJmaWxsIiwiI2ZmZjNlMCJdLFsiaWQiLCJQYXRoXzE4Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTQxMjUuMDAzIC0xMDM2Ljc1NykiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEwMCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDEzNy41MjksMTAyNy4yODNsLTcuNy0zLjcyMyw0LjQxNy0yLjcyMSw3Ljc1MywzLjcyM1oiXSxbImRhdGEtbmFtZSIsIlBhdGggMTkiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMTkiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDEyNS4wMDMgLTEwMTUuMTk5KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTAxLDAsbnVsbCxudWxsLDcsImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL2NsaS5hbmd1bGFyLmlvLyJdLFsicmVsIiwibm9vcGVuZXIiXSxbInRhcmdldCIsIl9ibGFuayJdLFsidGl0bGUiLCJDTEkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEwMiwwLG51bGwsbnVsbCw2LCI6c3ZnOnN2ZyIsW1siYWx0IiwiQW5ndWxhciBDTEkgTG9nbyJdLFsiaGVpZ2h0IiwiMjMuNDQ3Il0sWyJ2aWV3Qm94IiwiMCAwIDIxLjc2MiAyMy40NDciXSxbIndpZHRoIiwiMjEuNzYyIl0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDMsMCxudWxsLG51bGwsNSwiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyMSJdLFsiaWQiLCJHcm91cF8yMSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDApIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDQsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTI2NjAuMzEzLDMxMy42MThoMGwtMTAuODMzLDMuOSwxLjYzNywxNC40LDkuMiw1LjE1Miw5LjI0NC01LjE1MiwxLjY4NS0xNC40WiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAyMCJdLFsiZmlsbCIsIiMzNzQ3NGYiXSxbImlkIiwiUGF0aF8yMCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0yNjQ5LjQ4IC0zMTMuNjE4KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTA1LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0yNzQxLjg4MywzMTMuNjE4djIzLjQ0N2w5LjI0NC01LjE1MiwxLjY4NS0xNC40WiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAyMSJdLFsiZmlsbCIsIiMyNjMyMzgiXSxbImlkIiwiUGF0aF8yMSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0yNzMxLjA1IC0zMTMuNjE4KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTA2LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0yNjkyLjI5MywzNzkuMTY5aDExLjcyNFYzNjguNjE4aC0xMS43MjRabTExLjE1OS0uNmgtMTAuNjA4di05LjM0NWgxMC42MjF2OS4zNDVaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDIyIl0sWyJmaWxsIiwiI2ZmZiJdLFsiaWQiLCJQYXRoXzIyIl0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTI2ODcuMjc0IC0zNjIuMTcpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDcsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTI3MDkuMzMxLDM5My42ODhsLjQuNDE2LDIuMjY1LTIuMjgtMi4yOTQtMi4yOTQtLjQuNCwxLjg5MywxLjg5M1oiXSxbImRhdGEtbmFtZSIsIlBhdGggMjMiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMjMiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMjcwMi4yODkgLTM4MC42MzEpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDgsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJkYXRhLW5hbWUiLCJSZWN0YW5nbGUgMTIiXSxbImZpbGwiLCIjZmZmIl0sWyJoZWlnaHQiLCIwLjQ2OSJdLFsiaWQiLCJSZWN0YW5nbGVfMTIiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg5LjcwOSAxMy43NDQpIl0sWyJ3aWR0aCIsIjMuNTE3Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMDksMCxudWxsLG51bGwsMTIsImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL2F1Z3VyeS5yYW5nbGUuaW8vIl0sWyJyZWwiLCJub29wZW5lciJdLFsidGFyZ2V0IiwiX2JsYW5rIl0sWyJ0aXRsZSIsIkF1Z3VyeSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTEwLDAsbnVsbCxudWxsLDExLCI6c3ZnOnN2ZyIsW1siOnhtbG5zOnhsaW5rIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayJdLFsiYWx0IiwiQW5ndWxhciBBdWd1cnkgTG9nbyJdLFsiaGVpZ2h0IiwiMjMuNDQ3Il0sWyJ2aWV3Qm94IiwiMCAwIDIxLjgxIDIzLjQ0NyJdLFsid2lkdGgiLCIyMS44MSJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTExLDAsbnVsbCxudWxsLDIsIjpzdmc6ZGVmcyIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDExMiwwLG51bGwsbnVsbCwxLCI6c3ZnOmNsaXBQYXRoIixbWyJpZCIsImNsaXAtcGF0aCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTEzLDAsbnVsbCxudWxsLDAsIjpzdmc6cmVjdCIsW1siZGF0YS1uYW1lIiwiUmVjdGFuZ2xlIDEzIl0sWyJmaWxsIiwibm9uZSJdLFsiaGVpZ2h0IiwiMTAuMjciXSxbImlkIiwiUmVjdGFuZ2xlXzEzIl0sWyJ3aWR0aCIsIjEwLjMzOCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTE0LDAsbnVsbCxudWxsLDcsIjpzdmc6ZyIsW1siZGF0YS1uYW1lIiwiR3JvdXAgMjUiXSxbImlkIiwiR3JvdXBfMjUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwKSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTE1LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0zNzgwLjE1NSwzMTEuNDE3aDBsLTEwLjg4MSwzLjksMS42MzcsMTQuNCw5LjI0NCw1LjE1Miw5LjI0NC01LjE1MiwxLjY4NS0xNC40WiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAyNCJdLFsiZmlsbCIsIiM0YTM0OTMiXSxbImlkIiwiUGF0aF8yNCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0zNzY5LjI3NCAtMzExLjQxNykiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDExNiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMzg2Mi4wODgsMzExLjQxN3YyMy40NDdsOS4yNDQtNS4xNTIsMS42ODUtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMjUiXSxbImZpbGwiLCIjMzExYjkyIl0sWyJpZCIsIlBhdGhfMjUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMzg1MS4yMDcgLTMxMS40MTcpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMTcsMCxudWxsLG51bGwsMywiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyNCJdLFsiaWQiLCJHcm91cF8yNCJdLFsib3BhY2l0eSIsIjAuNSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDYuMTk0IDYuNzMpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMTgsMCxudWxsLG51bGwsMiwiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCAyMyJdLFsiaWQiLCJHcm91cF8yMyJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgMCkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDExOSwwLG51bGwsbnVsbCwxLCI6c3ZnOmciLFtbImNsaXAtcGF0aCIsInVybCgjY2xpcC1wYXRoKSJdLFsiZGF0YS1uYW1lIiwiR3JvdXAgMjIiXSxbImlkIiwiR3JvdXBfMjIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyMCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMzgzMi40LDM3My4yNTJhNS4xNjgsNS4xNjgsMCwxLDEtNS44MjgtNC4zODMsNS4yMTYsNS4yMTYsMCwwLDEsMi41NzQuMywzLjAxNywzLjAxNywwLDEsMCwzLjI1Miw0LjA4NloiXSxbImRhdGEtbmFtZSIsIlBhdGggMjYiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMjYiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMzgyMi4xMDcgLTM2OC44MjEpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjEsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTM4MzAuNTgyLDM3MC44NDhhNS4xNjIsNS4xNjIsMCwxLDEtMy4yNTQtNC4wODYsMy4wMTcsMy4wMTcsMCwxLDAsMy4yNTIsNC4wODZaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDI3Il0sWyJmaWxsIiwiI2ZmZiJdLFsiaWQiLCJQYXRoXzI3Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTM4MTQuMzExIC0zNTkuOTY5KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTIyLDAsbnVsbCxudWxsLDUsImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL3d3dy5wcm90cmFjdG9ydGVzdC5vcmcvIl0sWyJyZWwiLCJub29wZW5lciJdLFsidGFyZ2V0IiwiX2JsYW5rIl0sWyJ0aXRsZSIsIlByb3RyYWN0b3IiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyMywwLG51bGwsbnVsbCw0LCI6c3ZnOnN2ZyIsW1siYWx0IiwiQW5ndWxhciBQcm90cmFjdG9yIExvZ28iXSxbImhlaWdodCIsIjIzLjQ0NyJdLFsidmlld0JveCIsIjAgMCAyMS44MSAyMy40NDciXSxbIndpZHRoIiwiMjEuODEiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyNCwwLG51bGwsbnVsbCwzLCI6c3ZnOmciLFtbImRhdGEtbmFtZSIsIkdyb3VwIDI2Il0sWyJpZCIsIkdyb3VwXzI2Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEyNSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNDYyMC4xNTUsMzExLjQxN2gwbC0xMC44ODEsMy45LDEuNjM3LDE0LjQsOS4yNDQsNS4xNTIsOS4yNDQtNS4xNTIsMS42ODUtMTQuNFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMjgiXSxbImZpbGwiLCIjZTEzNDM5Il0sWyJpZCIsIlBhdGhfMjgiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDYwOS4yNzQgLTMxMS40MTcpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjYsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTQ3MDIuMDg4LDMxMS40MTd2MjMuNDQ3bDkuMjQ0LTUuMTUyLDEuNjg1LTE0LjRaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDI5Il0sWyJmaWxsIiwiI2I1MmYzMiJdLFsiaWQiLCJQYXRoXzI5Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTQ2OTEuMjA3IC0zMTEuNDE3KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTI3LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk00NjUxLjA0NCwzNjkuNTh2LS40MjFoMS40ODNhNy42LDcuNiwwLDAsMC0yLjEwNi01LjA1MmwtMS4xMjMsMS4xMjMtLjMtLjMsMS4xMjItMS4xMjFhNy41ODgsNy41ODgsMCwwLDAtNC45NDYtMi4wNTV2MS40ODJoLS40MjF2LTEuNDg1YTcuNTg5LDcuNTg5LDAsMCwwLTUuMDUxLDIuMDU4bDEuMTIyLDEuMTIxLS4zLjMtMS4xMjMtMS4xMjNhNy41OTEsNy41OTEsMCwwLDAtMi4xMDYsNS4wNTJoMS40ODJ2LjQyMWgtMS40ODl2MS43MzRoMTUuMjQxVjM2OS41OFptLTEwLjk2Ni0uMjYzYTQuODM1LDQuODM1LDAsMCwxLDkuNjcsMFoiXSxbImRhdGEtbmFtZSIsIlBhdGggMzAiXSxbImZpbGwiLCIjZmZmIl0sWyJpZCIsIlBhdGhfMzAiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNDYzNC4wMDggLTM1NS44NTIpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjgsMCxudWxsLG51bGwsMiwiYSIsW1siY2xhc3MiLCJjaXJjbGUtbGluayJdLFsiaHJlZiIsImh0dHBzOi8vd3d3Lm1lZXR1cC5jb20vZmluZC8/a2V5d29yZHM9YW5ndWxhciJdLFsicmVsIiwibm9vcGVuZXIiXSxbInRhcmdldCIsIl9ibGFuayJdLFsidGl0bGUiLCJGaW5kIGEgTG9jYWwgTWVldHVwIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMjksMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImFsdCIsIk1lZXR1cCBMb2dvIl0sWyJoZWlnaHQiLCIyMy40NDciXSxbInZpZXdCb3giLCIwIDAgMjQuNjA3IDIzLjQ0NyJdLFsid2lkdGgiLCIyNC42MDciXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEzMCwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMjEuMjIxLDE0Ljk1QTQuMzkzLDQuMzkzLDAsMCwxLDE3LjYsMTkuMjgxYTQuNDUyLDQuNDUyLDAsMCwxLS44LjA2OWMtLjA5LDAtLjEyNS4wMzUtLjE1NC4xMTdhMi45MzksMi45MzksMCwwLDEtMi41MDYsMi4wOTEsMi44NjgsMi44NjgsMCwwLDEtMi4yNDgtLjYyNC4xNjguMTY4LDAsMCwwLS4yNDUtLjAwNSwzLjkyNiwzLjkyNiwwLDAsMS0yLjU4OS43NDEsNC4wMTUsNC4wMTUsMCwwLDEtMy43LTMuMzQ3LDIuNywyLjcsMCwwLDEtLjA0My0uMzhjMC0uMTA2LS4wNDItLjE0Ni0uMTQzLS4xNjZhMy41MjQsMy41MjQsMCwwLDEtMS41MTYtLjY5QTMuNjIzLDMuNjIzLDAsMCwxLDIuMjMsMTQuNTU3YTMuNjYsMy42NiwwLDAsMSwxLjA3Ny0zLjA4NS4xMzguMTM4LDAsMCwwLC4wMjYtLjIsMy4zNDgsMy4zNDgsMCwwLDEtLjQ1MS0xLjgyMSwzLjQ2LDMuNDYsMCwwLDEsMi43NDktMy4yOC40NC40NCwwLDAsMCwuMzU1LS4yODEsNS4wNzIsNS4wNzIsMCwwLDEsMy44NjMtMyw1LjAyOCw1LjAyOCwwLDAsMSwzLjU1NS42NjYuMzEuMzEsMCwwLDAsLjI3MS4wM0E0LjUsNC41LDAsMCwxLDE4LjMsNC43YTQuNCw0LjQsMCwwLDEsMS4zMzQsMi43NTEsMy42NTgsMy42NTgsMCwwLDEsLjAyMi43MDYuMTMxLjEzMSwwLDAsMCwuMS4xNTcsMi40MzIsMi40MzIsMCwwLDEsMS41NzQsMS42NDUsMi40NjQsMi40NjQsMCwwLDEtLjcsMi42MTZjLS4wNjUuMDY0LS4wNTEuMS0uMDE0LjE2NkE0LjMyMSw0LjMyMSwwLDAsMSwyMS4yMjEsMTQuOTVaTTEzLjQsMTQuNjA3YTIuMDksMi4wOSwwLDAsMCwxLjQwOSwxLjk4Miw0LjcsNC43LDAsMCwwLDEuMjc1LjIyMSwxLjgwNywxLjgwNywwLDAsMCwuOS0uMTUxLjU0Mi41NDIsMCwwLDAsLjMyMS0uNTQ1LjU1OC41NTgsMCwwLDAtLjM1OS0uNTM0LDEuMiwxLjIsMCwwLDAtLjI1NC0uMDc4Yy0uMjYyLS4wNDctLjUyNi0uMDg2LS43ODctLjEzOGEuNjc0LjY3NCwwLDAsMS0uNjE3LS43NSwzLjM5NCwzLjM5NCwwLDAsMSwuMjE4LTEuMTA5Yy4yMTctLjY1OC41MDktMS4yODYuNzktMS45MThhMTUuNjA5LDE1LjYwOSwwLDAsMCwuNzQ1LTEuODYsMS45NSwxLjk1LDAsMCwwLC4wNi0xLjA3MywxLjI4NiwxLjI4NiwwLDAsMC0xLjA1MS0xLjAzMywxLjk3NywxLjk3NywwLDAsMC0xLjUyMS4yLjMzOS4zMzksMCwwLDEtLjQ0Ni0uMDQyYy0uMS0uMDkyLS4yLS4xODktLjMwNy0uMjg0YTEuMjE0LDEuMjE0LDAsMCwwLTEuNjQzLS4wNjEsNy41NjMsNy41NjMsMCwwLDEtLjYxNC41MTJBLjU4OC41ODgsMCwwLDEsMTAuODgzLDhjLS4yMTUtLjExNS0uNDM3LS4yMTUtLjY1OS0uMzE2YTIuMTUzLDIuMTUzLDAsMCwwLS42OTUtLjI0OEEyLjA5MSwyLjA5MSwwLDAsMCw3LjU0MSw4LjU2MmE5LjkxNSw5LjkxNSwwLDAsMC0uNDA1Ljk4NmMtLjU1OSwxLjU0NS0xLjAxNSwzLjEyMy0xLjQ4Nyw0LjdhMS41MjgsMS41MjgsMCwwLDAsLjYzNCwxLjc3NywxLjc1NSwxLjc1NSwwLDAsMCwxLjUuMjExLDEuMzUsMS4zNSwwLDAsMCwuODI0LS44NThjLjU0My0xLjI4MSwxLjAzMi0yLjU4NCwxLjU1LTMuODc1LjE0Mi0uMzU1LjI4LS43MTIuNDMyLTEuMDY0YS41NDguNTQ4LDAsMCwxLC44NTEtLjI0LjYyMi42MjIsMCwwLDEsLjE4NS41MzksMi4xNjEsMi4xNjEsMCwwLDEtLjE4MS42MjFjLS4zMzcuODUyLS42OCwxLjctMS4wMTgsMi41NTJhMi41NjQsMi41NjQsMCwwLDAtLjE3My41MjguNjI0LjYyNCwwLDAsMCwuMzMzLjcxLDEuMDczLDEuMDczLDAsMCwwLC44MTQuMDM0LDEuMjIsMS4yMiwwLDAsMCwuNjU3LS42NTVxLjc1OC0xLjQ4OCwxLjUxMS0yLjk3OC4zNS0uNjg3LjcwOS0xLjM3YTEuMDczLDEuMDczLDAsMCwxLC4zNTctLjQzNC40My40MywwLDAsMSwuNDYzLS4wMTYuMzczLjM3MywwLDAsMSwuMTUzLjM4Ny43LjcsMCwwLDEtLjA1Ny4yMzZjLS4wNjUuMTU3LS4xMjcuMzE2LS4yLjQ2OS0uNDIuODgzLS44NDYsMS43NjMtMS4yNjIsMi42NDhBMi40NjMsMi40NjMsMCwwLDAsMTMuNCwxNC42MDdabTUuODg4LDYuNTA4YTEuMDksMS4wOSwwLDAsMC0yLjE3OS4wMDYsMS4wOSwxLjA5LDAsMCwwLDIuMTc5LS4wMDZaTTEuMDI4LDEyLjEzOWExLjAzOCwxLjAzOCwwLDEsMCwuMDEtMi4wNzUsMS4wMzgsMS4wMzgsMCwwLDAtLjAxLDIuMDc1Wk0xMy43ODIuNTI4YTEuMDI3LDEuMDI3LDAsMSwwLS4wMTEsMi4wNTVBMS4wMjcsMS4wMjcsMCwwLDAsMTMuNzgyLjUyOFpNMjIuMjEsNi45NWEuODgyLjg4MiwwLDAsMC0xLjc2My4wMTFBLjg4Mi44ODIsMCwwLDAsMjIuMjEsNi45NVpNNC4xNTMsNC40MzlhLjc4NS43ODUsMCwxLDAsLjc4Ny0uNzhBLjc2Ni43NjYsMCwwLDAsNC4xNTMsNC40MzlabTguMjIxLDE4LjIyYS42NzYuNjc2LDAsMSwwLS42NzcuNjY2QS42NzEuNjcxLDAsMCwwLDEyLjM3NCwyMi42NThaTTIyLjg3MiwxMi4yYS42NzQuNjc0LDAsMCwwLS42NjUuNjY1LjY1Ni42NTYsMCwwLDAsLjY1NS42NDMuNjM0LjYzNCwwLDAsMCwuNjU1LS42NDRBLjY1NC42NTQsMCwwLDAsMjIuODcyLDEyLjJaTTcuMTcxLS4xMjNBLjU0Ni41NDYsMCwwLDAsNi42MTMuNDNhLjU1My41NTMsMCwxLDAsMS4xMDYsMEEuNTM5LjUzOSwwLDAsMCw3LjE3MS0uMTIzWk0yNC4xMTksOS4yMzRhLjUwNy41MDcsMCwwLDAtLjQ5My40ODguNDk0LjQ5NCwwLDAsMCwuNDk0LjQ5NC40OC40OCwwLDAsMCwuNDg3LS40ODNBLjQ5MS40OTEsMCwwLDAsMjQuMTE5LDkuMjM0Wm0tMTkuNDU0LDkuN2EuNS41LDAsMCwwLS40ODgtLjQ4OC40OTEuNDkxLDAsMCwwLS40ODcuNS40ODMuNDgzLDAsMCwwLC40OTEuNDc5QS40OS40OSwwLDAsMCw0LjY2NSwxOC45MzZaIl0sWyJmaWxsIiwiI2Y2NDA2MCJdLFsiaWQiLCJsb2dvLS1tU3dhcm0iXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwIDAuMTIzKSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTMxLDAsbnVsbCxudWxsLDksImEiLFtbImNsYXNzIiwiY2lyY2xlLWxpbmsiXSxbImhyZWYiLCJodHRwczovL2dpdHRlci5pbS9hbmd1bGFyL2FuZ3VsYXIiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXSxbInRpdGxlIiwiSm9pbiB0aGUgQ29udmVyc2F0aW9uIG9uIEdpdHRlciJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTMyLDAsbnVsbCxudWxsLDgsIjpzdmc6c3ZnIixbWyJhbHQiLCJHaXR0ZXIgTG9nbyJdLFsiaGVpZ2h0IiwiMTkuNDQ3Il0sWyJ2aWV3Qm94IiwiMCAwIDE5LjQ0NyAxOS40NDciXSxbIndpZHRoIiwiMTkuNDQ3Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMzMsMCxudWxsLG51bGwsNywiOnN2ZzpnIixbWyJkYXRhLW5hbWUiLCJHcm91cCA0MCJdLFsiaWQiLCJHcm91cF80MCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKC0xNjEyIC00MDUpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMzQsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJkYXRhLW5hbWUiLCJSZWN0YW5nbGUgMTkiXSxbImZpbGwiLCIjZTYwMjU3Il0sWyJoZWlnaHQiLCIxOS40NDciXSxbImlkIiwiUmVjdGFuZ2xlXzE5Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMTYxMiA0MDUpIl0sWyJ3aWR0aCIsIjE5LjQ0NyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTM1LDAsbnVsbCxudWxsLDUsIjpzdmc6ZyIsW1siaWQiLCJnaXR0ZXIiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgxNjE3Ljc5NSA0MDguNjM2KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTM2LDAsbnVsbCxudWxsLDQsIjpzdmc6ZyIsW1siZGF0YS1uYW1lIiwiR3JvdXAgMzMiXSxbImlkIiwiR3JvdXBfMzMiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwIDApIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMzcsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJkYXRhLW5hbWUiLCJSZWN0YW5nbGUgMTUiXSxbImZpbGwiLCIjZmZmIl0sWyJoZWlnaHQiLCI5LjYwMSJdLFsiaWQiLCJSZWN0YW5nbGVfMTUiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgyLjMwNCAyLjMyNCkiXSxbIndpZHRoIiwiMS4wNCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTM4LDAsbnVsbCxudWxsLDAsIjpzdmc6cmVjdCIsW1siZGF0YS1uYW1lIiwiUmVjdGFuZ2xlIDE2Il0sWyJmaWxsIiwiI2ZmZiJdLFsiaGVpZ2h0IiwiOS42MDEiXSxbImlkIiwiUmVjdGFuZ2xlXzE2Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoNC42MDcgMi4zMjQpIl0sWyJ3aWR0aCIsIjEuMDQiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEzOSwwLG51bGwsbnVsbCwwLCI6c3ZnOnJlY3QiLFtbImRhdGEtbmFtZSIsIlJlY3RhbmdsZSAxNyJdLFsiZmlsbCIsIiNmZmYiXSxbImhlaWdodCIsIjQuNjQ4Il0sWyJpZCIsIlJlY3RhbmdsZV8xNyJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDYuOTEgMi4zMjQpIl0sWyJ3aWR0aCIsIjEuMDQiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0MCwwLG51bGwsbnVsbCwwLCI6c3ZnOnJlY3QiLFtbImRhdGEtbmFtZSIsIlJlY3RhbmdsZSAxOCJdLFsiZmlsbCIsIiNmZmYiXSxbImhlaWdodCIsIjYuOTcxIl0sWyJpZCIsIlJlY3RhbmdsZV8xOCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgMCkiXSxbIndpZHRoIiwiMS4wNCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTQxLDAsbnVsbCxudWxsLDEyLCJmb290ZXIiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiIExvdmUgQW5ndWxhcj/CoCAiXSkpLCh0KCkoKSxWaSgxNDMsMCxudWxsLG51bGwsNiwiYSIsW1siaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyIgR2l2ZSBvdXIgcmVwbyBhIHN0YXIuICJdKSksKHQoKSgpLFZpKDE0NSwwLG51bGwsbnVsbCw0LCJkaXYiLFtbImNsYXNzIiwiZ2l0aHViLXN0YXItYmFkZ2UiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0NiwwLG51bGwsbnVsbCwyLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0NywwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMCAwaDI0djI0SDB6Il0sWyJmaWxsIiwibm9uZSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTQ4LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xMiAxNy4yN0wxOC4xOCAyMWwtMS42NC03LjAzTDIyIDkuMjRsLTcuMTktLjYxTDEyIDIgOS4xOSA4LjYzIDIgOS4yNGw1LjQ2IDQuNzNMNS44MiAyMXoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyIgU3RhciAiXSkpLCh0KCkoKSxWaSgxNTAsMCxudWxsLG51bGwsMywiYSIsW1siaHJlZiIsImh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1MSwwLG51bGwsbnVsbCwyLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1MiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il0sWyJmaWxsIiwiIzE5NzZkMiJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTUzLDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0wIDBoMjR2MjRIMHoiXSxbImZpbGwiLCJub25lIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxNTQsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImFsdCIsIkdyYXkgQ2xvdWRzIEJhY2tncm91bmQiXSxbImhlaWdodCIsIjQ4NS42NzciXSxbImlkIiwiY2xvdWRzIl0sWyJ2aWV3Qm94IiwiMCAwIDI2MTEuMDg0IDQ4NS42NzciXSxbIndpZHRoIiwiMjYxMS4wODQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1NSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMjM3OS43MDksODYzLjc5M2MxMC05My03Ny0xNzEtMTY4LTE0OS01Mi0xMTQtMjI1LTEwNS0yNjQsMTUtNzUsMy0xNDAsNTktMTUyLDEzMy0zMCwyLjgzLTY2LjcyNSw5LjgyOS05My41LDI2LjI1LTI2Ljc3MS0xNi40MjEtNjMuNS0yMy40Mi05My41LTI2LjI1LTEyLTc0LTc3LTEzMC0xNTItMTMzLTM5LTEyMC0yMTItMTI5LTI2NC0xNS01NC4wODQtMTMuMDc1LTEwNi43NTMsOS4xNzMtMTM4LjQ4OCw0OC45LTMxLjczNC0zOS43MjYtODQuNC02MS45NzQtMTM4LjQ4Ny00OC45LTUyLTExNC0yMjUtMTA1LTI2NCwxNWExNjIuMDI3LDE2Mi4wMjcsMCwwLDAtMTAzLjE0Nyw0My4wNDRjLTMwLjYzMy00NS4zNjUtODcuMS03Mi4wOTEtMTQ1LjIwNi01OC4wNDQtNTItMTE0LTIyNS0xMDUtMjY0LDE1LTc1LDMtMTQwLDU5LTE1MiwxMzMtNTMsNS0xMjcsMjMtMTMwLDgzLTIsNDIsMzUsNzIsNzAsODYsNDksMjAsMTA2LDE4LDE1Nyw1YTE2NS42MjUsMTY1LjYyNSwwLDAsMCwxMjAsMGM0Nyw5NCwxNzgsMTEzLDI1MSwzMyw2MS4xMTIsOC4wMTUsMTEzLjg1NC01LjcyLDE1MC40OTItMjkuNzY0YTE2NS42MiwxNjUuNjIsMCwwLDAsMTEwLjg2MS0zLjIzNmM0Nyw5NCwxNzgsMTEzLDI1MSwzMywzMS4zODUsNC4xMTYsNjAuNTYzLDIuNDk1LDg2LjQ4Ny0zLjMxMSwyNS45MjQsNS44MDYsNTUuMSw3LjQyNyw4Ni40ODgsMy4zMTEsNzMsODAsMjA0LDYxLDI1MS0zM2ExNjUuNjI1LDE2NS42MjUsMCwwLDAsMTIwLDBjNTEsMTMsMTA4LDE1LDE1Ny01YTE0Ny4xODgsMTQ3LjE4OCwwLDAsMCwzMy41LTE4LjY5NCwxNDcuMjE3LDE0Ny4yMTcsMCwwLDAsMzMuNSwxOC42OTRjNDksMjAsMTA2LDE4LDE1Nyw1YTE2NS42MjUsMTY1LjYyNSwwLDAsMCwxMjAsMGM0Nyw5NCwxNzgsMTEzLDI1MSwzM0MyNDQ2LjcwOSwxMDkzLjc5MywyNTU0LjcwOSw5MjIuNzkzLDIzNzkuNzA5LDg2My43OTNaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDM5Il0sWyJmaWxsIiwiI2VlZSJdLFsiaWQiLCJQYXRoXzM5Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMTQyLjY5IC02MzQuMzEyKSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTU2LDE2Nzc3MjE2LG51bGwsbnVsbCwxLCJyb3V0ZXItb3V0bGV0IixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSxvbygxNTcsMjEyOTkyLG51bGwsMCxlaCxbdGgsTW4scm4sWzgsbnVsbF0sa2VdLG51bGwsbnVsbCldLChmdW5jdGlvbih0LGUpe3QoZSw4MiwwLEdyKGUsNTQpLnZhbHVlKSx0KGUsODYsMCwibWF0ZXJpYWwiKSx0KGUsODgsMCwiZGVwZW5kZW5jeSIpLHQoZSw5MCwwLCJ0ZXN0IiksdChlLA=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?1?1?3",
"type": "binary",
"value": "base64:OTIsMCwiYnVpbGQiKSx0KGUsMTU3LDApfSksKGZ1bmN0aW9uKHQsZSl7dChlLDIxLDAsZS5jb21wb25lbnQudGl0bGUpfSkpfWZ1bmN0aW9uIGpoKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwwLG51bGwsbnVsbCwxLCJhcHAtcm9vdCIsW10sbnVsbCxudWxsLG51bGwsTWgsVGgpKSxvbygxLDQ5MTUyLG51bGwsMCx1dSxbXSxudWxsLG51bGwpXSxudWxsLG51bGwpfXZhciBOaD1qcigiYXBwLXJvb3QiLHV1LGpoLHt9LHt9LFtdKSxEaD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksVWg9b3UoYXUsW3V1XSwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT17fSxuPVtdLHI9ITEsbz0wO288dC5sZW5ndGg7bysrKXt2YXIgaT10W29dO2kudG9rZW49PT1JZSYmITA9PT1pLnZhbHVlJiYocj0hMCksMTA3Mzc0MTgyNCZpLmZsYWdzJiZuLnB1c2goaS50b2tlbiksaS5pbmRleD1vLGVbUW4oaS50b2tlbildPWl9cmV0dXJue2ZhY3Rvcnk6bnVsbCxwcm92aWRlcnNCeUtleTplLHByb3ZpZGVyczp0LG1vZHVsZXM6bixpc1Jvb3Q6cn19KFtUcig1MTIscm4sb24sW1s4LFtPaCxOaF1dLFszLHJuXSxIdF0pLFRyKDUxMjAsTG8sTmksW1szLExvXV0pLFRyKDQ2MDgsbXUsX3UsW0xvLFsyLHl1XV0pLFRyKDUxMjAsX28sRGksW25pXSksVHIoNTEyMCxJbyxSbyxbXSksVHIoNTEyMCxPbixNaSxbXSksVHIoNTEyMCxUbixqaSxbXSksVHIoNDYwOCx4cyxDcyxbRXVdKSxUcig2MTQ0LFNlLG51bGwsW3hzXSksVHIoNDYwOCxncyx5cyxbXSksVHIoNTEyMCxGbCwoZnVuY3Rpb24odCxlLG4scixvLGksYSx1KXtyZXR1cm5bbmV3IHBzKHQsZSxuKSxuZXcgYnMociksbmV3IG1zKG8saSxhLHUpXX0pLFtFdSxuaSxObyxFdSxFdSxncyxVbyxbMix2c11dKSxUcig0NjA4LEJsLEJsLFtGbCxuaV0pLFRyKDEzNTY4MCxxbCxxbCxbRXVdKSxUcig0NjA4LFhsLFhsLFtCbCxxbCxJb10pLFRyKDYxNDQsZm4sbnVsbCxbWGxdKSxUcig2MTQ0LEdsLG51bGwsW3FsXSksVHIoNDYwOCxjaSxjaSxbbmldKSxUcig1MTIwLHpjLG1oLFskZl0pLFRyKDQ2MDgsaWgsaWgsW10pLFRyKDYxNDQscmgsbnVsbCxbaWhdKSxUcigxMzU2ODAsYWgsYWgsWyRmLGJpLFdvLE1lLHJoXSksVHIoNDYwOCxvaCxvaCxbXSksVHIoNTEyMCx1aCxwaCxbJGYsVHUsbGhdKSxUcig1MTIwLHhoLGJoLFtfaF0pLFRyKDUxMjAsRG8sKGZ1bmN0aW9uKHQpe3JldHVyblt0XX0pLFt4aF0pLFRyKDEwNzM3NDIzMzYsU3UsU3UsW10pLFRyKDEwMjQsJHQsSXMsW10pLFRyKDEwMjQsZGksKGZ1bmN0aW9uKCl7cmV0dXJuW2ZoKCldfSksW10pLFRyKDUxMixfaCxfaCxbTWVdKSxUcigxMDI0LGtvLChmdW5jdGlvbih0LGUpe3JldHVyblsobj10LFZsKCJwcm9iZSIsemwpLFZsKCJjb3JlVG9rZW5zIixPYmplY3Qoci5fX2Fzc2lnbikoe30sSGwsKG58fFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZS5uYW1lXT1lLnRva2VuLHR9KSx7fSkpKSxmdW5jdGlvbigpe3JldHVybiB6bH0pLHdoKGUpXTt2YXIgbn0pLFtbMixkaV0sX2hdKSxUcig1MTIsQW8sQW8sW1syLGtvXV0pLFRyKDEzMTU4NCxfaSxfaSxbbmksVW8sTWUsJHQscm4sQW9dKSxUcigxMDczNzQyMzM2LFVpLFVpLFtfaV0pLFRyKDEwNzM3NDIzMzYsUnMsUnMsW1szLFJzXV0pLFRyKDEwMjQsc2gsZ2gsW1szLCRmXV0pLFRyKDUxMixfYyx3YyxbXSksVHIoNTEyLHRoLHRoLFtdKSxUcigyNTYsbGgse30sW10pLFRyKDEwMjQsY3UsZGgsW2x1LFsyLGZ1XSxsaF0pLFRyKDUxMixodSxodSxbY3UsbHVdKSxUcig1MTIsV28sV28sW10pLFRyKDUxMixiaSxTaSxbV28sWzIseGldXSksVHIoMTAyNCxHZiwoZnVuY3Rpb24oKXtyZXR1cm5bW11dfSksW10pLFRyKDEwMjQsJGYseWgsW19pLF9jLHRoLGh1LE1lLGJpLFdvLEdmLGxoLFsyLFdmXSxbMixCZl1dKSxUcigxMDczNzQyMzM2LGhoLGhoLFtbMixzaF0sWzIsJGZdXSksVHIoMTA3Mzc0MjMzNixEaCxEaCxbXSksVHIoMTA3Mzc0MjMzNixhdSxhdSxbXSksVHIoMjU2LEllLCEwLFtdKV0pfSkpOyhmdW5jdGlvbigpe2lmKHRlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGVuYWJsZSBwcm9kIG1vZGUgYWZ0ZXIgcGxhdGZvcm0gc2V0dXAuIik7WHQ9ITF9KSgpLEFzKCkuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeShVaCkuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBjb25zb2xlLmVycm9yKHQpfSkpfSx6bjhQOmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXt2YXIgZT1uZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInIik7dGhyb3cgZS5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIixlfSkpfW4ua2V5cz1mdW5jdGlvbigpe3JldHVybltdfSxuLnJlc29sdmU9bix0LmV4cG9ydHM9bixuLmlkPSJ6bjhQIn19LFtbMCwwXV1dKTs="
}
]
},
{
"type": 12,
"id": "1ZK1RN4x7M1GY9EqWZuqdy5gYzq6PSAmS7HjKG7SqGa",
"fee": 8900000,
"feeAssetId": null,
"timestamp": 1575393737129,
"version": 1,
"sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
"senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
"proofs": [
"2P659fpG5arfAYKX5o3gMK2sdaFVoSGFS8ssi7PUpiXHMAUoAGZz4qz3oDk4tVUi9v9qRHzQbaVE2KTfrRgp1DoM"
],
"data": [
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?0?0",
"type": "binary",
"value": "base64:KHdpbmRvdy53ZWJwYWNrSnNvbnA9d2luZG93LndlYnBhY2tKc29ucHx8W10pLnB1c2goW1sxXSx7MDpmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oInpVbmIiKX0sbXJTRzpmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24ucihlKSxuLmQoZSwiX19leHRlbmRzIiwoZnVuY3Rpb24oKXtyZXR1cm4gb30pKSxuLmQoZSwiX19hc3NpZ24iLChmdW5jdGlvbigpe3JldHVybiBpfSkpLG4uZChlLCJfX3Jlc3QiLChmdW5jdGlvbigpe3JldHVybiBhfSkpLG4uZChlLCJfX2RlY29yYXRlIiwoZnVuY3Rpb24oKXtyZXR1cm4gdX0pKSxuLmQoZSwiX19wYXJhbSIsKGZ1bmN0aW9uKCl7cmV0dXJuIGx9KSksbi5kKGUsIl9fbWV0YWRhdGEiLChmdW5jdGlvbigpe3JldHVybiBzfSkpLG4uZChlLCJfX2F3YWl0ZXIiLChmdW5jdGlvbigpe3JldHVybiBjfSkpLG4uZChlLCJfX2dlbmVyYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KSksbi5kKGUsIl9fZXhwb3J0U3RhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIGh9KSksbi5kKGUsIl9fdmFsdWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4gcH0pKSxuLmQoZSwiX19yZWFkIiwoZnVuY3Rpb24oKXtyZXR1cm4gZH0pKSxuLmQoZSwiX19zcHJlYWQiLChmdW5jdGlvbigpe3JldHVybiBnfSkpLG4uZChlLCJfX3NwcmVhZEFycmF5cyIsKGZ1bmN0aW9uKCl7cmV0dXJuIHZ9KSksbi5kKGUsIl9fYXdhaXQiLChmdW5jdGlvbigpe3JldHVybiB5fSkpLG4uZChlLCJfX2FzeW5jR2VuZXJhdG9yIiwoZnVuY3Rpb24oKXtyZXR1cm4gbX0pKSxuLmQoZSwiX19hc3luY0RlbGVnYXRvciIsKGZ1bmN0aW9uKCl7cmV0dXJuIF99KSksbi5kKGUsIl9fYXN5bmNWYWx1ZXMiLChmdW5jdGlvbigpe3JldHVybiB3fSkpLG4uZChlLCJfX21ha2VUZW1wbGF0ZU9iamVjdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KSksbi5kKGUsIl9faW1wb3J0U3RhciIsKGZ1bmN0aW9uKCl7cmV0dXJuIHh9KSksbi5kKGUsIl9faW1wb3J0RGVmYXVsdCIsKGZ1bmN0aW9uKCl7cmV0dXJuIEN9KSk7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4ocj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24odCxlKXt0Ll9fcHJvdG9fXz1lfXx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX0pKHQsZSl9O2Z1bmN0aW9uIG8odCxlKXtmdW5jdGlvbiBuKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fXIodCxlKSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihuLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgbil9dmFyIGk9ZnVuY3Rpb24oKXtyZXR1cm4oaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGUsbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bisrKWZvcih2YXIgbyBpbiBlPWFyZ3VtZW50c1tuXSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmKHRbb109ZVtvXSk7cmV0dXJuIHR9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2Z1bmN0aW9uIGEodCxlKXt2YXIgbj17fTtmb3IodmFyIHIgaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxyKSYmZS5pbmRleE9mKHIpPDAmJihuW3JdPXRbcl0pO2lmKG51bGwhPXQmJiJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbz0wO2ZvcihyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7bzxyLmxlbmd0aDtvKyspZS5pbmRleE9mKHJbb10pPDAmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh0LHJbb10pJiYobltyW29dXT10W3Jbb11dKX1yZXR1cm4gbn1mdW5jdGlvbiB1KHQsZSxuLHIpe3ZhciBvLGk9YXJndW1lbnRzLmxlbmd0aCxhPWk8Mz9lOm51bGw9PT1yP3I9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLG4pOnI7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlhPVJlZmxlY3QuZGVjb3JhdGUodCxlLG4scik7ZWxzZSBmb3IodmFyIHU9dC5sZW5ndGgtMTt1Pj0wO3UtLSkobz10W3VdKSYmKGE9KGk8Mz9vKGEpOmk+Mz9vKGUsbixhKTpvKGUsbikpfHxhKTtyZXR1cm4gaT4zJiZhJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLGEpLGF9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiBmdW5jdGlvbihuLHIpe2UobixyLHQpfX1mdW5jdGlvbiBzKHQsZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSlyZXR1cm4gUmVmbGVjdC5tZXRhZGF0YSh0LGUpfWZ1bmN0aW9uIGModCxlLG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8saSl7ZnVuY3Rpb24gYSh0KXt0cnl7bChyLm5leHQodCkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUodCl7dHJ5e2woci50aHJvdyh0KSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gbCh0KXt0LmRvbmU/byh0LnZhbHVlKTpuZXcgbigoZnVuY3Rpb24oZSl7ZSh0LnZhbHVlKX0pKS50aGVuKGEsdSl9bCgocj1yLmFwcGx5KHQsZXx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIGYodCxlKXt2YXIgbixyLG8saSxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBpPXtuZXh0OnUoMCksdGhyb3c6dSgxKSxyZXR1cm46dSgyKX0sImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKGlbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSksaTtmdW5jdGlvbiB1KGkpe3JldHVybiBmdW5jdGlvbih1KXtyZXR1cm4gZnVuY3Rpb24oaSl7aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7Zm9yKDthOyl0cnl7aWYobj0xLHImJihvPTImaVswXT9yLnJldHVybjppWzBdP3IudGhyb3d8fCgobz1yLnJldHVybikmJm8uY2FsbChyKSwwKTpyLm5leHQpJiYhKG89by5jYWxsKHIsaVsxXSkpLmRvbmUpcmV0dXJuIG87c3dpdGNoKHI9MCxvJiYoaT1bMiZpWzBdLG8udmFsdWVdKSxpWzBdKXtjYXNlIDA6Y2FzZSAxOm89aTticmVhaztjYXNlIDQ6cmV0dXJuIGEubGFiZWwrKyx7dmFsdWU6aVsxXSxkb25lOiExfTtjYXNlIDU6YS5sYWJlbCsrLHI9aVsxXSxpPVswXTtjb250aW51ZTtjYXNlIDc6aT1hLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWU7ZGVmYXVsdDppZighKG89KG89YS50cnlzKS5sZW5ndGg+MCYmb1tvLmxlbmd0aC0xXSkmJig2PT09aVswXXx8Mj09PWlbMF0pKXthPTA7Y29udGludWV9aWYoMz09PWlbMF0mJighb3x8aVsxXT5vWzBdJiZpWzFdPG9bM10pKXthLmxhYmVsPWlbMV07YnJlYWt9aWYoNj09PWlbMF0mJmEubGFiZWw8b1sxXSl7YS5sYWJlbD1vWzFdLG89aTticmVha31pZihvJiZhLmxhYmVsPG9bMl0pe2EubGFiZWw9b1syXSxhLm9wcy5wdXNoKGkpO2JyZWFrfW9bMl0mJmEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZX1pPWUuY2FsbCh0LGEpfWNhdGNoKHUpe2k9WzYsdV0scj0wfWZpbmFsbHl7bj1vPTB9aWYoNSZpWzBdKXRocm93IGlbMV07cmV0dXJue3ZhbHVlOmlbMF0/aVsxXTp2b2lkIDAsZG9uZTohMH19KFtpLHVdKX19fWZ1bmN0aW9uIGgodCxlKXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX1mdW5jdGlvbiBwKHQpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLml0ZXJhdG9yXSxuPTA7cmV0dXJuIGU/ZS5jYWxsKHQpOntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHQmJm4+PXQubGVuZ3RoJiYodD12b2lkIDApLHt2YWx1ZTp0JiZ0W24rK10sZG9uZTohdH19fX1mdW5jdGlvbiBkKHQsZSl7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaXRlcmF0b3JdO2lmKCFuKXJldHVybiB0O3ZhciByLG8saT1uLmNhbGwodCksYT1bXTt0cnl7Zm9yKDsodm9pZCAwPT09ZXx8ZS0tID4wKSYmIShyPWkubmV4dCgpKS5kb25lOylhLnB1c2goci52YWx1ZSl9Y2F0Y2godSl7bz17ZXJyb3I6dX19ZmluYWxseXt0cnl7ciYmIXIuZG9uZSYmKG49aS5yZXR1cm4pJiZuLmNhbGwoaSl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fXJldHVybiBhfWZ1bmN0aW9uIGcoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdD10LmNvbmNhdChkKGFyZ3VtZW50c1tlXSkpO3JldHVybiB0fWZ1bmN0aW9uIHYoKXtmb3IodmFyIHQ9MCxlPTAsbj1hcmd1bWVudHMubGVuZ3RoO2U8bjtlKyspdCs9YXJndW1lbnRzW2VdLmxlbmd0aDt2YXIgcj1BcnJheSh0KSxvPTA7Zm9yKGU9MDtlPG47ZSsrKWZvcih2YXIgaT1hcmd1bWVudHNbZV0sYT0wLHU9aS5sZW5ndGg7YTx1O2ErKyxvKyspcltvXT1pW2FdO3JldHVybiByfWZ1bmN0aW9uIHkodCl7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiB5Pyh0aGlzLnY9dCx0aGlzKTpuZXcgeSh0KX1mdW5jdGlvbiBtKHQsZSxuKXtpZighU3ltYm9sLmFzeW5jSXRlcmF0b3IpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuIik7dmFyIHIsbz1uLmFwcGx5KHQsZXx8W10pLGk9W107cmV0dXJuIHI9e30sYSgibmV4dCIpLGEoInRocm93IiksYSgicmV0dXJuIikscltTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scjtmdW5jdGlvbiBhKHQpe29bdF0mJihyW3RdPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obixyKXtpLnB1c2goW3QsZSxuLHJdKT4xfHx1KHQsZSl9KSl9KX1mdW5jdGlvbiB1KHQsZSl7dHJ5eyhuPW9bdF0oZSkpLnZhbHVlIGluc3RhbmNlb2YgeT9Qcm9taXNlLnJlc29sdmUobi52YWx1ZS52KS50aGVuKGwscyk6YyhpWzBdWzJdLG4pfWNhdGNoKHIpe2MoaVswXVszXSxyKX12YXIgbn1mdW5jdGlvbiBsKHQpe3UoIm5leHQiLHQpfWZ1bmN0aW9uIHModCl7dSgidGhyb3ciLHQpfWZ1bmN0aW9uIGModCxlKXt0KGUpLGkuc2hpZnQoKSxpLmxlbmd0aCYmdShpWzBdWzBdLGlbMF1bMV0pfX1mdW5jdGlvbiBfKHQpe3ZhciBlLG47cmV0dXJuIGU9e30scigibmV4dCIpLHIoInRocm93IiwoZnVuY3Rpb24odCl7dGhyb3cgdH0pKSxyKCJyZXR1cm4iKSxlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZTtmdW5jdGlvbiByKHIsbyl7ZVtyXT10W3JdP2Z1bmN0aW9uKGUpe3JldHVybihuPSFuKT97dmFsdWU6eSh0W3JdKGUpKSxkb25lOiJyZXR1cm4iPT09cn06bz9vKGUpOmV9Om99fWZ1bmN0aW9uIHcodCl7aWYoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKXRocm93IG5ldyBUeXBlRXJyb3IoIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLiIpO3ZhciBlLG49dFtTeW1ib2wuYXN5bmNJdGVyYXRvcl07cmV0dXJuIG4/bi5jYWxsKHQpOih0PXAodCksZT17fSxyKCJuZXh0IikscigidGhyb3ciKSxyKCJyZXR1cm4iKSxlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlKTtmdW5jdGlvbiByKG4pe2Vbbl09dFtuXSYmZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG8peyFmdW5jdGlvbih0LGUsbixyKXtQcm9taXNlLnJlc29sdmUocikudGhlbigoZnVuY3Rpb24oZSl7dCh7dmFsdWU6ZSxkb25lOm59KX0pLGUpfShyLG8sKGU9dFtuXShlKSkuZG9uZSxlLnZhbHVlKX0pKX19fWZ1bmN0aW9uIGIodCxlKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyYXciLHt2YWx1ZTplfSk6dC5yYXc9ZSx0fWZ1bmN0aW9uIHgodCl7aWYodCYmdC5fX2VzTW9kdWxlKXJldHVybiB0O3ZhciBlPXt9O2lmKG51bGwhPXQpZm9yKHZhciBuIGluIHQpT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSk7cmV0dXJuIGUuZGVmYXVsdD10LGV9ZnVuY3Rpb24gQyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e2RlZmF1bHQ6dH19fSx6VW5iOmZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bi5yKGUpO3ZhciByPW4oIm1yU0ciKSxvPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVybiB0JiYibnVtYmVyIj09dHlwZW9mIHQubGVuZ3RofTtmdW5jdGlvbiBpKHQpe3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0fWZ1bmN0aW9uIGEodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHR9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9dD90Lmxlbmd0aCsiIGVycm9ycyBvY2N1cnJlZCBkdXJpbmcgdW5zdWJzY3JpcHRpb246XG4iK3QubWFwKChmdW5jdGlvbih0LGUpe3JldHVybiBlKzErIikgIit0LnRvU3RyaW5nKCl9KSkuam9pbigiXG4gICIpOiIiLHRoaXMubmFtZT0iVW5zdWJzY3JpcHRpb25FcnJvciIsdGhpcy5lcnJvcnM9dCx0aGlzfXUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTt2YXIgbD11LHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuY2xvc2VkPSExLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb25zPW51bGwsdCYmKHRoaXMuX3Vuc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0LGU9ITE7aWYoIXRoaXMuY2xvc2VkKXt2YXIgbj10aGlzLl9wYXJlbnQscj10aGlzLl9wYXJlbnRzLHU9dGhpcy5fdW5zdWJzY3JpYmUscz10aGlzLl9zdWJzY3JpcHRpb25zO3RoaXMuY2xvc2VkPSEwLHRoaXMuX3BhcmVudD1udWxsLHRoaXMuX3BhcmVudHM9bnVsbCx0aGlzLl9zdWJzY3JpcHRpb25zPW51bGw7Zm9yKHZhciBmPS0xLGg9cj9yLmxlbmd0aDowO247KW4ucmVtb3ZlKHRoaXMpLG49KytmPGgmJnJbZl18fG51bGw7aWYoYSh1KSl0cnl7dS5jYWxsKHRoaXMpfWNhdGNoKGQpe2U9ITAsdD1kIGluc3RhbmNlb2YgbD9jKGQuZXJyb3JzKTpbZF19aWYobyhzKSlmb3IoZj0tMSxoPXMubGVuZ3RoOysrZjxoOyl7dmFyIHA9c1tmXTtpZihpKHApKXRyeXtwLnVuc3Vic2NyaWJlKCl9Y2F0Y2goZCl7ZT0hMCx0PXR8fFtdLGQgaW5zdGFuY2VvZiBsP3Q9dC5jb25jYXQoYyhkLmVycm9ycykpOnQucHVzaChkKX19aWYoZSl0aHJvdyBuZXcgbCh0KX19LHQucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt2YXIgbj1lO3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJmdW5jdGlvbiI6bj1uZXcgdChlKTtjYXNlIm9iamVjdCI6aWYobj09PXRoaXN8fG4uY2xvc2VkfHwiZnVuY3Rpb24iIT10eXBlb2Ygbi51bnN1YnNjcmliZSlyZXR1cm4gbjtpZih0aGlzLmNsb3NlZClyZXR1cm4gbi51bnN1YnNjcmliZSgpLG47aWYoIShuIGluc3RhbmNlb2YgdCkpe3ZhciByPW47KG49bmV3IHQpLl9zdWJzY3JpcHRpb25zPVtyXX1icmVhaztkZWZhdWx0OmlmKCFlKXJldHVybiB0LkVNUFRZO3Rocm93IG5ldyBFcnJvcigidW5yZWNvZ25pemVkIHRlYXJkb3duICIrZSsiIGFkZGVkIHRvIFN1YnNjcmlwdGlvbi4iKX1pZihuLl9hZGRQYXJlbnQodGhpcykpe3ZhciBvPXRoaXMuX3N1YnNjcmlwdGlvbnM7bz9vLnB1c2gobik6dGhpcy5fc3Vic2NyaXB0aW9ucz1bbl19cmV0dXJuIG59LHQucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9zdWJzY3JpcHRpb25zO2lmKGUpe3ZhciBuPWUuaW5kZXhPZih0KTstMSE9PW4mJmUuc3BsaWNlKG4sMSl9fSx0LnByb3RvdHlwZS5fYWRkUGFyZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3BhcmVudCxuPXRoaXMuX3BhcmVudHM7cmV0dXJuIGUhPT10JiYoZT9uPy0xPT09bi5pbmRleE9mKHQpJiYobi5wdXNoKHQpLCEwKToodGhpcy5fcGFyZW50cz1bdF0sITApOih0aGlzLl9wYXJlbnQ9dCwhMCkpfSx0LkVNUFRZPWZ1bmN0aW9uKHQpe3JldHVybiB0LmNsb3NlZD0hMCx0fShuZXcgdCksdH0oKTtmdW5jdGlvbiBjKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoZSBpbnN0YW5jZW9mIGw/ZS5lcnJvcnM6ZSl9KSxbXSl9dmFyIGY9ITEsaD17UHJvbWlzZTp2b2lkIDAsc2V0IHVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcodCl7Zj10fSxnZXQgdXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZygpe3JldHVybiBmfX07ZnVuY3Rpb24gcCh0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3Rocm93IHR9KSl9dmFyIGQ9e2Nsb3NlZDohMCxuZXh0OmZ1bmN0aW9uKHQpe30sZXJyb3I6ZnVuY3Rpb24odCl7aWYoaC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IHQ7cCh0KX0sY29tcGxldGU6ZnVuY3Rpb24oKXt9fSxnPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2w/U3ltYm9sKCJyeFN1YnNjcmliZXIiKToiQEByeFN1YnNjcmliZXJfIitNYXRoLnJhbmRvbSgpLHY9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMpfHx0aGlzO3N3aXRjaChpLnN5bmNFcnJvclZhbHVlPW51bGwsaS5zeW5jRXJyb3JUaHJvd249ITEsaS5zeW5jRXJyb3JUaHJvd2FibGU9ITEsaS5pc1N0b3BwZWQ9ITEsYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmkuZGVzdGluYXRpb249ZDticmVhaztjYXNlIDE6aWYoIW4pe2kuZGVzdGluYXRpb249ZDticmVha31pZigib2JqZWN0Ij09dHlwZW9mIG4pe24gaW5zdGFuY2VvZiBlPyhpLnN5bmNFcnJvclRocm93YWJsZT1uLnN5bmNFcnJvclRocm93YWJsZSxpLmRlc3RpbmF0aW9uPW4sbi5hZGQoaSkpOihpLnN5bmNFcnJvclRocm93YWJsZT0hMCxpLmRlc3RpbmF0aW9uPW5ldyB5KGksbikpO2JyZWFrfWRlZmF1bHQ6aS5zeW5jRXJyb3JUaHJvd2FibGU9ITAsaS5kZXN0aW5hdGlvbj1uZXcgeShpLG4scixvKX1yZXR1cm4gaX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZVtnXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlLmNyZWF0ZT1mdW5jdGlvbih0LG4scil7dmFyIG89bmV3IGUodCxuLHIpO3JldHVybiBvLnN5bmNFcnJvclRocm93YWJsZT0hMSxvfSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuaXNTdG9wcGVkfHx0aGlzLl9uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2Vycm9yKHQpKX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZHx8KHRoaXMuaXNTdG9wcGVkPSEwLHRoaXMuX2NvbXBsZXRlKCkpfSxlLnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMuY2xvc2VkfHwodGhpcy5pc1N0b3BwZWQ9ITAsdC5wcm90b3R5cGUudW5zdWJzY3JpYmUuY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2Vycm9yPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24uZXJyb3IodCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCksdGhpcy51bnN1YnNjcmliZSgpfSxlLnByb3RvdHlwZS5fdW5zdWJzY3JpYmVBbmRSZWN5Y2xlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcGFyZW50LGU9dGhpcy5fcGFyZW50cztyZXR1cm4gdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fcGFyZW50cz1udWxsLHRoaXMudW5zdWJzY3JpYmUoKSx0aGlzLmNsb3NlZD0hMSx0aGlzLmlzU3RvcHBlZD0hMSx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9wYXJlbnRzPWUsdGhpc30sZX0ocykseT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpLHU9dC5jYWxsKHRoaXMpfHx0aGlzO3UuX3BhcmVudFN1YnNjcmliZXI9ZTt2YXIgbD11O3JldHVybiBhKG4pP2k9bjpuJiYoaT1uLm5leHQscj1uLmVycm9yLG89bi5jb21wbGV0ZSxuIT09ZCYmKGEoKGw9T2JqZWN0LmNyZWF0ZShuKSkudW5zdWJzY3JpYmUpJiZ1LmFkZChsLnVuc3Vic2NyaWJlLmJpbmQobCkpLGwudW5zdWJzY3JpYmU9dS51bnN1YnNjcmliZS5iaW5kKHUpKSksdS5fY29udGV4dD1sLHUuX25leHQ9aSx1Ll9lcnJvcj1yLHUuX2NvbXBsZXRlPW8sdX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmlzU3RvcHBlZCYmdGhpcy5fbmV4dCl7dmFyIGU9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjtoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJmUuc3luY0Vycm9yVGhyb3dhYmxlP3RoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fbmV4dCx0KSYmdGhpcy51bnN1YnNjcmliZSgpOnRoaXMuX190cnlPclVuc3ViKHRoaXMuX25leHQsdCl9fSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZighdGhpcy5pc1N0b3BwZWQpe3ZhciBlPXRoaXMuX3BhcmVudFN1YnNjcmliZXIsbj1oLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmc7aWYodGhpcy5fZXJyb3IpbiYmZS5zeW5jRXJyb3JUaHJvd2FibGU/KHRoaXMuX190cnlPclNldEVycm9yKGUsdGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgpKToodGhpcy5fX3RyeU9yVW5zdWIodGhpcy5fZXJyb3IsdCksdGhpcy51bnN1YnNjcmliZSgpKTtlbHNlIGlmKGUuc3luY0Vycm9yVGhyb3dhYmxlKW4/KGUuc3luY0Vycm9yVmFsdWU9dCxlLnN5bmNFcnJvclRocm93bj0hMCk6cCh0KSx0aGlzLnVuc3Vic2NyaWJlKCk7ZWxzZXtpZih0aGlzLnVuc3Vic2NyaWJlKCksbil0aHJvdyB0O3AodCl9fX0sZS5wcm90b3R5cGUuY29tcGxldGU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKCF0aGlzLmlzU3RvcHBlZCl7dmFyIGU9dGhpcy5fcGFyZW50U3Vic2NyaWJlcjtpZih0aGlzLl9jb21wbGV0ZSl7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gdC5fY29tcGxldGUuY2FsbCh0Ll9jb250ZXh0KX07aC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiZlLnN5bmNFcnJvclRocm93YWJsZT8odGhpcy5fX3RyeU9yU2V0RXJyb3IoZSxuKSx0aGlzLnVuc3Vic2NyaWJlKCkpOih0aGlzLl9fdHJ5T3JVbnN1YihuKSx0aGlzLnVuc3Vic2NyaWJlKCkpfWVsc2UgdGhpcy51bnN1YnNjcmliZSgpfX0sZS5wcm90b3R5cGUuX190cnlPclVuc3ViPWZ1bmN0aW9uKHQsZSl7dHJ5e3QuY2FsbCh0aGlzLl9jb250ZXh0LGUpfWNhdGNoKG4pe2lmKHRoaXMudW5zdWJzY3JpYmUoKSxoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcpdGhyb3cgbjtwKG4pfX0sZS5wcm90b3R5cGUuX190cnlPclNldEVycm9yPWZ1bmN0aW9uKHQsZSxuKXtpZighaC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nKXRocm93IG5ldyBFcnJvcigiYmFkIGNhbGwiKTt0cnl7ZS5jYWxsKHRoaXMuX2NvbnRleHQsbil9Y2F0Y2gocil7cmV0dXJuIGgudXNlRGVwcmVjYXRlZFN5bmNocm9ub3VzRXJyb3JIYW5kbGluZz8odC5zeW5jRXJyb3JWYWx1ZT1yLHQuc3luY0Vycm9yVGhyb3duPSEwLCEwKToocChyKSwhMCl9cmV0dXJuITF9LGUucHJvdG90eXBlLl91bnN1YnNjcmliZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3BhcmVudFN1YnNjcmliZXI7dGhpcy5fY29udGV4dD1udWxsLHRoaXMuX3BhcmVudFN1YnNjcmliZXI9bnVsbCx0LnVuc3Vic2NyaWJlKCl9LGV9KHYpLG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLm9ic2VydmFibGV8fCJAQG9ic2VydmFibGUiO2Z1bmN0aW9uIF8oKXt9ZnVuY3Rpb24gdygpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4gYih0KX1mdW5jdGlvbiBiKHQpe3JldHVybiB0PzE9PT10Lmxlbmd0aD90WzBdOmZ1bmN0aW9uKGUpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZSh0KX0pLGUpfTpffXZhciB4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9pc1NjYWxhcj0hMSx0JiYodGhpcy5fc3Vic2NyaWJlPXQpfXJldHVybiB0LnByb3RvdHlwZS5saWZ0PWZ1bmN0aW9uKGUpe3ZhciBuPW5ldyB0O3JldHVybiBuLnNvdXJjZT10aGlzLG4ub3BlcmF0b3I9ZSxufSx0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMub3BlcmF0b3Isbz1mdW5jdGlvbih0LGUsbil7aWYodCl7aWYodCBpbnN0YW5jZW9mIHYpcmV0dXJuIHQ7aWYodFtnXSlyZXR1cm4gdFtnXSgpfXJldHVybiB0fHxlfHxuP25ldyB2KHQsZSxuKTpuZXcgdihkKX0odCxlLG4pO2lmKG8uYWRkKHI/ci5jYWxsKG8sdGhpcy5zb3VyY2UpOnRoaXMuc291cmNlfHxoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJiFvLnN5bmNFcnJvclRocm93YWJsZT90aGlzLl9zdWJzY3JpYmUobyk6dGhpcy5fdHJ5U3Vic2NyaWJlKG8pKSxoLnVzZURlcHJlY2F0ZWRTeW5jaHJvbm91c0Vycm9ySGFuZGxpbmcmJm8uc3luY0Vycm9yVGhyb3dhYmxlJiYoby5zeW5jRXJyb3JUaHJvd2FibGU9ITEsby5zeW5jRXJyb3JUaHJvd24pKXRocm93IG8uc3luY0Vycm9yVmFsdWU7cmV0dXJuIG99LHQucHJvdG90eXBlLl90cnlTdWJzY3JpYmU9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLl9zdWJzY3JpYmUodCl9Y2F0Y2goZSl7aC51c2VEZXByZWNhdGVkU3luY2hyb25vdXNFcnJvckhhbmRsaW5nJiYodC5zeW5jRXJyb3JUaHJvd249ITAsdC5zeW5jRXJyb3JWYWx1ZT1lKSxmdW5jdGlvbih0KXtmb3IoO3Q7KXt2YXIgZT10LmRlc3RpbmF0aW9uO2lmKHQuY2xvc2VkfHx0LmlzU3RvcHBlZClyZXR1cm4hMTt0PWUmJmUgaW5zdGFuY2VvZiB2P2U6bnVsbH1yZXR1cm4hMH0odCk/dC5lcnJvcihlKTpjb25zb2xlLndhcm4oZSl9fSx0LnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gbmV3KGU9QyhlKSkoKGZ1bmN0aW9uKGUscil7dmFyIG87bz1uLnN1YnNjcmliZSgoZnVuY3Rpb24oZSl7dHJ5e3QoZSl9Y2F0Y2gobil7cihuKSxvJiZvLnVuc3Vic2NyaWJlKCl9fSkscixlKX0pKX0sdC5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnNvdXJjZTtyZXR1cm4gZSYmZS5zdWJzY3JpYmUodCl9LHQucHJvdG90eXBlW21dPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIDA9PT10Lmxlbmd0aD90aGlzOmIodCkodGhpcyl9LHQucHJvdG90eXBlLnRvUHJvbWlzZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBuZXcodD1DKHQpKSgoZnVuY3Rpb24odCxuKXt2YXIgcjtlLnN1YnNjcmliZSgoZnVuY3Rpb24odCl7cmV0dXJuIHI9dH0pLChmdW5jdGlvbih0KXtyZXR1cm4gbih0KX0pLChmdW5jdGlvbigpe3JldHVybiB0KHIpfSkpfSkpfSx0LmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9KCk7ZnVuY3Rpb24gQyh0KXtpZih0fHwodD1oLlByb21pc2V8fFByb21pc2UpLCF0KXRocm93IG5ldyBFcnJvcigibm8gUHJvbWlzZSBpbXBsIGZvdW5kIik7cmV0dXJuIHR9ZnVuY3Rpb24gUygpe3JldHVybiBFcnJvci5jYWxsKHRoaXMpLHRoaXMubWVzc2FnZT0ib2JqZWN0IHVuc3Vic2NyaWJlZCIsdGhpcy5uYW1lPSJPYmplY3RVbnN1YnNjcmliZWRFcnJvciIsdGhpc31TLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7dmFyIEU9UyxPPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuc3ViamVjdD1lLHIuc3Vic2NyaWJlcj1uLHIuY2xvc2VkPSExLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXtpZighdGhpcy5jbG9zZWQpe3RoaXMuY2xvc2VkPSEwO3ZhciB0PXRoaXMuc3ViamVjdCxlPXQub2JzZXJ2ZXJzO2lmKHRoaXMuc3ViamVjdD1udWxsLGUmJjAhPT1lLmxlbmd0aCYmIXQuaXNTdG9wcGVkJiYhdC5jbG9zZWQpe3ZhciBuPWUuaW5kZXhPZih0aGlzLnN1YnNjcmliZXIpOy0xIT09biYmZS5zcGxpY2UobiwxKX19fSxlfShzKSxUPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG4uZGVzdGluYXRpb249ZSxufXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGV9KHYpLFA9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3ZhciBlPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gZS5vYnNlcnZlcnM9W10sZS5jbG9zZWQ9ITEsZS5pc1N0b3BwZWQ9ITEsZS5oYXNFcnJvcj0hMSxlLnRocm93bkVycm9yPW51bGwsZX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZVtnXT1mdW5jdGlvbigpe3JldHVybiBuZXcgVCh0aGlzKX0sZS5wcm90b3R5cGUubGlmdD1mdW5jdGlvbih0KXt2YXIgZT1uZXcgayh0aGlzLHRoaXMpO3JldHVybiBlLm9wZXJhdG9yPXQsZX0sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRTtpZighdGhpcy5pc1N0b3BwZWQpZm9yKHZhciBlPXRoaXMub2JzZXJ2ZXJzLG49ZS5sZW5ndGgscj1lLnNsaWNlKCksbz0wO288bjtvKyspcltvXS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRTt0aGlzLmhhc0Vycm9yPSEwLHRoaXMudGhyb3duRXJyb3I9dCx0aGlzLmlzU3RvcHBlZD0hMDtmb3IodmFyIGU9dGhpcy5vYnNlcnZlcnMsbj1lLmxlbmd0aCxyPWUuc2xpY2UoKSxvPTA7bzxuO28rKylyW29dLmVycm9yKHQpO3RoaXMub2JzZXJ2ZXJzLmxlbmd0aD0wfSxlLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFO3RoaXMuaXNTdG9wcGVkPSEwO2Zvcih2YXIgdD10aGlzLm9ic2VydmVycyxlPXQubGVuZ3RoLG49dC5zbGljZSgpLHI9MDtyPGU7cisrKW5bcl0uY29tcGxldGUoKTt0aGlzLm9ic2VydmVycy5sZW5ndGg9MH0sZS5wcm90b3R5cGUudW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0aGlzLmlzU3RvcHBlZD0hMCx0aGlzLmNsb3NlZD0hMCx0aGlzLm9ic2VydmVycz1udWxsfSxlLnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFO3JldHVybiB0LnByb3RvdHlwZS5fdHJ5U3Vic2NyaWJlLmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbih0KXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRTtyZXR1cm4gdGhpcy5oYXNFcnJvcj8odC5lcnJvcih0aGlzLnRocm93bkVycm9yKSxzLkVNUFRZKTp0aGlzLmlzU3RvcHBlZD8odC5jb21wbGV0ZSgpLHMuRU1QVFkpOih0aGlzLm9ic2VydmVycy5wdXNoKHQpLG5ldyBPKHRoaXMsdCkpfSxlLnByb3RvdHlwZS5hc09ic2VydmFibGU9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgeDtyZXR1cm4gdC5zb3VyY2U9dGhpcyx0fSxlLmNyZWF0ZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgayh0LGUpfSxlfSh4KSxrPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIHIuZGVzdGluYXRpb249ZSxyLnNvdXJjZT1uLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUubmV4dCYmZS5uZXh0KHQpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmRlc3RpbmF0aW9uO2UmJmUuZXJyb3ImJnRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9LGUucHJvdG90eXBlLmNvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kZXN0aW5hdGlvbjt0JiZ0LmNvbXBsZXRlJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9zdWJzY3JpYmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc291cmNlP3RoaXMuc291cmNlLnN1YnNjcmliZSh0KTpzLkVNUFRZfSxlfShQKTtmdW5jdGlvbiBBKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zY2hlZHVsZX12YXIgST1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8ucGFyZW50PWUsby5vdXRlclZhbHVlPW4sby5vdXRlckluZGV4PXIsby5pbmRleD0wLG99cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQubm90aWZ5TmV4dCh0aGlzLm91dGVyVmFsdWUsdCx0aGlzLm91dGVySW5kZXgsdGhpcy5pbmRleCsrLHRoaXMpfSxlLnByb3RvdHlwZS5fZXJyb3I9ZnVuY3Rpb24odCl7dGhpcy5wYXJlbnQubm90aWZ5RXJyb3IodCx0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMucGFyZW50Lm5vdGlmeUNvbXBsZXRlKHRoaXMpLHRoaXMudW5zdWJzY3JpYmUoKX0sZX0odiksUj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHImJiFlLmNsb3NlZDtuKyspZS5uZXh0KHRbbl0pO2UuY2xvc2VkfHxlLmNvbXBsZXRlKCl9fSxNPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC50aGVuKChmdW5jdGlvbih0KXtlLmNsb3NlZHx8KGUubmV4dCh0KSxlLmNvbXBsZXRlKCkpfSksKGZ1bmN0aW9uKHQpe3JldHVybiBlLmVycm9yKHQpfSkpLnRoZW4obnVsbCxwKSxlfX07ZnVuY3Rpb24gaigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcj9TeW1ib2wuaXRlcmF0b3I6IkBAaXRlcmF0b3IifXZhciBOPWooKSxEPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIG49dFtOXSgpOzspe3ZhciByPW4ubmV4dCgpO2lmKHIuZG9uZSl7ZS5jb21wbGV0ZSgpO2JyZWFrfWlmKGUubmV4dChyLnZhbHVlKSxlLmNsb3NlZClicmVha31yZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbi5yZXR1cm4mJmUuYWRkKChmdW5jdGlvbigpe24ucmV0dXJuJiZuLnJldHVybigpfSkpLGV9fSxVPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbj10W21dKCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4uc3Vic2NyaWJlKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb3ZpZGVkIG9iamVjdCBkb2VzIG5vdCBjb3JyZWN0bHkgaW1wbGVtZW50IFN5bWJvbC5vYnNlcnZhYmxlIik7cmV0dXJuIG4uc3Vic2NyaWJlKGUpfX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR9O2Z1bmN0aW9uIFYodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iIT10eXBlb2YgdC5zdWJzY3JpYmUmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59dmFyIEg9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIHgpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9pc1NjYWxhcj8oZS5uZXh0KHQudmFsdWUpLHZvaWQgZS5jb21wbGV0ZSgpKTp0LnN1YnNjcmliZShlKX07aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbbV0pcmV0dXJuIFUodCk7aWYoTCh0KSlyZXR1cm4gUih0KTtpZihWKHQpKXJldHVybiBNKHQpO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0W05dKXJldHVybiBEKHQpO3ZhciBlPWkodCk/ImFuIGludmFsaWQgb2JqZWN0IjoiJyIrdCsiJyI7dGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IHByb3ZpZGVkICIrZSsiIHdoZXJlIGEgc3RyZWFtIHdhcyBleHBlY3RlZC4gWW91IGNhbiBwcm92aWRlIGFuIE9ic2VydmFibGUsIFByb21pc2UsIEFycmF5LCBvciBJdGVyYWJsZS4iKX07ZnVuY3Rpb24geih0LGUsbixyLG8pe2lmKHZvaWQgMD09PW8mJihvPW5ldyBJKHQsbixyKSksIW8uY2xvc2VkKXJldHVybiBIKGUpKG8pfXZhciBGPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXtyZXR1cm4gbnVsbCE9PXQmJnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLm5vdGlmeU5leHQ9ZnVuY3Rpb24odCxlLG4scixvKXt0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGUucHJvdG90eXBlLm5vdGlmeUVycm9yPWZ1bmN0aW9uKHQsZSl7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlfSh2KTtmdW5jdGlvbiBCKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoImFyZ3VtZW50IGlzIG5vdCBhIGZ1bmN0aW9uLiBBcmUgeW91IGxvb2tpbmcgZm9yIGBtYXBUbygpYD8iKTtyZXR1cm4gbi5saWZ0KG5ldyBaKHQsZSkpfX12YXIgWj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnByb2plY3Q9dCx0aGlzLnRoaXNBcmc9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgRyh0LHRoaXMucHJvamVjdCx0aGlzLnRoaXNBcmcpKX0sdH0oKSxHPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBvLnByb2plY3Q9bixvLmNvdW50PTAsby50aGlzQXJnPXJ8fG8sb31yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT10aGlzLnByb2plY3QuY2FsbCh0aGlzLnRoaXNBcmcsdCx0aGlzLmNvdW50KyspfWNhdGNoKG4pe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iobil9dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlfSh2KTtmdW5jdGlvbiBxKHQsZSl7cmV0dXJuIG5ldyB4KGU/ZnVuY3Rpb24obil7dmFyIHI9bmV3IHMsbz0wO3JldHVybiByLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe28hPT10Lmxlbmd0aD8obi5uZXh0KHRbbysrXSksbi5jbG9zZWR8fHIuYWRkKHRoaXMuc2NoZWR1bGUoKSkpOm4uY29tcGxldGUoKX0pKSkscn06Uih0KSl9ZnVuY3Rpb24gVyh0LGUpe2lmKCFlKXJldHVybiB0IGluc3RhbmNlb2YgeD90Om5ldyB4KEgodCkpO2lmKG51bGwhPXQpe2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgdFttXX0odCkpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyB4KGU/ZnVuY3Rpb24obil7dmFyIHI9bmV3IHM7cmV0dXJuIHIuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7dmFyIG89dFttXSgpO3IuYWRkKG8uc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKHQpe3IuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4ubmV4dCh0KX0pKSl9LGVycm9yOmZ1bmN0aW9uKHQpe3IuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZXJyb3IodCl9KSkpfSxjb21wbGV0ZTpmdW5jdGlvbigpe3IuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY29tcGxldGUoKX0pKSl9fSkpfSkpKSxyfTpVKHQpKX0odCxlKTtpZihWKHQpKXJldHVybiBmdW5jdGlvbih0LGUpe3JldHVybiBuZXcgeChlP2Z1bmN0aW9uKA=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?1?0",
"type": "binary",
"value": "base64:bil7dmFyIHI9bmV3IHM7cmV0dXJuIHIuYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHQudGhlbigoZnVuY3Rpb24odCl7ci5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtuLm5leHQodCksci5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5jb21wbGV0ZSgpfSkpKX0pKSl9KSwoZnVuY3Rpb24odCl7ci5hZGQoZS5zY2hlZHVsZSgoZnVuY3Rpb24oKXtyZXR1cm4gbi5lcnJvcih0KX0pKSl9KSl9KSkpLHJ9Ok0odCkpfSh0LGUpO2lmKEwodCkpcmV0dXJuIHEodCxlKTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHRbTl19KHQpfHwic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJJdGVyYWJsZSBjYW5ub3QgYmUgbnVsbCIpO3JldHVybiBuZXcgeChlP2Z1bmN0aW9uKG4pe3ZhciByLG89bmV3IHM7cmV0dXJuIG8uYWRkKChmdW5jdGlvbigpe3ImJiJmdW5jdGlvbiI9PXR5cGVvZiByLnJldHVybiYmci5yZXR1cm4oKX0pKSxvLmFkZChlLnNjaGVkdWxlKChmdW5jdGlvbigpe3I9dFtOXSgpLG8uYWRkKGUuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7aWYoIW4uY2xvc2VkKXt2YXIgdCxlO3RyeXt2YXIgbz1yLm5leHQoKTt0PW8udmFsdWUsZT1vLmRvbmV9Y2F0Y2goaSl7cmV0dXJuIHZvaWQgbi5lcnJvcihpKX1lP24uY29tcGxldGUoKToobi5uZXh0KHQpLHRoaXMuc2NoZWR1bGUoKSl9fSkpKX0pKSksb306RCh0KSl9KHQsZSl9dGhyb3cgbmV3IFR5cGVFcnJvcigobnVsbCE9PXQmJnR5cGVvZiB0fHx0KSsiIGlzIG5vdCBvYnNlcnZhYmxlIil9ZnVuY3Rpb24gUSh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSksImZ1bmN0aW9uIj09dHlwZW9mIGU/ZnVuY3Rpb24ocil7cmV0dXJuIHIucGlwZShRKChmdW5jdGlvbihuLHIpe3JldHVybiBXKHQobixyKSkucGlwZShCKChmdW5jdGlvbih0LG8pe3JldHVybiBlKG4sdCxyLG8pfSkpKX0pLG4pKX06KCJudW1iZXIiPT10eXBlb2YgZSYmKG49ZSksZnVuY3Rpb24oZSl7cmV0dXJuIGUubGlmdChuZXcgSyh0LG4pKX0pfXZhciBLPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3ZvaWQgMD09PWUmJihlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSksdGhpcy5wcm9qZWN0PXQsdGhpcy5jb25jdXJyZW50PWV9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IFkodCx0aGlzLnByb2plY3QsdGhpcy5jb25jdXJyZW50KSl9LHR9KCksWT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2b2lkIDA9PT1yJiYocj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO3ZhciBvPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBvLnByb2plY3Q9bixvLmNvbmN1cnJlbnQ9cixvLmhhc0NvbXBsZXRlZD0hMSxvLmJ1ZmZlcj1bXSxvLmFjdGl2ZT0wLG8uaW5kZXg9MCxvfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlPHRoaXMuY29uY3VycmVudD90aGlzLl90cnlOZXh0KHQpOnRoaXMuYnVmZmVyLnB1c2godCl9LGUucHJvdG90eXBlLl90cnlOZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5pbmRleCsrO3RyeXtlPXRoaXMucHJvamVjdCh0LG4pfWNhdGNoKHIpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iocil9dGhpcy5hY3RpdmUrKyx0aGlzLl9pbm5lclN1YihlLHQsbil9LGUucHJvdG90eXBlLl9pbm5lclN1Yj1mdW5jdGlvbih0LGUsbil7dmFyIHI9bmV3IEkodGhpcyx2b2lkIDAsdm9pZCAwKTt0aGlzLmRlc3RpbmF0aW9uLmFkZChyKSx6KHRoaXMsdCxlLG4scil9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuaGFzQ29tcGxldGVkPSEwLDA9PT10aGlzLmFjdGl2ZSYmMD09PXRoaXMuYnVmZmVyLmxlbmd0aCYmdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKX0sZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlvbih0LGUsbixyLG8pe3RoaXMuZGVzdGluYXRpb24ubmV4dChlKX0sZS5wcm90b3R5cGUubm90aWZ5Q29tcGxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5idWZmZXI7dGhpcy5yZW1vdmUodCksdGhpcy5hY3RpdmUtLSxlLmxlbmd0aD4wP3RoaXMuX25leHQoZS5zaGlmdCgpKTowPT09dGhpcy5hY3RpdmUmJnRoaXMuaGFzQ29tcGxldGVkJiZ0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGV9KEYpO2Z1bmN0aW9uIEoodCl7cmV0dXJuIHR9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxRKEosdCl9ZnVuY3Rpb24gWCgpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5saWZ0KG5ldyB0dCh0KSl9fXZhciB0dD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jb25uZWN0YWJsZT10fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jb25uZWN0YWJsZTtuLl9yZWZDb3VudCsrO3ZhciByPW5ldyBldCh0LG4pLG89ZS5zdWJzY3JpYmUocik7cmV0dXJuIHIuY2xvc2VkfHwoci5jb25uZWN0aW9uPW4uY29ubmVjdCgpKSxvfSx0fSgpLGV0PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5jb25uZWN0YWJsZT1uLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fcmVmQ291bnQ7aWYoZTw9MCl0aGlzLmNvbm5lY3Rpb249bnVsbDtlbHNlIGlmKHQuX3JlZkNvdW50PWUtMSxlPjEpdGhpcy5jb25uZWN0aW9uPW51bGw7ZWxzZXt2YXIgbj10aGlzLmNvbm5lY3Rpb24scj10Ll9jb25uZWN0aW9uO3RoaXMuY29ubmVjdGlvbj1udWxsLCFyfHxuJiZyIT09bnx8ci51bnN1YnNjcmliZSgpfX1lbHNlIHRoaXMuY29ubmVjdGlvbj1udWxsfSxlfSh2KSxudD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLnNvdXJjZT1lLHIuc3ViamVjdEZhY3Rvcnk9bixyLl9yZWZDb3VudD0wLHIuX2lzQ29tcGxldGU9ITEscn1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fc3Vic2NyaWJlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldFN1YmplY3QoKS5zdWJzY3JpYmUodCl9LGUucHJvdG90eXBlLmdldFN1YmplY3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9zdWJqZWN0O3JldHVybiB0JiYhdC5pc1N0b3BwZWR8fCh0aGlzLl9zdWJqZWN0PXRoaXMuc3ViamVjdEZhY3RvcnkoKSksdGhpcy5fc3ViamVjdH0sZS5wcm90b3R5cGUuY29ubmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2Nvbm5lY3Rpb247cmV0dXJuIHR8fCh0aGlzLl9pc0NvbXBsZXRlPSExLCh0PXRoaXMuX2Nvbm5lY3Rpb249bmV3IHMpLmFkZCh0aGlzLnNvdXJjZS5zdWJzY3JpYmUobmV3IG90KHRoaXMuZ2V0U3ViamVjdCgpLHRoaXMpKSksdC5jbG9zZWQ/KHRoaXMuX2Nvbm5lY3Rpb249bnVsbCx0PXMuRU1QVFkpOnRoaXMuX2Nvbm5lY3Rpb249dCksdH0sZS5wcm90b3R5cGUucmVmQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gWCgpKHRoaXMpfSxlfSh4KS5wcm90b3R5cGUscnQ9e29wZXJhdG9yOnt2YWx1ZTpudWxsfSxfcmVmQ291bnQ6e3ZhbHVlOjAsd3JpdGFibGU6ITB9LF9zdWJqZWN0Ont2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSxfY29ubmVjdGlvbjp7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0sX3N1YnNjcmliZTp7dmFsdWU6bnQuX3N1YnNjcmliZX0sX2lzQ29tcGxldGU6e3ZhbHVlOm50Ll9pc0NvbXBsZXRlLHdyaXRhYmxlOiEwfSxnZXRTdWJqZWN0Ont2YWx1ZTpudC5nZXRTdWJqZWN0fSxjb25uZWN0Ont2YWx1ZTpudC5jb25uZWN0fSxyZWZDb3VudDp7dmFsdWU6bnQucmVmQ291bnR9fSxvdD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuY29ubmVjdGFibGU9bixyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbihlKXt0aGlzLl91bnN1YnNjcmliZSgpLHQucHJvdG90eXBlLl9lcnJvci5jYWxsKHRoaXMsZSl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3RoaXMuY29ubmVjdGFibGUuX2lzQ29tcGxldGU9ITAsdGhpcy5fdW5zdWJzY3JpYmUoKSx0LnByb3RvdHlwZS5fY29tcGxldGUuY2FsbCh0aGlzKX0sZS5wcm90b3R5cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb25uZWN0YWJsZTtpZih0KXt0aGlzLmNvbm5lY3RhYmxlPW51bGw7dmFyIGU9dC5fY29ubmVjdGlvbjt0Ll9yZWZDb3VudD0wLHQuX3N1YmplY3Q9bnVsbCx0Ll9jb25uZWN0aW9uPW51bGwsZSYmZS51bnN1YnNjcmliZSgpfX0sZX0oVCk7ZnVuY3Rpb24gaXQoKXtyZXR1cm4gbmV3IFB9dmFyIGF0PSJfX3BhcmFtZXRlcnNfXyI7ZnVuY3Rpb24gdXQodCxlLG4pe3ZhciBvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe2Zvcih2YXIgZT1bXSxuPTA7bjxhcmd1bWVudHMubGVuZ3RoO24rKyllW25dPWFyZ3VtZW50c1tuXTtpZih0KXt2YXIgbz10LmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkoZSkpO2Zvcih2YXIgaSBpbiBvKXRoaXNbaV09b1tpXX19fShlKTtmdW5jdGlvbiBpKCl7Zm9yKHZhciB0LGU9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbl07aWYodGhpcyBpbnN0YW5jZW9mIGkpcmV0dXJuIG8uYXBwbHkodGhpcyxlKSx0aGlzO3ZhciBhPW5ldygodD1pKS5iaW5kLmFwcGx5KHQsT2JqZWN0KHIuX19zcHJlYWQpKFt2b2lkIDBdLGUpKSk7cmV0dXJuIHUuYW5ub3RhdGlvbj1hLHU7ZnVuY3Rpb24gdSh0LGUsbil7Zm9yKHZhciByPXQuaGFzT3duUHJvcGVydHkoYXQpP3RbYXRdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGF0LHt2YWx1ZTpbXX0pW2F0XTtyLmxlbmd0aDw9bjspci5wdXNoKG51bGwpO3JldHVybihyW25dPXJbbl18fFtdKS5wdXNoKGEpLHR9fXJldHVybiBuJiYoaS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLGkucHJvdG90eXBlLm5nTWV0YWRhdGFOYW1lPXQsaS5hbm5vdGF0aW9uQ2xzPWksaX12YXIgbHQ9dXQoIkluamVjdCIsKGZ1bmN0aW9uKHQpe3JldHVybnt0b2tlbjp0fX0pKSxzdD11dCgiT3B0aW9uYWwiKSxjdD11dCgiU2VsZiIpLGZ0PXV0KCJTa2lwU2VsZiIpLGh0PWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuRGVmYXVsdD0wXT0iRGVmYXVsdCIsdFt0Lkhvc3Q9MV09Ikhvc3QiLHRbdC5TZWxmPTJdPSJTZWxmIix0W3QuU2tpcFNlbGY9NF09IlNraXBTZWxmIix0W3QuT3B0aW9uYWw9OF09Ik9wdGlvbmFsIix0fSh7fSk7ZnVuY3Rpb24gcHQodCl7Zm9yKHZhciBlIGluIHQpaWYodFtlXT09PXB0KXJldHVybiBlO3Rocm93IEVycm9yKCJDb3VsZCBub3QgZmluZCByZW5hbWVkIHByb3BlcnR5IG9uIHRhcmdldCBvYmplY3QuIil9ZnVuY3Rpb24gZHQodCl7cmV0dXJue3Rva2VuOnQudG9rZW4scHJvdmlkZWRJbjp0LnByb3ZpZGVkSW58fG51bGwsZmFjdG9yeTp0LmZhY3RvcnksdmFsdWU6dm9pZCAwfX1mdW5jdGlvbiBndCh0KXt2YXIgZT10W3Z0XTtyZXR1cm4gZSYmZS50b2tlbj09PXQ/ZTpudWxsfXZhciB2dD1wdCh7bmdJbmplY3RhYmxlRGVmOnB0fSk7ZnVuY3Rpb24geXQodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKHQgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4iWyIrdC5tYXAoeXQpLmpvaW4oIiwgIikrIl0iO2lmKG51bGw9PXQpcmV0dXJuIiIrdDtpZih0Lm92ZXJyaWRkZW5OYW1lKXJldHVybiIiK3Qub3ZlcnJpZGRlbk5hbWU7aWYodC5uYW1lKXJldHVybiIiK3QubmFtZTt2YXIgZT10LnRvU3RyaW5nKCk7aWYobnVsbD09ZSlyZXR1cm4iIitlO3ZhciBuPWUuaW5kZXhPZigiXG4iKTtyZXR1cm4tMT09PW4/ZTplLnN1YnN0cmluZygwLG4pfXZhciBtdD1wdCh7X19mb3J3YXJkX3JlZl9fOnB0fSk7ZnVuY3Rpb24gX3QodCl7cmV0dXJuIHQuX19mb3J3YXJkX3JlZl9fPV90LHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4geXQodGhpcygpKX0sdH1mdW5jdGlvbiB3dCh0KXt2YXIgZT10O3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmhhc093blByb3BlcnR5KG10KSYmZS5fX2ZvcndhcmRfcmVmX189PT1fdD9lKCk6dH12YXIgYnQseHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLEN0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3csU3Q9InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUmJnNlbGYsRXQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJmdsb2JhbCxPdD14dHx8RXR8fEN0fHxTdCxUdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9kZXNjPXQsdGhpcy5uZ01ldGFkYXRhTmFtZT0iSW5qZWN0aW9uVG9rZW4iLHRoaXMubmdJbmplY3RhYmxlRGVmPXZvaWQgMCwibnVtYmVyIj09dHlwZW9mIGU/dGhpcy5fX05HX0VMRU1FTlRfSURfXz1lOnZvaWQgMCE9PWUmJih0aGlzLm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dGhpcyxwcm92aWRlZEluOmUucHJvdmlkZWRJbnx8InJvb3QiLGZhY3Rvcnk6ZS5mYWN0b3J5fSkpfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJJbmplY3Rpb25Ub2tlbiAiK3RoaXMuX2Rlc2N9LHR9KCksUHQ9bmV3IFR0KCJJTkpFQ1RPUiIsLTEpLGt0PW5ldyBPYmplY3QsQXQ9L1xuL2dtLEl0PSLJtSIsUnQ9Il9fc291cmNlIixNdD1wdCh7cHJvdmlkZTpTdHJpbmcsdXNlVmFsdWU6cHR9KSxqdD12b2lkIDA7ZnVuY3Rpb24gTnQodCl7dmFyIGU9anQ7cmV0dXJuIGp0PXQsZX1mdW5jdGlvbiBEdCh0LGUpe2lmKHZvaWQgMD09PWUmJihlPWh0LkRlZmF1bHQpLHZvaWQgMD09PWp0KXRocm93IG5ldyBFcnJvcigiaW5qZWN0KCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBhbiBpbmplY3Rpb24gY29udGV4dCIpO3JldHVybiBudWxsPT09anQ/ZnVuY3Rpb24odCxlLG4pe3ZhciByPWd0KHQpO2lmKHImJiJyb290Ij09ci5wcm92aWRlZEluKXJldHVybiB2b2lkIDA9PT1yLnZhbHVlP3IudmFsdWU9ci5mYWN0b3J5KCk6ci52YWx1ZTtpZihuJmh0Lk9wdGlvbmFsKXJldHVybiBudWxsO3Rocm93IG5ldyBFcnJvcigiSW5qZWN0b3I6IE5PVF9GT1VORCBbIit5dCh0KSsiXSIpfSh0LDAsZSk6anQuZ2V0KHQsZSZodC5PcHRpb25hbD9udWxsOnZvaWQgMCxlKX1mdW5jdGlvbiBVdCh0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1odC5EZWZhdWx0KSwoYnR8fER0KSh0LGUpfXZhciBMdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMD09PWUmJihlPWt0KSxlPT09a3Qpe3ZhciBuPW5ldyBFcnJvcigiTnVsbEluamVjdG9yRXJyb3I6IE5vIHByb3ZpZGVyIGZvciAiK3l0KHQpKyIhIik7dGhyb3cgbi5uYW1lPSJOdWxsSW5qZWN0b3JFcnJvciIsbn1yZXR1cm4gZX0sdH0oKTtmdW5jdGlvbiBWdCh0LGUsbixyKXt2b2lkIDA9PT1yJiYocj1udWxsKSx0PXQmJiJcbiI9PT10LmNoYXJBdCgwKSYmdC5jaGFyQXQoMSk9PUl0P3Quc3Vic3RyKDIpOnQ7dmFyIG89eXQoZSk7aWYoZSBpbnN0YW5jZW9mIEFycmF5KW89ZS5tYXAoeXQpLmpvaW4oIiAtPiAiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIGk9W107Zm9yKHZhciBhIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHU9ZVthXTtpLnB1c2goYSsiOiIrKCJzdHJpbmciPT10eXBlb2YgdT9KU09OLnN0cmluZ2lmeSh1KTp5dCh1KSkpfW89InsiK2kuam9pbigiLCAiKSsifSJ9cmV0dXJuIG4rKHI/IigiK3IrIikiOiIiKSsiWyIrbysiXTogIit0LnJlcGxhY2UoQXQsIlxuICAiKX12YXIgSHQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLHp0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKTtmdW5jdGlvbiBGdCh0LGUsbil7ZT49dC5sZW5ndGg/dC5wdXNoKG4pOnQuc3BsaWNlKGUsMCxuKX1mdW5jdGlvbiBCdCh0LGUpe3JldHVybiBlPj10Lmxlbmd0aC0xP3QucG9wKCk6dC5zcGxpY2UoZSwxKVswXX12YXIgWnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRbdC5FbXVsYXRlZD0wXT0iRW11bGF0ZWQiLHRbdC5OYXRpdmU9MV09Ik5hdGl2ZSIsdFt0Lk5vbmU9Ml09Ik5vbmUiLHRbdC5TaGFkb3dEb209M109IlNoYWRvd0RvbSIsdH0oe30pLEd0PWZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiIT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZyZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHNldFRpbWVvdXQpLmJpbmQoT3QpfSgpLHF0PSJuZ0RlYnVnQ29udGV4dCIsV3Q9Im5nT3JpZ2luYWxFcnJvciIsUXQ9Im5nRXJyb3JMb2dnZXIiO2Z1bmN0aW9uIEt0KHQpe3JldHVybiB0W3F0XX1mdW5jdGlvbiBZdCh0KXtyZXR1cm4gdFtXdF19ZnVuY3Rpb24gSnQodCl7Zm9yKHZhciBlPVtdLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07dC5lcnJvci5hcHBseSh0LE9iamVjdChyLl9fc3ByZWFkKShlKSl9dmFyICR0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2NvbnNvbGU9Y29uc29sZX1yZXR1cm4gdC5wcm90b3R5cGUuaGFuZGxlRXJyb3I9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fZmluZE9yaWdpbmFsRXJyb3IodCksbj10aGlzLl9maW5kQ29udGV4dCh0KSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0W1F0XXx8SnR9KHQpO3IodGhpcy5fY29uc29sZSwiRVJST1IiLHQpLGUmJnIodGhpcy5fY29uc29sZSwiT1JJR0lOQUwgRVJST1IiLGUpLG4mJnIodGhpcy5fY29uc29sZSwiRVJST1IgQ09OVEVYVCIsbil9LHQucHJvdG90eXBlLl9maW5kQ29udGV4dD1mdW5jdGlvbih0KXtyZXR1cm4gdD9LdCh0KT9LdCh0KTp0aGlzLl9maW5kQ29udGV4dChZdCh0KSk6bnVsbH0sdC5wcm90b3R5cGUuX2ZpbmRPcmlnaW5hbEVycm9yPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ZdCh0KTtlJiZZdChlKTspZT1ZdChlKTtyZXR1cm4gZX0sdH0oKSxYdD0hMCx0ZT0hMTtmdW5jdGlvbiBlZSgpe3JldHVybiB0ZT0hMCxYdH12YXIgbmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHRoaXMuZGVmYXVsdERvYz10LHRoaXMuaW5lcnREb2N1bWVudD10aGlzLmRlZmF1bHREb2MuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCJzYW5pdGl6YXRpb24taW5lcnQiKSx0aGlzLmluZXJ0Qm9keUVsZW1lbnQ9dGhpcy5pbmVydERvY3VtZW50LmJvZHksbnVsbD09dGhpcy5pbmVydEJvZHlFbGVtZW50KXt2YXIgZT10aGlzLmluZXJ0RG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaHRtbCIpO3RoaXMuaW5lcnREb2N1bWVudC5hcHBlbmRDaGlsZChlKSx0aGlzLmluZXJ0Qm9keUVsZW1lbnQ9dGhpcy5pbmVydERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvZHkiKSxlLmFwcGVuZENoaWxkKHRoaXMuaW5lcnRCb2R5RWxlbWVudCl9dGhpcy5pbmVydEJvZHlFbGVtZW50LmlubmVySFRNTD0nPHN2Zz48ZyBvbmxvYWQ9InRoaXMucGFyZW50Tm9kZS5yZW1vdmUoKSI+PC9nPjwvc3ZnPicsIXRoaXMuaW5lcnRCb2R5RWxlbWVudC5xdWVyeVNlbGVjdG9yfHx0aGlzLmluZXJ0Qm9keUVsZW1lbnQucXVlcnlTZWxlY3Rvcigic3ZnIik/KHRoaXMuaW5lcnRCb2R5RWxlbWVudC5pbm5lckhUTUw9Jzxzdmc+PHA+PHN0eWxlPjxpbWcgc3JjPSI8L3N0eWxlPjxpbWcgc3JjPXggb25lcnJvcj1hbGVydCgxKS8vIj4nLHRoaXMuZ2V0SW5lcnRCb2R5RWxlbWVudD10aGlzLmluZXJ0Qm9keUVsZW1lbnQucXVlcnlTZWxlY3RvciYmdGhpcy5pbmVydEJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoInN2ZyBpbWciKSYmZnVuY3Rpb24oKXt0cnl7cmV0dXJuISF3aW5kb3cuRE9NUGFyc2VyfWNhdGNoKHQpe3JldHVybiExfX0oKT90aGlzLmdldEluZXJ0Qm9keUVsZW1lbnRfRE9NUGFyc2VyOnRoaXMuZ2V0SW5lcnRCb2R5RWxlbWVudF9JbmVydERvY3VtZW50KTp0aGlzLmdldEluZXJ0Qm9keUVsZW1lbnQ9dGhpcy5nZXRJbmVydEJvZHlFbGVtZW50X1hIUn1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0SW5lcnRCb2R5RWxlbWVudF9YSFI9ZnVuY3Rpb24odCl7dD0iPGJvZHk+PHJlbW92ZT48L3JlbW92ZT4iK3QrIjwvYm9keT4iO3RyeXt0PWVuY29kZVVSSSh0KX1jYXRjaChyKXtyZXR1cm4gbnVsbH12YXIgZT1uZXcgWE1MSHR0cFJlcXVlc3Q7ZS5yZXNwb25zZVR5cGU9ImRvY3VtZW50IixlLm9wZW4oIkdFVCIsImRhdGE6dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgsIit0LCExKSxlLnNlbmQodm9pZCAwKTt2YXIgbj1lLnJlc3BvbnNlLmJvZHk7cmV0dXJuIG4ucmVtb3ZlQ2hpbGQobi5maXJzdENoaWxkKSxufSx0LnByb3RvdHlwZS5nZXRJbmVydEJvZHlFbGVtZW50X0RPTVBhcnNlcj1mdW5jdGlvbih0KXt0PSI8Ym9keT48cmVtb3ZlPjwvcmVtb3ZlPiIrdCsiPC9ib2R5PiI7dHJ5e3ZhciBlPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKHQsInRleHQvaHRtbCIpLmJvZHk7cmV0dXJuIGUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKSxlfWNhdGNoKG4pe3JldHVybiBudWxsfX0sdC5wcm90b3R5cGUuZ2V0SW5lcnRCb2R5RWxlbWVudF9JbmVydERvY3VtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaW5lcnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiJjb250ZW50ImluIGU/KGUuaW5uZXJIVE1MPXQsZSk6KHRoaXMuaW5lcnRCb2R5RWxlbWVudC5pbm5lckhUTUw9dCx0aGlzLmRlZmF1bHREb2MuZG9jdW1lbnRNb2RlJiZ0aGlzLnN0cmlwQ3VzdG9tTnNBdHRycyh0aGlzLmluZXJ0Qm9keUVsZW1lbnQpLHRoaXMuaW5lcnRCb2R5RWxlbWVudCl9LHQucHJvdG90eXBlLnN0cmlwQ3VzdG9tTnNBdHRycz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5hdHRyaWJ1dGVzLG49ZS5sZW5ndGgtMTswPG47bi0tKXt2YXIgcj1lLml0ZW0obikubmFtZTsieG1sbnM6bnMxIiE9PXImJjAhPT1yLmluZGV4T2YoIm5zMToiKXx8dC5yZW1vdmVBdHRyaWJ1dGUocil9Zm9yKHZhciBvPXQuZmlyc3RDaGlsZDtvOylvLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuc3RyaXBDdXN0b21Oc0F0dHJzKG8pLG89by5uZXh0U2libGluZ30sdH0oKSxyZT0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwfHRlbHxmaWxlKTp8W14mOi8/I10qKD86Wy8/I118JCkpL2dpLG9lPS9eZGF0YTooPzppbWFnZVwvKD86Ym1wfGdpZnxqcGVnfGpwZ3xwbmd8dGlmZnx3ZWJwKXx2aWRlb1wvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXC8oPzptcDN8b2dhfG9nZ3xvcHVzKSk7YmFzZTY0LFthLXowLTkrXC9dKz0qJC9pO2Z1bmN0aW9uIGllKHQpe3JldHVybih0PVN0cmluZyh0KSkubWF0Y2gocmUpfHx0Lm1hdGNoKG9lKT90OihlZSgpJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIFVSTCB2YWx1ZSAiK3QrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKSwidW5zYWZlOiIrdCl9ZnVuY3Rpb24gYWUodCl7dmFyIGUsbixvPXt9O3RyeXtmb3IodmFyIGk9T2JqZWN0KHIuX192YWx1ZXMpKHQuc3BsaXQoIiwiKSksYT1pLm5leHQoKTshYS5kb25lO2E9aS5uZXh0KCkpb1thLnZhbHVlXT0hMH1jYXRjaCh1KXtlPXtlcnJvcjp1fX1maW5hbGx5e3RyeXthJiYhYS5kb25lJiYobj1pLnJldHVybikmJm4uY2FsbChpKX1maW5hbGx5e2lmKGUpdGhyb3cgZS5lcnJvcn19cmV0dXJuIG99ZnVuY3Rpb24gdWUoKXtmb3IodmFyIHQsZSxuPVtdLG89MDtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKW5bb109YXJndW1lbnRzW29dO3ZhciBpPXt9O3RyeXtmb3IodmFyIGE9T2JqZWN0KHIuX192YWx1ZXMpKG4pLHU9YS5uZXh0KCk7IXUuZG9uZTt1PWEubmV4dCgpKXt2YXIgbD11LnZhbHVlO2Zvcih2YXIgcyBpbiBsKWwuaGFzT3duUHJvcGVydHkocykmJihpW3NdPSEwKX19Y2F0Y2goYyl7dD17ZXJyb3I6Y319ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKGU9YS5yZXR1cm4pJiZlLmNhbGwoYSl9ZmluYWxseXtpZih0KXRocm93IHQuZXJyb3J9fXJldHVybiBpfXZhciBsZSxzZT1hZSgiYXJlYSxicixjb2wsaHIsaW1nLHdiciIpLGNlPWFlKCJjb2xncm91cCxkZCxkdCxsaSxwLHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRyIiksZmU9YWUoInJwLHJ0IiksaGU9dWUoZmUsY2UpLHBlPXVlKHNlLHVlKGNlLGFlKCJhZGRyZXNzLGFydGljbGUsYXNpZGUsYmxvY2txdW90ZSxjYXB0aW9uLGNlbnRlcixkZWwsZGV0YWlscyxkaWFsb2csZGlyLGRpdixkbCxmaWd1cmUsZmlnY2FwdGlvbixmb290ZXIsaDEsaDIsaDMsaDQsaDUsaDYsaGVhZGVyLGhncm91cCxocixpbnMsbWFpbixtYXAsbWVudSxuYXYsb2wscHJlLHNlY3Rpb24sc3VtbWFyeSx0YWJsZSx1bCIpKSx1ZShmZSxhZSgiYSxhYmJyLGFjcm9ueW0sYXVkaW8sYixiZGksYmRvLGJpZyxicixjaXRlLGNvZGUsZGVsLGRmbixlbSxmb250LGksaW1nLGlucyxrYmQsbGFiZWwsbWFwLG1hcmsscGljdHVyZSxxLHJ1YnkscnAscnQscyxzYW1wLHNtYWxsLHNvdXJjZSxzcGFuLHN0cmlrZSxzdHJvbmcsc3ViLHN1cCx0aW1lLHRyYWNrLHR0LHUsdmFyLHZpZGVvIikpLGhlKSxkZT1hZSgiYmFja2dyb3VuZCxjaXRlLGhyZWYsaXRlbXR5cGUsbG9uZ2Rlc2MscG9zdGVyLHNyYyx4bGluazpocmVmIiksZ2U9YWUoInNyY3NldCIpLHZlPXVlKGRlLGdlLGFlKCJhYmJyLGFjY2Vzc2tleSxhbGlnbixhbHQsYXV0b3BsYXksYXhpcyxiZ2NvbG9yLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxjbGFzcyxjbGVhcixjb2xvcixjb2xzLGNvbHNwYW4sY29tcGFjdCxjb250cm9scyxjb29yZHMsZGF0ZXRpbWUsZGVmYXVsdCxkaXIsZG93bmxvYWQsZmFjZSxoZWFkZXJzLGhlaWdodCxoaWRkZW4saHJlZmxhbmcsaHNwYWNlLGlzbWFwLGl0ZW1zY29wZSxpdGVtcHJvcCxraW5kLGxhYmVsLGxhbmcsbGFuZ3VhZ2UsbG9vcCxtZWRpYSxtdXRlZCxub2hyZWYsbm93cmFwLG9wZW4scHJlbG9hZCxyZWwscmV2LHJvbGUscm93cyxyb3dzcGFuLHJ1bGVzLHNjb3BlLHNjcm9sbGluZyxzaGFwZSxzaXplLHNpemVzLHNwYW4sc3JjbGFuZyxzdGFydCxzdW1tYXJ5LHRhYmluZGV4LHRhcmdldCx0aXRsZSx0cmFuc2xhdGUsdHlwZSx1c2VtYXAsdmFsaWduLHZhbHVlLHZzcGFjZSx3aWR0aCIpLGFlKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQsYXJpYS1hdG9taWMsYXJpYS1hdXRvY29tcGxldGUsYXJpYS1idXN5LGFyaWEtY2hlY2tlZCxhcmlhLWNvbGNvdW50LGFyaWEtY29saW5kZXgsYXJpYS1jb2xzcGFuLGFyaWEtY29udHJvbHMsYXJpYS1jdXJyZW50LGFyaWEtZGVzY3JpYmVkYnksYXJpYS1kZXRhaWxzLGFyaWEtZGlzYWJsZWQsYXJpYS1kcm9wZWZmZWN0LGFyaWEtZXJyb3JtZXNzYWdlLGFyaWEtZXhwYW5kZWQsYXJpYS1mbG93dG8sYXJpYS1ncmFiYmVkLGFyaWEtaGFzcG9wdXAsYXJpYS1oaWRkZW4sYXJpYS1pbnZhbGlkLGFyaWEta2V5c2hvcnRjdXRzLGFyaWEtbGFiZWwsYXJpYS1sYWJlbGxlZGJ5LGFyaWEtbGV2ZWwsYXJpYS1saXZlLGFyaWEtbW9kYWwsYXJpYS1tdWx0aWxpbmUsYXJpYS1tdWx0aXNlbGVjdGFibGUsYXJpYS1vcmllbnRhdGlvbixhcmlhLW93bnMsYXJpYS1wbGFjZWhvbGRlcixhcmlhLXBvc2luc2V0LGFyaWEtcHJlc3NlZCxhcmlhLXJlYWRvbmx5LGFyaWEtcmVsZXZhbnQsYXJpYS1yZXF1aXJlZCxhcmlhLXJvbGVkZXNjcmlwdGlvbixhcmlhLXJvd2NvdW50LGFyaWEtcm93aW5kZXgsYXJpYS1yb3dzcGFuLGFyaWEtc2VsZWN0ZWQsYXJpYS1zZXRzaXplLGFyaWEtc29ydCxhcmlhLXZhbHVlbWF4LGFyaWEtdmFsdWVtaW4sYXJpYS12YWx1ZW5vdyxhcmlhLXZhbHVldGV4dCIpKSx5ZT1hZSgic2NyaXB0LHN0eWxlLHRlbXBsYXRlIiksbWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITEsdGhpcy5idWY9W119cmV0dXJuIHQucHJvdG90eXBlLnNhbml0aXplQ2hpbGRyZW49ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZmlyc3RDaGlsZCxuPSEwO2U7KWlmKGUubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERT9uPXRoaXMuc3RhcnRFbGVtZW50KGUpOmUubm9kZVR5cGU9PT1Ob2RlLlRFWFRfTk9ERT90aGlzLmNoYXJzKGUubm9kZVZhbHVlKTp0aGlzLnNhbml0aXplZFNvbWV0aGluZz0hMCxuJiZlLmZpcnN0Q2hpbGQpZT1lLmZpcnN0Q2hpbGQ7ZWxzZSBmb3IoO2U7KXtlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnRoaXMuZW5kRWxlbWVudChlKTt2YXIgcj10aGlzLmNoZWNrQ2xvYmJlcmVkRWxlbWVudChlLGUubmV4dFNpYmxpbmcpO2lmKHIpe2U9cjticmVha31lPXRoaXMuY2hlY2tDbG9iYmVyZWRFbGVtZW50KGUsZS5wYXJlbnROb2RlKX1yZXR1cm4gdGhpcy5idWYuam9pbigiIil9LHQucHJvdG90eXBlLnN0YXJ0RWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZSxuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighcGUuaGFzT3duUHJvcGVydHkobikpcmV0dXJuIHRoaXMuc2FuaXRpemVkU29tZXRoaW5nPSEwLCF5ZS5oYXNPd25Qcm9wZXJ0eShuKTt0aGlzLmJ1Zi5wdXNoKCI8IiksdGhpcy5idWYucHVzaChuKTtmb3IodmFyIHI9dC5hdHRyaWJ1dGVzLG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIGk9ci5pdGVtKG8pLGE9aS5uYW1lLHU9YS50b0xvd2VyQ2FzZSgpO2lmKHZlLmhhc093blByb3BlcnR5KHUpKXt2YXIgbD1pLnZhbHVlO2RlW3VdJiYobD1pZShsKSksZ2VbdV0mJihlPWwsbD0oZT1TdHJpbmcoZSkpLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gaWUodC50cmltKCkpfSkpLmpvaW4oIiwgIikpLHRoaXMuYnVmLnB1c2goIiAiLGEsJz0iJyxiZShsKSwnIicpfWVsc2UgdGhpcy5zYW5pdGl6ZWRTb21ldGhpbmc9ITB9cmV0dXJuIHRoaXMuYnVmLnB1c2goIj4iKSwhMH0sdC5wcm90b3R5cGUuZW5kRWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cGUuaGFzT3duUHJvcGVydHkoZSkmJiFzZS5oYXNPd25Qcm9wZXJ0eShlKSYmKHRoaXMuYnVmLnB1c2goIjwvIiksdGhpcy5idWYucHVzaChlKSx0aGlzLmJ1Zi5wdXNoKCI+IikpfSx0LnByb3RvdHlwZS5jaGFycz1mdW5jdGlvbih0KXt0aGlzLmJ1Zi5wdXNoKGJlKHQpKX0sdC5wcm90b3R5cGUuY2hlY2tDbG9iYmVyZWRFbGVtZW50PWZ1bmN0aW9uKHQsZSl7aWYoZSYmKHQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSkmTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpPT09Tm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlORURfQlkpdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBlbGVtZW50IGlzIGNsb2JiZXJlZDogIit0Lm91dGVySFRNTCk7cmV0dXJuIGV9LHR9KCksX2U9L1tcdUQ4MDAtXHVEQkZGXVtcdURDMDAtXHVERkZGXS9nLHdlPS8oW15cIy1+IHwhXSkvZztmdW5jdGlvbiBiZSh0KXtyZXR1cm4gdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZShfZSwoZnVuY3Rpb24odCl7cmV0dXJuIiYjIisoMTAyNCoodC5jaGFyQ29kZUF0KDApLTU1Mjk2KSsodC5jaGFyQ29kZUF0KDEpLTU2MzIwKSs2NTUzNikrIjsifSkpLnJlcGxhY2Uod2UsKGZ1bmN0aW9uKHQpe3JldHVybiImIyIrdC5jaGFyQ29kZUF0KDApKyI7In0pKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB4ZSh0KXtyZXR1cm4iY29udGVudCJpbiB0JiZmdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiYiVEVNUExBVEUiPT09dC5ub2RlTmFtZX0odCk/dC5jb250ZW50Om51bGx9dmFyIENlPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuTk9ORT0wXT0iTk9ORSIsdFt0LkhUTUw9MV09IkhUTUwiLHRbdC5TVFlMRT0yXT0iU1RZTEUiLHRbdC5TQ1JJUFQ9M109IlNDUklQVCIsdFt0LlVSTD00XT0iVVJMIix0W3QuUkVTT1VSQ0VfVVJMPTVdPSJSRVNPVVJDRV9VUkwiLHR9KHt9KSxTZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksRWU9bmV3IFJlZ0V4cCgiXihbLSwuXCInJV8hIyBhLXpBLVowLTldK3woPzooPzptYXRyaXh8dHJhbnNsYXRlfHNjYWxlfHJvdGF0ZXxza2V3fHBlcnNwZWN0aXZlKSg/Olh8WXxafDNkKT98KD86cmdifGhzbClhP3woPzpyZXBlYXRpbmctKT8oPzpsaW5lYXJ8cmFkaWFsKS1ncmFkaWVudHwoPzpjYWxjfGF0dHIpKVxcKFstMC05LiUsICNhLXpBLVpdK1xcKSkkIiwiZyIpLE9lPS9edXJsXCgoW14pXSspXCkkLyxUZT0vKFtBLVpdKS9nO2Z1bmN0aW9uIFBlKHQpe3RyeXtyZXR1cm4gbnVsbCE9dD90LnRvU3RyaW5nKCkuc2xpY2UoMCwzMCk6dH1jYXRjaChlKXtyZXR1cm4iW0VSUk9SXSBFeGNlcHRpb24gd2hpbGUgdHJ5aW5nIHRvIHNlcmlhbGl6ZSB0aGUgdmFsdWUifX12YXIga2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Ll9fTkdfRUxFTUVOVF9JRF9fPWZ1bmN0aW9uKCl7cmV0dXJuIEFlKCl9LHR9KCksQWU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV19LEllPW5ldyBUdCgiVGhlIHByZXNlbmNlIG9mIHRoaXMgdG9rZW4gbWFya3MgYW4gaW5qZWN0b3IgYXMgYmVpbmcgdGhlIHJvb3QgaW5qZWN0b3IuIiksUmU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgTGUodCxlLG4pfSxNZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuY3JlYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/UmUodCxlLCIiKTpSZSh0LnByb3ZpZGVycyx0LnBhcmVudCx0Lm5hbWV8fCIiKX0sdC5USFJPV19JRl9OT1RfRk9VTkQ9a3QsdC5OVUxMPW5ldyBMdCx0Lm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dCxwcm92aWRlZEluOiJhbnkiLGZhY3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm4gVXQoUHQpfX0pLHQuX19OR19FTEVNRU5UX0lEX189LTEsdH0oKSxqZT1mdW5jdGlvbih0KXtyZXR1cm4gdH0sTmU9W10sRGU9amUsVWU9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKX0sTGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1lJiYoZT1NZS5OVUxMKSx2b2lkIDA9PT1uJiYobj1udWxsKSx0aGlzLnBhcmVudD1lLHRoaXMuc291cmNlPW47dmFyIHI9dGhpcy5fcmVjb3Jkcz1uZXcgTWFwO3Iuc2V0KE1lLHt0b2tlbjpNZSxmbjpqZSxkZXBzOk5lLHZhbHVlOnRoaXMsdXNlTmV3OiExfSksci5zZXQoUHQse3Rva2VuOlB0LGZuOmplLGRlcHM6TmUsdmFsdWU6dGhpcyx1c2VOZXc6ITF9KSxmdW5jdGlvbiB0KGUsbil7aWYobilpZigobj13dChuKSlpbnN0YW5jZW9mIEFycmF5KWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXQoZSxuW3JdKTtlbHNle2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXRocm93IEhlKCJGdW5jdGlvbi9DbGFzcyBub3Qgc3VwcG9ydGVkIixuKTtpZighbnx8Im9iamVjdCIhPXR5cGVvZiBufHwhbi5wcm92aWRlKXRocm93IEhlKCJVbmV4cGVjdGVkIHByb3ZpZGVyIixuKTt2YXIgbz13dChuLnByb3ZpZGUpLGk9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9TmUsbj10LmRlcHM7aWYobiYmbi5sZW5ndGgpe2U9W107Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPTY7aWYoKGw9d3QobltyXSkpaW5zdGFuY2VvZiBBcnJheSlmb3IodmFyIGk9MCxhPWw7aTxhLmxlbmd0aDtpKyspe3ZhciB1PWFbaV07dSBpbnN0YW5jZW9mIHN0fHx1PT1zdD9vfD0xOnUgaW5zdGFuY2VvZiBmdHx8dT09ZnQ/byY9LTM6dSBpbnN0YW5jZW9mIGN0fHx1PT1jdD9vJj0tNTpsPXUgaW5zdGFuY2VvZiBsdD91LnRva2VuOnd0KHUpfWUucHVzaCh7dG9rZW46bCxvcHRpb25zOm99KX19ZWxzZSBpZih0LnVzZUV4aXN0aW5nKXt2YXIgbD13dCh0LnVzZUV4aXN0aW5nKTtlPVt7dG9rZW46bCxvcHRpb25zOjZ9XX1lbHNlIGlmKCEobnx8TXQgaW4gdCkpdGhyb3cgSGUoIidkZXBzJyByZXF1aXJlZCIsdCk7cmV0dXJuIGV9KHQpLG49amUscj1OZSxvPSExLGk9d3QodC5wcm92aWRlKTtpZihNdCBpbiB0KXI9dC51c2VWYWx1ZTtlbHNlIGlmKHQudXNlRmFjdG9yeSluPXQudXNlRmFjdG9yeTtlbHNlIGlmKHQudXNlRXhpc3RpbmcpO2Vsc2UgaWYodC51c2VDbGFzcylvPSEwLG49d3QodC51c2VDbGFzcyk7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgaSl0aHJvdyBIZSgiU3RhdGljUHJvdmlkZXIgZG9lcyBub3QgaGF2ZSBbdXNlVmFsdWV8dXNlRmFjdG9yeXx1c2VFeGlzdGluZ3x1c2VDbGFzc10gb3IgW3Byb3ZpZGVdIGlzIG5vdCBuZXdhYmxlIix0KTtvPSEwLG49aX1yZXR1cm57ZGVwczplLGZuOm4sdXNlTmV3Om8sdmFsdWU6cn19KG4pO2lmKCEwPT09bi5tdWx0aSl7dmFyIGE9ZS5nZXQobyk7aWYoYSl7aWYoYS5mbiE9PVVlKXRocm93IFZlKG8pfWVsc2UgZS5zZXQobyxhPXt0b2tlbjpuLnByb3ZpZGUsZGVwczpbXSx1c2VOZXc6ITEsZm46VWUsdmFsdWU6TmV9KTthLmRlcHMucHVzaCh7dG9rZW46bz1uLG9wdGlvbnM6Nn0pfXZhciB1PWUuZ2V0KG8pO2lmKHUmJnUuZm49PVVlKXRocm93IFZlKG8pO2Uuc2V0KG8saSl9fShyLHQpfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PW4mJihuPWh0LkRlZmF1bHQpO3ZhciBvPXRoaXMuX3JlY29yZHMuZ2V0KHQpO3RyeXtyZXR1cm4gZnVuY3Rpb24gdChlLG4sbyxpLGEsdSl7dHJ5e3JldHVybiBmdW5jdGlvbihlLG4sbyxpLGEsdSl7dmFyIGwscztpZighbnx8dSZodC5Ta2lwU2VsZil1Jmh0LlNlbGZ8fChzPWkuZ2V0KGUsYSxodC5EZWZhdWx0KSk7ZWxzZXtpZigocz1uLnZhbHVlKT09RGUpdGhyb3cgRXJyb3IoIsm1Q2lyY3VsYXIgZGVwZW5kZW5jeSIpO2lmKHM9PT1OZSl7bi52YWx1ZT1EZTt2YXIgYz1uLnVzZU5ldyxmPW4uZm4saD1uLmRlcHMscD1OZTtpZihoLmxlbmd0aCl7cD1bXTtmb3IodmFyIGQ9MDtkPGgubGVuZ3RoO2QrKyl7dmFyIGc9aFtkXSx2PWcub3B0aW9ucyx5PTImdj9vLmdldChnLnRva2VuKTp2b2lkIDA7cC5wdXNoKHQoZy50b2tlbix5LG8seXx8NCZ2P2k6TWUuTlVMTCwxJnY/bnVsbDpNZS5USFJPV19JRl9OT1RfRk9VTkQsaHQuRGVmYXVsdCkpfX1uLnZhbHVlPXM9Yz9uZXcoKGw9ZikuYmluZC5hcHBseShsLE9iamVjdChyLl9fc3ByZWFkKShbdm9pZCAwXSxwKSkpOmYuYXBwbHkodm9pZCAwLHApfX1yZXR1cm4gc30oZSxuLG8saSxhLHUpfWNhdGNoKGwpe3Rocm93IGwgaW5zdGFuY2VvZiBFcnJvcnx8KGw9bmV3IEVycm9yKGwpKSwobC5uZ1RlbXBUb2tlblBhdGg9bC5uZ1RlbXBUb2tlblBhdGh8fFtdKS51bnNoaWZ0KGUpLG4mJm4udmFsdWU9PURlJiYobi52YWx1ZT1OZSksbH19KHQsbyx0aGlzLl9yZWNvcmRzLHRoaXMucGFyZW50LGUsbil9Y2F0Y2goaSl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXQubg=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?2?0",
"type": "binary",
"value": "base64:Z1RlbXBUb2tlblBhdGg7dGhyb3cgZVtSdF0mJm8udW5zaGlmdChlW1J0XSksdC5tZXNzYWdlPVZ0KCJcbiIrdC5tZXNzYWdlLG8sIlN0YXRpY0luamVjdG9yRXJyb3IiLHIpLHQubmdUb2tlblBhdGg9byx0Lm5nVGVtcFRva2VuUGF0aD1udWxsLHR9KGksdCwwLHRoaXMuc291cmNlKX19LHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuX3JlY29yZHMuZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5wdXNoKHl0KG4pKX0pKSwiU3RhdGljSW5qZWN0b3JbIit0LmpvaW4oIiwgIikrIl0ifSx0fSgpO2Z1bmN0aW9uIFZlKHQpe3JldHVybiBIZSgiQ2Fubm90IG1peCBtdWx0aSBwcm92aWRlcnMgYW5kIHJlZ3VsYXIgcHJvdmlkZXJzIix0KX1mdW5jdGlvbiBIZSh0LGUpe3JldHVybiBuZXcgRXJyb3IoVnQodCxlLCJTdGF0aWNJbmplY3RvckVycm9yIikpfXZhciB6ZT1uZXcgVHQoIkFuYWx5emVGb3JFbnRyeUNvbXBvbmVudHMiKSxGZT1udWxsO2Z1bmN0aW9uIEJlKCl7aWYoIUZlKXt2YXIgdD1PdC5TeW1ib2w7aWYodCYmdC5pdGVyYXRvcilGZT10Lml0ZXJhdG9yO2Vsc2UgZm9yKHZhciBlPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE1hcC5wcm90b3R5cGUpLG49MDtuPGUubGVuZ3RoOysrbil7dmFyIHI9ZVtuXTsiZW50cmllcyIhPT1yJiYic2l6ZSIhPT1yJiZNYXAucHJvdG90eXBlW3JdPT09TWFwLnByb3RvdHlwZS5lbnRyaWVzJiYoRmU9cil9fXJldHVybiBGZX1mdW5jdGlvbiBaZSh0LGUpe3JldHVybiB0PT09ZXx8Im51bWJlciI9PXR5cGVvZiB0JiYibnVtYmVyIj09dHlwZW9mIGUmJmlzTmFOKHQpJiZpc05hTihlKX1mdW5jdGlvbiBHZSh0LGUpe3ZhciBuPVdlKHQpLHI9V2UoZSk7cmV0dXJuIG4mJnI/ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj10W0JlKCldKCksbz1lW0JlKCldKCk7Oyl7dmFyIGk9ci5uZXh0KCksYT1vLm5leHQoKTtpZihpLmRvbmUmJmEuZG9uZSlyZXR1cm4hMDtpZihpLmRvbmV8fGEuZG9uZSlyZXR1cm4hMTtpZighbihpLnZhbHVlLGEudmFsdWUpKXJldHVybiExfX0odCxlLEdlKTohKG58fCF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0fHxyfHwhZXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl8fFplKHQsZSl9dmFyIHFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLndyYXBwZWQ9dH1yZXR1cm4gdC53cmFwPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgdChlKX0sdC51bndyYXA9ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaXNXcmFwcGVkKGUpP2Uud3JhcHBlZDplfSx0LmlzV3JhcHBlZD1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHR9LHR9KCk7ZnVuY3Rpb24gV2UodCl7cmV0dXJuISFRZSh0KSYmKEFycmF5LmlzQXJyYXkodCl8fCEodCBpbnN0YW5jZW9mIE1hcCkmJkJlKClpbiB0KX1mdW5jdGlvbiBRZSh0KXtyZXR1cm4gbnVsbCE9PXQmJigiZnVuY3Rpb24iPT10eXBlb2YgdHx8Im9iamVjdCI9PXR5cGVvZiB0KX1mdW5jdGlvbiBLZSh0KXtyZXR1cm4hIXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW59ZnVuY3Rpb24gWWUodCl7cmV0dXJuISF0JiYiZnVuY3Rpb24iPT10eXBlb2YgdC5zdWJzY3JpYmV9dmFyIEplPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5wcmV2aW91c1ZhbHVlPXQsdGhpcy5jdXJyZW50VmFsdWU9ZSx0aGlzLmZpcnN0Q2hhbmdlPW59cmV0dXJuIHQucHJvdG90eXBlLmlzRmlyc3RDaGFuZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maXJzdENoYW5nZX0sdH0oKSwkZT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksWGU9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpO2Z1bmN0aW9uIHRuKHQpe3ZhciBlPUVycm9yKCJObyBjb21wb25lbnQgZmFjdG9yeSBmb3VuZCBmb3IgIit5dCh0KSsiLiBEaWQgeW91IGFkZCBpdCB0byBATmdNb2R1bGUuZW50cnlDb21wb25lbnRzPyIpO3JldHVybiBlW2VuXT10LGV9dmFyIGVuPSJuZ0NvbXBvbmVudCIsbm49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt0aHJvdyB0bih0KX0sdH0oKSxybj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuTlVMTD1uZXcgbm4sdH0oKSxvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3BhcmVudD1lLHRoaXMuX25nTW9kdWxlPW4sdGhpcy5fZmFjdG9yaWVzPW5ldyBNYXA7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07dGhpcy5fZmFjdG9yaWVzLnNldChvLmNvbXBvbmVudFR5cGUsbyl9fXJldHVybiB0LnByb3RvdHlwZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO2lmKCFlJiZ0aGlzLl9wYXJlbnQmJihlPXRoaXMuX3BhcmVudC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeSh0KSksIWUpdGhyb3cgdG4odCk7cmV0dXJuIG5ldyBhbihlLHRoaXMuX25nTW9kdWxlKX0sdH0oKSxhbj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLmZhY3Rvcnk9ZSxyLm5nTW9kdWxlPW4sci5zZWxlY3Rvcj1lLnNlbGVjdG9yLHIuY29tcG9uZW50VHlwZT1lLmNvbXBvbmVudFR5cGUsci5uZ0NvbnRlbnRTZWxlY3RvcnM9ZS5uZ0NvbnRlbnRTZWxlY3RvcnMsci5pbnB1dHM9ZS5pbnB1dHMsci5vdXRwdXRzPWUub3V0cHV0cyxyfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiB0aGlzLmZhY3RvcnkuY3JlYXRlKHQsZSxuLHJ8fHRoaXMubmdNb2R1bGUpfSxlfShYZSk7ZnVuY3Rpb24gdW4oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV19dmFyIGxuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm5hdGl2ZUVsZW1lbnQ9dH1yZXR1cm4gdC5fX05HX0VMRU1FTlRfSURfXz1mdW5jdGlvbigpe3JldHVybiBzbih0KX0sdH0oKSxzbj11bixjbj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksZm49ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLGhuPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuSW1wb3J0YW50PTFdPSJJbXBvcnRhbnQiLHRbdC5EYXNoQ2FzZT0yXT0iRGFzaENhc2UiLHR9KHt9KSxwbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuX19OR19FTEVNRU5UX0lEX189ZnVuY3Rpb24oKXtyZXR1cm4gZG4oKX0sdH0oKSxkbj11bixnbj1uZXcoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dGhpcy5mdWxsPXQsdGhpcy5tYWpvcj10LnNwbGl0KCIuIilbMF0sdGhpcy5taW5vcj10LnNwbGl0KCIuIilbMV0sdGhpcy5wYXRjaD10LnNwbGl0KCIuIikuc2xpY2UoMikuam9pbigiLiIpfX0oKSkoIjguMi4xNCIpLHZuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIFdlKHQpfSx0LnByb3RvdHlwZS5jcmVhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBtbih0KX0sdH0oKSx5bj1mdW5jdGlvbih0LGUpe3JldHVybiBlfSxtbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5sZW5ndGg9MCx0aGlzLl9saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fdW5saW5rZWRSZWNvcmRzPW51bGwsdGhpcy5fcHJldmlvdXNJdEhlYWQ9bnVsbCx0aGlzLl9pdEhlYWQ9bnVsbCx0aGlzLl9pdFRhaWw9bnVsbCx0aGlzLl9hZGRpdGlvbnNIZWFkPW51bGwsdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsLHRoaXMuX21vdmVzSGVhZD1udWxsLHRoaXMuX21vdmVzVGFpbD1udWxsLHRoaXMuX3JlbW92YWxzSGVhZD1udWxsLHRoaXMuX3JlbW92YWxzVGFpbD1udWxsLHRoaXMuX2lkZW50aXR5Q2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGwsdGhpcy5fdHJhY2tCeUZuPXR8fHlufXJldHVybiB0LnByb3RvdHlwZS5mb3JFYWNoSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9pdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hPcGVyYXRpb249ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMuX2l0SGVhZCxuPXRoaXMuX3JlbW92YWxzSGVhZCxyPTAsbz1udWxsO2V8fG47KXt2YXIgaT0hbnx8ZSYmZS5jdXJyZW50SW5kZXg8eG4obixyLG8pP2U6bixhPXhuKGkscixvKSx1PWkuY3VycmVudEluZGV4O2lmKGk9PT1uKXItLSxuPW4uX25leHRSZW1vdmVkO2Vsc2UgaWYoZT1lLl9uZXh0LG51bGw9PWkucHJldmlvdXNJbmRleClyKys7ZWxzZXtvfHwobz1bXSk7dmFyIGw9YS1yLHM9dS1yO2lmKGwhPXMpe2Zvcih2YXIgYz0wO2M8bDtjKyspe3ZhciBmPWM8by5sZW5ndGg/b1tjXTpvW2NdPTAsaD1mK2M7czw9aCYmaDxsJiYob1tjXT1mKzEpfW9baS5wcmV2aW91c0luZGV4XT1zLWx9fWEhPT11JiZ0KGksYSx1KX19LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNJdEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UHJldmlvdXMpdChlKX0sdC5wcm90b3R5cGUuZm9yRWFjaEFkZGVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dEFkZGVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hNb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fbW92ZXNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dE1vdmVkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hSZW1vdmVkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9yZW1vdmFsc0hlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0UmVtb3ZlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoSWRlbnRpdHlDaGFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRJZGVudGl0eUNoYW5nZSl0KGUpfSx0LnByb3RvdHlwZS5kaWZmPWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQmJih0PVtdKSwhV2UodCkpdGhyb3cgbmV3IEVycm9yKCJFcnJvciB0cnlpbmcgdG8gZGlmZiAnIit5dCh0KSsiJy4gT25seSBhcnJheXMgYW5kIGl0ZXJhYmxlcyBhcmUgYWxsb3dlZCIpO3JldHVybiB0aGlzLmNoZWNrKHQpP3RoaXM6bnVsbH0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKCl7fSx0LnByb3RvdHlwZS5jaGVjaz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3Jlc2V0KCk7dmFyIG4scixvLGk9dGhpcy5faXRIZWFkLGE9ITE7aWYoQXJyYXkuaXNBcnJheSh0KSl7dGhpcy5sZW5ndGg9dC5sZW5ndGg7Zm9yKHZhciB1PTA7dTx0aGlzLmxlbmd0aDt1Kyspbz10aGlzLl90cmFja0J5Rm4odSxyPXRbdV0pLG51bGwhPT1pJiZaZShpLnRyYWNrQnlJZCxvKT8oYSYmKGk9dGhpcy5fdmVyaWZ5UmVpbnNlcnRpb24oaSxyLG8sdSkpLFplKGkuaXRlbSxyKXx8dGhpcy5fYWRkSWRlbnRpdHlDaGFuZ2UoaSxyKSk6KGk9dGhpcy5fbWlzbWF0Y2goaSxyLG8sdSksYT0hMCksaT1pLl9uZXh0fWVsc2Ugbj0wLGZ1bmN0aW9uKHQsZSl7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyllKHRbbl0pO2Vsc2UgZm9yKHZhciByPXRbQmUoKV0oKSxvPXZvaWQgMDshKG89ci5uZXh0KCkpLmRvbmU7KWUoby52YWx1ZSl9KHQsKGZ1bmN0aW9uKHQpe289ZS5fdHJhY2tCeUZuKG4sdCksbnVsbCE9PWkmJlplKGkudHJhY2tCeUlkLG8pPyhhJiYoaT1lLl92ZXJpZnlSZWluc2VydGlvbihpLHQsbyxuKSksWmUoaS5pdGVtLHQpfHxlLl9hZGRJZGVudGl0eUNoYW5nZShpLHQpKTooaT1lLl9taXNtYXRjaChpLHQsbyxuKSxhPSEwKSxpPWkuX25leHQsbisrfSkpLHRoaXMubGVuZ3RoPW47cmV0dXJuIHRoaXMuX3RydW5jYXRlKGkpLHRoaXMuY29sbGVjdGlvbj10LHRoaXMuaXNEaXJ0eX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0RpcnR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLl9hZGRpdGlvbnNIZWFkfHxudWxsIT09dGhpcy5fbW92ZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfHxudWxsIT09dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5fcmVzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmlzRGlydHkpe3ZhciB0PXZvaWQgMCxlPXZvaWQgMDtmb3IodD10aGlzLl9wcmV2aW91c0l0SGVhZD10aGlzLl9pdEhlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0KXQuX25leHRQcmV2aW91cz10Ll9uZXh0O2Zvcih0PXRoaXMuX2FkZGl0aW9uc0hlYWQ7bnVsbCE9PXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4O2Zvcih0aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9bnVsbCx0PXRoaXMuX21vdmVzSGVhZDtudWxsIT09dDt0PWUpdC5wcmV2aW91c0luZGV4PXQuY3VycmVudEluZGV4LGU9dC5fbmV4dE1vdmVkO3RoaXMuX21vdmVzSGVhZD10aGlzLl9tb3Zlc1RhaWw9bnVsbCx0aGlzLl9yZW1vdmFsc0hlYWQ9dGhpcy5fcmVtb3ZhbHNUYWlsPW51bGwsdGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsPW51bGx9fSx0LnByb3RvdHlwZS5fbWlzbWF0Y2g9ZnVuY3Rpb24odCxlLG4scil7dmFyIG87cmV0dXJuIG51bGw9PT10P289dGhpcy5faXRUYWlsOihvPXQuX3ByZXYsdGhpcy5fcmVtb3ZlKHQpKSxudWxsIT09KHQ9bnVsbD09PXRoaXMuX2xpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl9saW5rZWRSZWNvcmRzLmdldChuLHIpKT8oWmUodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX21vdmVBZnRlcih0LG8scikpOm51bGwhPT0odD1udWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzP251bGw6dGhpcy5fdW5saW5rZWRSZWNvcmRzLmdldChuLG51bGwpKT8oWmUodC5pdGVtLGUpfHx0aGlzLl9hZGRJZGVudGl0eUNoYW5nZSh0LGUpLHRoaXMuX3JlaW5zZXJ0QWZ0ZXIodCxvLHIpKTp0PXRoaXMuX2FkZEFmdGVyKG5ldyBfbihlLG4pLG8sciksdH0sdC5wcm90b3R5cGUuX3ZlcmlmeVJlaW5zZXJ0aW9uPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPW51bGw9PT10aGlzLl91bmxpbmtlZFJlY29yZHM/bnVsbDp0aGlzLl91bmxpbmtlZFJlY29yZHMuZ2V0KG4sbnVsbCk7cmV0dXJuIG51bGwhPT1vP3Q9dGhpcy5fcmVpbnNlcnRBZnRlcihvLHQuX3ByZXYscik6dC5jdXJyZW50SW5kZXghPXImJih0LmN1cnJlbnRJbmRleD1yLHRoaXMuX2FkZFRvTW92ZXModCxyKSksdH0sdC5wcm90b3R5cGUuX3RydW5jYXRlPWZ1bmN0aW9uKHQpe2Zvcig7bnVsbCE9PXQ7KXt2YXIgZT10Ll9uZXh0O3RoaXMuX2FkZFRvUmVtb3ZhbHModGhpcy5fdW5saW5rKHQpKSx0PWV9bnVsbCE9PXRoaXMuX3VubGlua2VkUmVjb3JkcyYmdGhpcy5fdW5saW5rZWRSZWNvcmRzLmNsZWFyKCksbnVsbCE9PXRoaXMuX2FkZGl0aW9uc1RhaWwmJih0aGlzLl9hZGRpdGlvbnNUYWlsLl9uZXh0QWRkZWQ9bnVsbCksbnVsbCE9PXRoaXMuX21vdmVzVGFpbCYmKHRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPW51bGwpLG51bGwhPT10aGlzLl9pdFRhaWwmJih0aGlzLl9pdFRhaWwuX25leHQ9bnVsbCksbnVsbCE9PXRoaXMuX3JlbW92YWxzVGFpbCYmKHRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9bnVsbCksbnVsbCE9PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwmJih0aGlzLl9pZGVudGl0eUNoYW5nZXNUYWlsLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbCl9LHQucHJvdG90eXBlLl9yZWluc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiZ0aGlzLl91bmxpbmtlZFJlY29yZHMucmVtb3ZlKHQpO3ZhciByPXQuX3ByZXZSZW1vdmVkLG89dC5fbmV4dFJlbW92ZWQ7cmV0dXJuIG51bGw9PT1yP3RoaXMuX3JlbW92YWxzSGVhZD1vOnIuX25leHRSZW1vdmVkPW8sbnVsbD09PW8/dGhpcy5fcmVtb3ZhbHNUYWlsPXI6by5fcHJldlJlbW92ZWQ9cix0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkVG9Nb3Zlcyh0LG4pLHR9LHQucHJvdG90eXBlLl9tb3ZlQWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl91bmxpbmsodCksdGhpcy5faW5zZXJ0QWZ0ZXIodCxlLG4pLHRoaXMuX2FkZFRvTW92ZXModCxuKSx0fSx0LnByb3RvdHlwZS5fYWRkQWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbnNlcnRBZnRlcih0LGUsbiksdGhpcy5fYWRkaXRpb25zVGFpbD1udWxsPT09dGhpcy5fYWRkaXRpb25zVGFpbD90aGlzLl9hZGRpdGlvbnNIZWFkPXQ6dGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdH0sdC5wcm90b3R5cGUuX2luc2VydEFmdGVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1udWxsPT09ZT90aGlzLl9pdEhlYWQ6ZS5fbmV4dDtyZXR1cm4gdC5fbmV4dD1yLHQuX3ByZXY9ZSxudWxsPT09cj90aGlzLl9pdFRhaWw9dDpyLl9wcmV2PXQsbnVsbD09PWU/dGhpcy5faXRIZWFkPXQ6ZS5fbmV4dD10LG51bGw9PT10aGlzLl9saW5rZWRSZWNvcmRzJiYodGhpcy5fbGlua2VkUmVjb3Jkcz1uZXcgYm4pLHRoaXMuX2xpbmtlZFJlY29yZHMucHV0KHQpLHQuY3VycmVudEluZGV4PW4sdH0sdC5wcm90b3R5cGUuX3JlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYWRkVG9SZW1vdmFscyh0aGlzLl91bmxpbmsodCkpfSx0LnByb3RvdHlwZS5fdW5saW5rPWZ1bmN0aW9uKHQpe251bGwhPT10aGlzLl9saW5rZWRSZWNvcmRzJiZ0aGlzLl9saW5rZWRSZWNvcmRzLnJlbW92ZSh0KTt2YXIgZT10Ll9wcmV2LG49dC5fbmV4dDtyZXR1cm4gbnVsbD09PWU/dGhpcy5faXRIZWFkPW46ZS5fbmV4dD1uLG51bGw9PT1uP3RoaXMuX2l0VGFpbD1lOm4uX3ByZXY9ZSx0fSx0LnByb3RvdHlwZS5fYWRkVG9Nb3Zlcz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnByZXZpb3VzSW5kZXg9PT1lP3Q6KHRoaXMuX21vdmVzVGFpbD1udWxsPT09dGhpcy5fbW92ZXNUYWlsP3RoaXMuX21vdmVzSGVhZD10OnRoaXMuX21vdmVzVGFpbC5fbmV4dE1vdmVkPXQsdCl9LHQucHJvdG90eXBlLl9hZGRUb1JlbW92YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dGhpcy5fdW5saW5rZWRSZWNvcmRzJiYodGhpcy5fdW5saW5rZWRSZWNvcmRzPW5ldyBibiksdGhpcy5fdW5saW5rZWRSZWNvcmRzLnB1dCh0KSx0LmN1cnJlbnRJbmRleD1udWxsLHQuX25leHRSZW1vdmVkPW51bGwsbnVsbD09PXRoaXMuX3JlbW92YWxzVGFpbD8odGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzSGVhZD10LHQuX3ByZXZSZW1vdmVkPW51bGwpOih0Ll9wcmV2UmVtb3ZlZD10aGlzLl9yZW1vdmFsc1RhaWwsdGhpcy5fcmVtb3ZhbHNUYWlsPXRoaXMuX3JlbW92YWxzVGFpbC5fbmV4dFJlbW92ZWQ9dCksdH0sdC5wcm90b3R5cGUuX2FkZElkZW50aXR5Q2hhbmdlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaXRlbT1lLHRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw9bnVsbD09PXRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWw/dGhpcy5faWRlbnRpdHlDaGFuZ2VzSGVhZD10OnRoaXMuX2lkZW50aXR5Q2hhbmdlc1RhaWwuX25leHRJZGVudGl0eUNoYW5nZT10LHR9LHR9KCksX249ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0aGlzLml0ZW09dCx0aGlzLnRyYWNrQnlJZD1lLHRoaXMuY3VycmVudEluZGV4PW51bGwsdGhpcy5wcmV2aW91c0luZGV4PW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fcHJldj1udWxsLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wcmV2RHVwPW51bGwsdGhpcy5fbmV4dER1cD1udWxsLHRoaXMuX3ByZXZSZW1vdmVkPW51bGwsdGhpcy5fbmV4dFJlbW92ZWQ9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0TW92ZWQ9bnVsbCx0aGlzLl9uZXh0SWRlbnRpdHlDaGFuZ2U9bnVsbH19KCksd249ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5faGVhZD1udWxsLHRoaXMuX3RhaWw9bnVsbH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe251bGw9PT10aGlzLl9oZWFkPyh0aGlzLl9oZWFkPXRoaXMuX3RhaWw9dCx0Ll9uZXh0RHVwPW51bGwsdC5fcHJldkR1cD1udWxsKToodGhpcy5fdGFpbC5fbmV4dER1cD10LHQuX3ByZXZEdXA9dGhpcy5fdGFpbCx0Ll9uZXh0RHVwPW51bGwsdGhpcy5fdGFpbD10KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG47Zm9yKG49dGhpcy5faGVhZDtudWxsIT09bjtuPW4uX25leHREdXApaWYoKG51bGw9PT1lfHxlPD1uLmN1cnJlbnRJbmRleCkmJlplKG4udHJhY2tCeUlkLHQpKXJldHVybiBuO3JldHVybiBudWxsfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC5fcHJldkR1cCxuPXQuX25leHREdXA7cmV0dXJuIG51bGw9PT1lP3RoaXMuX2hlYWQ9bjplLl9uZXh0RHVwPW4sbnVsbD09PW4/dGhpcy5fdGFpbD1lOm4uX3ByZXZEdXA9ZSxudWxsPT09dGhpcy5faGVhZH0sdH0oKSxibj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLm1hcD1uZXcgTWFwfXJldHVybiB0LnByb3RvdHlwZS5wdXQ9ZnVuY3Rpb24odCl7dmFyIGU9dC50cmFja0J5SWQsbj10aGlzLm1hcC5nZXQoZSk7bnx8KG49bmV3IHduLHRoaXMubWFwLnNldChlLG4pKSxuLmFkZCh0KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5tYXAuZ2V0KHQpO3JldHVybiBuP24uZ2V0KHQsZSk6bnVsbH0sdC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXQudHJhY2tCeUlkO3JldHVybiB0aGlzLm1hcC5nZXQoZSkucmVtb3ZlKHQpJiZ0aGlzLm1hcC5kZWxldGUoZSksdH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpc0VtcHR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLm1hcC5zaXplfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5tYXAuY2xlYXIoKX0sdH0oKTtmdW5jdGlvbiB4bih0LGUsbil7dmFyIHI9dC5wcmV2aW91c0luZGV4O2lmKG51bGw9PT1yKXJldHVybiByO3ZhciBvPTA7cmV0dXJuIG4mJnI8bi5sZW5ndGgmJihvPW5bcl0pLHIrZStvfXZhciBDbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnN1cHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTWFwfHxRZSh0KX0sdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBTbn0sdH0oKSxTbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9yZWNvcmRzPW5ldyBNYXAsdGhpcy5fbWFwSGVhZD1udWxsLHRoaXMuX2FwcGVuZEFmdGVyPW51bGwsdGhpcy5fcHJldmlvdXNNYXBIZWFkPW51bGwsdGhpcy5fY2hhbmdlc0hlYWQ9bnVsbCx0aGlzLl9jaGFuZ2VzVGFpbD1udWxsLHRoaXMuX2FkZGl0aW9uc0hlYWQ9bnVsbCx0aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGwsdGhpcy5fcmVtb3ZhbHNUYWlsPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaXNEaXJ0eSIse2dldDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy5fYWRkaXRpb25zSGVhZHx8bnVsbCE9PXRoaXMuX2NoYW5nZXNIZWFkfHxudWxsIT09dGhpcy5fcmVtb3ZhbHNIZWFkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZvckVhY2hJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlPXRoaXMuX21hcEhlYWQ7bnVsbCE9PWU7ZT1lLl9uZXh0KXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hQcmV2aW91c0l0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFByZXZpb3VzKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hDaGFuZ2VkSXRlbT1mdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09ZTtlPWUuX25leHRDaGFuZ2VkKXQoZSl9LHQucHJvdG90eXBlLmZvckVhY2hBZGRlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fYWRkaXRpb25zSGVhZDtudWxsIT09ZTtlPWUuX25leHRBZGRlZCl0KGUpfSx0LnByb3RvdHlwZS5mb3JFYWNoUmVtb3ZlZEl0ZW09ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGU9dGhpcy5fcmVtb3ZhbHNIZWFkO251bGwhPT1lO2U9ZS5fbmV4dFJlbW92ZWQpdChlKX0sdC5wcm90b3R5cGUuZGlmZj1mdW5jdGlvbih0KXtpZih0KXtpZighKHQgaW5zdGFuY2VvZiBNYXB8fFFlKHQpKSl0aHJvdyBuZXcgRXJyb3IoIkVycm9yIHRyeWluZyB0byBkaWZmICciK3l0KHQpKyInLiBPbmx5IG1hcHMgYW5kIG9iamVjdHMgYXJlIGFsbG93ZWQiKX1lbHNlIHQ9bmV3IE1hcDtyZXR1cm4gdGhpcy5jaGVjayh0KT90aGlzOm51bGx9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2hlY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLl9yZXNldCgpO3ZhciBuPXRoaXMuX21hcEhlYWQ7aWYodGhpcy5fYXBwZW5kQWZ0ZXI9bnVsbCx0aGlzLl9mb3JFYWNoKHQsKGZ1bmN0aW9uKHQscil7aWYobiYmbi5rZXk9PT1yKWUuX21heWJlQWRkVG9DaGFuZ2VzKG4sdCksZS5fYXBwZW5kQWZ0ZXI9bixuPW4uX25leHQ7ZWxzZXt2YXIgbz1lLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleShyLHQpO249ZS5faW5zZXJ0QmVmb3JlT3JBcHBlbmQobixvKX19KSksbil7bi5fcHJldiYmKG4uX3ByZXYuX25leHQ9bnVsbCksdGhpcy5fcmVtb3ZhbHNIZWFkPW47Zm9yKHZhciByPW47bnVsbCE9PXI7cj1yLl9uZXh0UmVtb3ZlZClyPT09dGhpcy5fbWFwSGVhZCYmKHRoaXMuX21hcEhlYWQ9bnVsbCksdGhpcy5fcmVjb3Jkcy5kZWxldGUoci5rZXkpLHIuX25leHRSZW1vdmVkPXIuX25leHQsci5wcmV2aW91c1ZhbHVlPXIuY3VycmVudFZhbHVlLHIuY3VycmVudFZhbHVlPW51bGwsci5fcHJldj1udWxsLHIuX25leHQ9bnVsbH1yZXR1cm4gdGhpcy5fY2hhbmdlc1RhaWwmJih0aGlzLl9jaGFuZ2VzVGFpbC5fbmV4dENoYW5nZWQ9bnVsbCksdGhpcy5fYWRkaXRpb25zVGFpbCYmKHRoaXMuX2FkZGl0aW9uc1RhaWwuX25leHRBZGRlZD1udWxsKSx0aGlzLmlzRGlydHl9LHQucHJvdG90eXBlLl9pbnNlcnRCZWZvcmVPckFwcGVuZD1mdW5jdGlvbih0LGUpe2lmKHQpe3ZhciBuPXQuX3ByZXY7cmV0dXJuIGUuX25leHQ9dCxlLl9wcmV2PW4sdC5fcHJldj1lLG4mJihuLl9uZXh0PWUpLHQ9PT10aGlzLl9tYXBIZWFkJiYodGhpcy5fbWFwSGVhZD1lKSx0aGlzLl9hcHBlbmRBZnRlcj10LHR9cmV0dXJuIHRoaXMuX2FwcGVuZEFmdGVyPyh0aGlzLl9hcHBlbmRBZnRlci5fbmV4dD1lLGUuX3ByZXY9dGhpcy5fYXBwZW5kQWZ0ZXIpOnRoaXMuX21hcEhlYWQ9ZSx0aGlzLl9hcHBlbmRBZnRlcj1lLG51bGx9LHQucHJvdG90eXBlLl9nZXRPckNyZWF0ZVJlY29yZEZvcktleT1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX3JlY29yZHMuaGFzKHQpKXt2YXIgbj10aGlzLl9yZWNvcmRzLmdldCh0KTt0aGlzLl9tYXliZUFkZFRvQ2hhbmdlcyhuLGUpO3ZhciByPW4uX3ByZXYsbz1uLl9uZXh0O3JldHVybiByJiYoci5fbmV4dD1vKSxvJiYoby5fcHJldj1yKSxuLl9uZXh0PW51bGwsbi5fcHJldj1udWxsLG59dmFyIGk9bmV3IEVuKHQpO3JldHVybiB0aGlzLl9yZWNvcmRzLnNldCh0LGkpLGkuY3VycmVudFZhbHVlPWUsdGhpcy5fYWRkVG9BZGRpdGlvbnMoaSksaX0sdC5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5pc0RpcnR5KXt2YXIgdD12b2lkIDA7Zm9yKHRoaXMuX3ByZXZpb3VzTWFwSGVhZD10aGlzLl9tYXBIZWFkLHQ9dGhpcy5fcHJldmlvdXNNYXBIZWFkO251bGwhPT10O3Q9dC5fbmV4dCl0Ll9uZXh0UHJldmlvdXM9dC5fbmV4dDtmb3IodD10aGlzLl9jaGFuZ2VzSGVhZDtudWxsIT09dDt0PXQuX25leHRDaGFuZ2VkKXQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZTtmb3IodD10aGlzLl9hZGRpdGlvbnNIZWFkO251bGwhPXQ7dD10Ll9uZXh0QWRkZWQpdC5wcmV2aW91c1ZhbHVlPXQuY3VycmVudFZhbHVlO3RoaXMuX2NoYW5nZXNIZWFkPXRoaXMuX2NoYW5nZXNUYWlsPW51bGwsdGhpcy5fYWRkaXRpb25zSGVhZD10aGlzLl9hZGRpdGlvbnNUYWlsPW51bGwsdGhpcy5fcmVtb3ZhbHNIZWFkPW51bGx9fSx0LnByb3RvdHlwZS5fbWF5YmVBZGRUb0NoYW5nZXM9ZnVuY3Rpb24odCxlKXtaZShlLHQuY3VycmVudFZhbHVlKXx8KHQucHJldmlvdXNWYWx1ZT10LmN1cnJlbnRWYWx1ZSx0LmN1cnJlbnRWYWx1ZT1lLHRoaXMuX2FkZFRvQ2hhbmdlcyh0KSl9LHQucHJvdG90eXBlLl9hZGRUb0FkZGl0aW9ucz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fYWRkaXRpb25zSGVhZD90aGlzLl9hZGRpdGlvbnNIZWFkPXRoaXMuX2FkZGl0aW9uc1RhaWw9dDoodGhpcy5fYWRkaXRpb25zVGFpbC5fbmV4dEFkZGVkPXQsdGhpcy5fYWRkaXRpb25zVGFpbD10KX0sdC5wcm90b3R5cGUuX2FkZFRvQ2hhbmdlcz1mdW5jdGlvbih0KXtudWxsPT09dGhpcy5fY2hhbmdlc0hlYWQ/dGhpcy5fY2hhbmdlc0hlYWQ9dGhpcy5fY2hhbmdlc1RhaWw9dDoodGhpcy5fY2hhbmdlc1RhaWwuX25leHRDaGFuZ2VkPXQsdGhpcy5fY2hhbmdlc1RhaWw9dCl9LHQucHJvdG90eXBlLl9mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dCBpbnN0YW5jZW9mIE1hcD90LmZvckVhY2goZSk6T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obil7cmV0dXJuIGUodFtuXSxuKX0pKX0sdH0oKSxFbj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLmtleT10LHRoaXMucHJldmlvdXNWYWx1ZT1udWxsLHRoaXMuY3VycmVudFZhbHVlPW51bGwsdGhpcy5fbmV4dFByZXZpb3VzPW51bGwsdGhpcy5fbmV4dD1udWxsLHRoaXMuX3ByZXY9bnVsbCx0aGlzLl9uZXh0QWRkZWQ9bnVsbCx0aGlzLl9uZXh0UmVtb3ZlZD1udWxsLHRoaXMuX25leHRDaGFuZ2VkPW51bGx9fSgpLE9uPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rvcmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG51bGwhPW4pe3ZhciByPW4uZmFjdG9yaWVzLnNsaWNlKCk7ZT1lLmNvbmNhdChyKX1yZXR1cm4gbmV3IHQoZSl9LHQuZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgSXRlcmFibGVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3QsbmV3IGZ0LG5ldyBzdF1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuZmFjdG9yaWVzLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN1cHBvcnRzKHQpfSkpO2lmKG51bGwhPW4pcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBhIGRpZmZlciBzdXBwb3J0aW5nIG9iamVjdCAnIit0KyInIG9mIHR5cGUgJyIrKChlPXQpLm5hbWV8fHR5cGVvZiBlKSsiJyIpfSx0Lm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0KFtuZXcgdm5dKX19KSx0fSgpLFRuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZhY3Rvcmllcz10fXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlLG4pe2lmKG4pe3ZhciByPW4uZmFjdG9yaWVzLnNsaWNlKCk7ZT1lLmNvbmNhdChyKX1yZXR1cm4gbmV3IHQoZSl9LHQuZXh0ZW5kPWZ1bmN0aW9uKGUpe3JldHVybntwcm92aWRlOnQsdXNlRmFjdG9yeTpmdW5jdGlvbihuKXtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBleHRlbmQgS2V5VmFsdWVEaWZmZXJzIHdpdGhvdXQgYSBwYXJlbnQgaW5qZWN0b3IiKTtyZXR1cm4gdC5jcmVhdGUoZSxuKX0sZGVwczpbW3QsbmV3IGZ0LG5ldyBzdF1dfX0sdC5wcm90b3R5cGUuZmluZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmZhY3Rvcmllcy5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdXBwb3J0cyh0KX0pKTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgYSBkaWZmZXIgc3VwcG9ydGluZyBvYmplY3QgJyIrdCsiJyIpfSx0Lm5nSW5qZWN0YWJsZURlZj1kdCh7dG9rZW46dCxwcm92aWRlZEluOiJyb290IixmYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0KFtuZXcgQ25dKX19KSx0fSgpLFBuPVtuZXcgQ25dLGtuPW5ldyBPbihbbmV3IHZuXSksQW49bmV3IFRuKFBuKSxJbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQuX19OR19FTEVNRU5UX0lEX189ZnVuY3Rpb24oKXtyZXR1cm4gUm4odCxsbil9LHR9KCksUm49dW4sTW49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0Ll9fTkdfRUxFTUVOVF9JRF9fPWZ1bmN0aW9uKCl7cmV0dXJuIGpuKHQsbG4pfSx0fSgpLGpuPXVuO2Z1bmN0aW9uIE5uKHQsZSxuLHIpe3ZhciBvPSJFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLiBQcmV2aW91cyB2YWx1ZTogJyIrZSsiJy4gQ3VycmVudCB2YWx1ZTogJyIrbisiJy4iO3JldHVybiByJiYobys9IiBJdCBzZWVtcyBsaWtlIHRoZSB2aWV3IGhhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIgaXRzIHBhcmVudCBhbmQgaXRzIGNoaWxkcmVuIGhhdmUgYmVlbiBkaXJ0eSBjaGVja2VkLiBIYXMgaXQgYmVlbiBjcmVhdGVkIGluIGEgY2hhbmdlIGRldGVjdGlvbiBob29rID8iKSxmdW5jdGlvbih0LGUpe3ZhciBuPW5ldyBFcnJvcih0KTtyZXR1cm4gRG4obixlKSxufShvLHQpfWZ1bmN0aW9uIERuKHQsZSl7dFtxdF09ZSx0W1F0XT1lLmxvZ0Vycm9yLmJpbmQoZSl9ZnVuY3Rpb24gVW4odCl7cmV0dXJuIG5ldyBFcnJvcigiVmlld0Rlc3Ryb3llZEVycm9yOiBBdHRlbXB0IHRvIHVzZSBhIGRlc3Ryb3llZCB2aWV3OiAiK3QpfWZ1bmN0aW9uIExuKHQsZSxuKXt2YXIgcj10LnN0YXRlLG89MTc5MiZyO3JldHVybiBvPT09ZT8odC5zdGF0ZT0tMTc5MyZyfG4sdC5pbml0SW5kZXg9LTEsITApOm89PT1ufWZ1bmN0aW9uIFZuKHQsZSxuKXtyZXR1cm4oMTc5MiZ0LnN0YXRlKT09PWUmJnQuaW5pdEluZGV4PD1uJiYodC5pbml0SW5kZXg9bisxLCEwKX1mdW5jdGlvbiBIbih0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIHpuKHQsZSl7cmV0dXJuIHQubm9kZXNbZV19ZnVuY3Rpb24gRm4odCxlKXtyZXR1cm4gdC5ub2Rlc1tlXX1mdW5jdGlvbiBCbih0LGUpe3JldHVybiB0Lm5vZGVzW2VdfWZ1bmN0aW9uIFpuKHQsZSl7cmV0dXJuIHQubm9kZXNbZV19dmFyIEduPXtzZXRDdXJyZW50Tm9kZTp2b2lkIDAsY3JlYXRlUm9vdFZpZXc6dm9pZCAwLGNyZWF0ZUVtYmVkZGVkVmlldzp2b2lkIDAsY3JlYXRlQ29tcG9uZW50Vmlldzp2b2lkIDAsY3JlYXRlTmdNb2R1bGVSZWY6dm9pZCAwLG92ZXJyaWRlUHJvdmlkZXI6dm9pZCAwLG92ZXJyaWRlQ29tcG9uZW50Vmlldzp2b2lkIDAsY2xlYXJPdmVycmlkZXM6dm9pZCAwLGNoZWNrQW5kVXBkYXRlVmlldzp2b2lkIDAsY2hlY2tOb0NoYW5nZXNWaWV3OnZvaWQgMCxkZXN0cm95Vmlldzp2b2lkIDAscmVzb2x2ZURlcDp2b2lkIDAsY3JlYXRlRGVidWdDb250ZXh0OnZvaWQgMCxoYW5kbGVFdmVudDp2b2lkIDAsdXBkYXRlRGlyZWN0aXZlczp2b2lkIDAsdXBkYXRlUmVuZGVyZXI6dm9pZCAwLGRpcnR5UGFyZW50UXVlcmllczp2b2lkIDB9LHFuPWZ1bmN0aW9uKCl7fSxXbj1uZXcgTWFwO2Z1bmN0aW9uIFFuKHQpe3ZhciBlPVduLmdldCh0KTtyZXR1cm4gZXx8KGU9eXQodCkrIl8iK1duLnNpemUsV24uc2V0KHQsZSkpLGV9dmFyIEtuPSIkJHVuZGVmaW5lZCIsWW49IiQkZW1wdHkiO2Z1bmN0aW9uIEpuKHQpe3JldHVybntpZDpLbixzdHlsZXM6dC5zdHlsZXMsZW5jYXBzdWxhdGlvbjp0LmVuY2Fwc3VsYXRpb24sZGF0YTp0LmRhdGF9fXZhciAkbj0wO2Z1bmN0aW9uIFhuKHQsZSxuLHIpe3JldHVybiEoISgyJnQuc3RhdGUpJiZaZSh0Lm9sZFZhbHVlc1tlLmJpbmRpbmdJbmRleCtuXSxyKSl9ZnVuY3Rpb24gdHIodCxlLG4scil7cmV0dXJuISFYbih0LGUsbixyKSYmKHQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dPXIsITApfWZ1bmN0aW9uIGVyKHQsZSxuLHIpe3ZhciBvPXQub2xkVmFsdWVzW2UuYmluZGluZ0luZGV4K25dO2lmKDEmdC5zdGF0ZXx8IUdlKG8scikpe3ZhciBpPWUuYmluZGluZ3Nbbl0ubmFtZTt0aHJvdyBObihHbi5jcmVhdGVEZWJ1Z0NvbnRleHQodCxlLm5vZGVJbmRleCksaSsiOiAiK28saSsiOiAiK3IsMCE9KDEmdC5zdGF0ZSkpfX1mdW5jdGlvbiBucih0KXtmb3IodmFyIGU9dDtlOykyJmUuZGVmLmZsYWdzJiYoZS5zdGF0ZXw9OCksZT1lLnZpZXdDb250YWluZXJQYXJlbnR8fGUucGFyZW50fWZ1bmN0aW9uIHJyKHQsZSl7Zm9yKHZhciBuPXQ7biYmbiE9PWU7KW4uc3RhdGV8PTY0LG49bi52aWV3Q29udGFpbmVyUGFyZW50fHxuLnBhcmVudH1mdW5jdGlvbiBvcih0LGUsbixyKXt0cnl7cmV0dXJuIG5yKDMzNTU0NDMyJnQuZGVmLm5vZGVzW2VdLmZsYWdzP3puKHQsZSkuY29tcG9uZW50Vmlldzp0KSxHbi5oYW5kbGVFdmVudCh0LGUsbixyKX1jYXRjaChvKXt0LnJvb3QuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKG8pfX1mdW5jdGlvbiBpcih0KXtyZXR1cm4gdC5wYXJlbnQ/em4odC5wYXJlbnQsdC5wYXJlbnROb2RlRGVmLm5vZGVJbmRleCk6bnVsbH1mdW5jdGlvbiBhcih0KXtyZXR1cm4gdC5wYXJlbnQ/dC5wYXJlbnROb2RlRGVmLnBhcmVudDpudWxsfWZ1bmN0aW9uIHVyKHQsZSl7c3dpdGNoKDIwMTM0NzA2NyZlLmZsYWdzKXtjYXNlIDE6cmV0dXJuIHpuKHQsZS5ub2RlSW5kZXgpLnJlbmRlckVsZW1lbnQ7Y2FzZSAyOnJldHVybiBIbih0LGUubm9kZUluZGV4KS5yZW5kZXJUZXh0fX1mdW5jdGlvbiBscih0KXtyZXR1cm4hIXQucGFyZW50JiYhISgzMjc2OCZ0LnBhcmVudE5vZGVEZWYuZmxhZ3MpfWZ1bmN0aW9uIHNyKHQpe3JldHVybiEoIXQucGFyZW50fHwzMjc2OCZ0LnBhcmVudE5vZGVEZWYuZmxhZ3MpfWZ1bmN0aW9uIGNyKHQpe3ZhciBlPXt9LG49MCxvPXt9O3JldHVybiB0JiZ0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPU9iamVjdChyLl9fcmVhZCkodCwyKSxhPWlbMF0sdT1pWzFdOyJudW1iZXIiPT10eXBlb2YgYT8oZVthXT11LG58PWZ1bmN0aW9uKHQpe3JldHVybiAxPDx0JTMyfShhKSk6b1thXT11fSkpLHttYXRjaGVkUXVlcmllczplLHJlZmVyZW5jZXM6byxtYXRjaGVkUXVlcnlJZHM6bn19ZnVuY3Rpb24gZnIodCxlKXtyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBuLG8saTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT8oaT0obj1PYmplY3Qoci5fX3JlYWQpKHQsMikpWzBdLG89blsxXSk6KGk9MCxvPXQpLG8mJigiZnVuY3Rpb24iPT10eXBlb2Ygb3x8Im9iamVjdCI9PXR5cGVvZiBvKSYmZSYmT2JqZWN0Lg=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?3?0",
"type": "binary",
"value": "base64:ZGVmaW5lUHJvcGVydHkobyxSdCx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITB9KSx7ZmxhZ3M6aSx0b2tlbjpvLHRva2VuS2V5OlFuKG8pfX0pKX1mdW5jdGlvbiBocih0LGUsbil7dmFyIHI9bi5yZW5kZXJQYXJlbnQ7cmV0dXJuIHI/MD09KDEmci5mbGFncyl8fDA9PSgzMzU1NDQzMiZyLmZsYWdzKXx8ci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZSYmci5lbGVtZW50LmNvbXBvbmVudFJlbmRlcmVyVHlwZS5lbmNhcHN1bGF0aW9uPT09WnQuTmF0aXZlP3puKHQsbi5yZW5kZXJQYXJlbnQubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50OnZvaWQgMDplfXZhciBwcj1uZXcgV2Vha01hcDtmdW5jdGlvbiBkcih0KXt2YXIgZT1wci5nZXQodCk7cmV0dXJuIGV8fCgoZT10KChmdW5jdGlvbigpe3JldHVybiBxbn0pKSkuZmFjdG9yeT10LHByLnNldCh0LGUpKSxlfWZ1bmN0aW9uIGdyKHQsZSxuLHIsbyl7Mz09PWUmJihuPXQucmVuZGVyZXIucGFyZW50Tm9kZSh1cih0LHQuZGVmLmxhc3RSZW5kZXJSb290Tm9kZSkpKSx2cih0LGUsMCx0LmRlZi5ub2Rlcy5sZW5ndGgtMSxuLHIsbyl9ZnVuY3Rpb24gdnIodCxlLG4scixvLGksYSl7Zm9yKHZhciB1PW47dTw9cjt1Kyspe3ZhciBsPXQuZGVmLm5vZGVzW3VdOzExJmwuZmxhZ3MmJm1yKHQsbCxlLG8saSxhKSx1Kz1sLmNoaWxkQ291bnR9fWZ1bmN0aW9uIHlyKHQsZSxuLHIsbyxpKXtmb3IodmFyIGE9dDthJiYhbHIoYSk7KWE9YS5wYXJlbnQ7Zm9yKHZhciB1PWEucGFyZW50LGw9YXIoYSkscz1sLm5vZGVJbmRleCtsLmNoaWxkQ291bnQsYz1sLm5vZGVJbmRleCsxO2M8PXM7YysrKXt2YXIgZj11LmRlZi5ub2Rlc1tjXTtmLm5nQ29udGVudEluZGV4PT09ZSYmbXIodSxmLG4scixvLGkpLGMrPWYuY2hpbGRDb3VudH1pZighdS5wYXJlbnQpe3ZhciBoPXQucm9vdC5wcm9qZWN0YWJsZU5vZGVzW2VdO2lmKGgpZm9yKGM9MDtjPGgubGVuZ3RoO2MrKylfcih0LGhbY10sbixyLG8saSl9fWZ1bmN0aW9uIG1yKHQsZSxuLHIsbyxpKXtpZig4JmUuZmxhZ3MpeXIodCxlLm5nQ29udGVudC5pbmRleCxuLHIsbyxpKTtlbHNle3ZhciBhPXVyKHQsZSk7aWYoMz09PW4mJjMzNTU0NDMyJmUuZmxhZ3MmJjQ4JmUuYmluZGluZ0ZsYWdzPygxNiZlLmJpbmRpbmdGbGFncyYmX3IodCxhLG4scixvLGkpLDMyJmUuYmluZGluZ0ZsYWdzJiZfcih6bih0LGUubm9kZUluZGV4KS5jb21wb25lbnRWaWV3LGEsbixyLG8saSkpOl9yKHQsYSxuLHIsbyxpKSwxNjc3NzIxNiZlLmZsYWdzKWZvcih2YXIgdT16bih0LGUubm9kZUluZGV4KS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzLGw9MDtsPHUubGVuZ3RoO2wrKylncih1W2xdLG4scixvLGkpOzEmZS5mbGFncyYmIWUuZWxlbWVudC5uYW1lJiZ2cih0LG4sZS5ub2RlSW5kZXgrMSxlLm5vZGVJbmRleCtlLmNoaWxkQ291bnQscixvLGkpfX1mdW5jdGlvbiBfcih0LGUsbixyLG8saSl7dmFyIGE9dC5yZW5kZXJlcjtzd2l0Y2gobil7Y2FzZSAxOmEuYXBwZW5kQ2hpbGQocixlKTticmVhaztjYXNlIDI6YS5pbnNlcnRCZWZvcmUocixlLG8pO2JyZWFrO2Nhc2UgMzphLnJlbW92ZUNoaWxkKHIsZSk7YnJlYWs7Y2FzZSAwOmkucHVzaChlKX19dmFyIHdyPS9eOihbXjpdKyk6KC4rKSQvO2Z1bmN0aW9uIGJyKHQpe2lmKCI6Ij09PXRbMF0pe3ZhciBlPXQubWF0Y2god3IpO3JldHVybltlWzFdLGVbMl1dfXJldHVyblsiIix0XX1mdW5jdGlvbiB4cih0KXtmb3IodmFyIGU9MCxuPTA7bjx0Lmxlbmd0aDtuKyspZXw9dFtuXS5mbGFncztyZXR1cm4gZX12YXIgQ3I9bmV3IE9iamVjdCxTcj1RbihNZSksRXI9UW4oUHQpLE9yPVFuKEh0KTtmdW5jdGlvbiBUcih0LGUsbixyKXtyZXR1cm4gbj13dChuKSx7aW5kZXg6LTEsZGVwczpmcihyLHl0KGUpKSxmbGFnczp0LHRva2VuOmUsdmFsdWU6bn19ZnVuY3Rpb24gUHIodCxlLG4pe3ZvaWQgMD09PW4mJihuPU1lLlRIUk9XX0lGX05PVF9GT1VORCk7dmFyIHIsbyxpPU50KHQpO3RyeXtpZig4JmUuZmxhZ3MpcmV0dXJuIGUudG9rZW47aWYoMiZlLmZsYWdzJiYobj1udWxsKSwxJmUuZmxhZ3MpcmV0dXJuIHQuX3BhcmVudC5nZXQoZS50b2tlbixuKTt2YXIgYT1lLnRva2VuS2V5O3N3aXRjaChhKXtjYXNlIFNyOmNhc2UgRXI6Y2FzZSBPcjpyZXR1cm4gdH12YXIgdSxsPXQuX2RlZi5wcm92aWRlcnNCeUtleVthXTtpZihsKXt2YXIgcz10Ll9wcm92aWRlcnNbbC5pbmRleF07cmV0dXJuIHZvaWQgMD09PXMmJihzPXQuX3Byb3ZpZGVyc1tsLmluZGV4XT1rcih0LGwpKSxzPT09Q3I/dm9pZCAwOnN9aWYoKHU9Z3QoZS50b2tlbikpJiYocj10LG51bGwhPShvPXUpLnByb3ZpZGVkSW4mJihmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9kZWYubW9kdWxlcy5pbmRleE9mKGUpPi0xfShyLG8ucHJvdmlkZWRJbil8fCJyb290Ij09PW8ucHJvdmlkZWRJbiYmci5fZGVmLmlzUm9vdCkpKXt2YXIgYz10Ll9wcm92aWRlcnMubGVuZ3RoO3JldHVybiB0Ll9kZWYucHJvdmlkZXJzW2NdPXQuX2RlZi5wcm92aWRlcnNCeUtleVtlLnRva2VuS2V5XT17ZmxhZ3M6NTEyMCx2YWx1ZTp1LmZhY3RvcnksZGVwczpbXSxpbmRleDpjLHRva2VuOmUudG9rZW59LHQuX3Byb3ZpZGVyc1tjXT1Dcix0Ll9wcm92aWRlcnNbY109a3IodCx0Ll9kZWYucHJvdmlkZXJzQnlLZXlbZS50b2tlbktleV0pfXJldHVybiA0JmUuZmxhZ3M/bjp0Ll9wYXJlbnQuZ2V0KGUudG9rZW4sbil9ZmluYWxseXtOdChpKX19ZnVuY3Rpb24ga3IodCxlKXt2YXIgbjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOm49ZnVuY3Rpb24odCxlLG4pe3ZhciBvPW4ubGVuZ3RoO3N3aXRjaChvKXtjYXNlIDA6cmV0dXJuIG5ldyBlO2Nhc2UgMTpyZXR1cm4gbmV3IGUoUHIodCxuWzBdKSk7Y2FzZSAyOnJldHVybiBuZXcgZShQcih0LG5bMF0pLFByKHQsblsxXSkpO2Nhc2UgMzpyZXR1cm4gbmV3IGUoUHIodCxuWzBdKSxQcih0LG5bMV0pLFByKHQsblsyXSkpO2RlZmF1bHQ6Zm9yKHZhciBpPW5ldyBBcnJheShvKSxhPTA7YTxvO2ErKylpW2FdPVByKHQsblthXSk7cmV0dXJuIG5ldyhlLmJpbmQuYXBwbHkoZSxPYmplY3Qoci5fX3NwcmVhZCkoW3ZvaWQgMF0saSkpKX19KHQsZS52YWx1ZSxlLmRlcHMpO2JyZWFrO2Nhc2UgMTAyNDpuPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1uLmxlbmd0aDtzd2l0Y2gobyl7Y2FzZSAwOnJldHVybiBlKCk7Y2FzZSAxOnJldHVybiBlKFByKHQsblswXSkpO2Nhc2UgMjpyZXR1cm4gZShQcih0LG5bMF0pLFByKHQsblsxXSkpO2Nhc2UgMzpyZXR1cm4gZShQcih0LG5bMF0pLFByKHQsblsxXSksUHIodCxuWzJdKSk7ZGVmYXVsdDpmb3IodmFyIGk9QXJyYXkobyksYT0wO2E8bzthKyspaVthXT1Qcih0LG5bYV0pO3JldHVybiBlLmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkoaSkpfX0odCxlLnZhbHVlLGUuZGVwcyk7YnJlYWs7Y2FzZSAyMDQ4Om49UHIodCxlLmRlcHNbMF0pO2JyZWFrO2Nhc2UgMjU2Om49ZS52YWx1ZX1yZXR1cm4gbj09PUNyfHxudWxsPT09bnx8Im9iamVjdCIhPXR5cGVvZiBufHwxMzEwNzImZS5mbGFnc3x8ImZ1bmN0aW9uIiE9dHlwZW9mIG4ubmdPbkRlc3Ryb3l8fChlLmZsYWdzfD0xMzEwNzIpLHZvaWQgMD09PW4/Q3I6bn1mdW5jdGlvbiBBcih0LGUpe3ZhciBuPXQudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cztpZigobnVsbD09ZXx8ZT49bi5sZW5ndGgpJiYoZT1uLmxlbmd0aC0xKSxlPDApcmV0dXJuIG51bGw7dmFyIHI9bltlXTtyZXR1cm4gci52aWV3Q29udGFpbmVyUGFyZW50PW51bGwsQnQobixlKSxHbi5kaXJ0eVBhcmVudFF1ZXJpZXMociksUnIocikscn1mdW5jdGlvbiBJcih0LGUsbil7dmFyIHI9ZT91cihlLGUuZGVmLmxhc3RSZW5kZXJSb290Tm9kZSk6dC5yZW5kZXJFbGVtZW50LG89bi5yZW5kZXJlci5wYXJlbnROb2RlKHIpLGk9bi5yZW5kZXJlci5uZXh0U2libGluZyhyKTtncihuLDIsbyxpLHZvaWQgMCl9ZnVuY3Rpb24gUnIodCl7Z3IodCwzLG51bGwsbnVsbCx2b2lkIDApfXZhciBNcj1uZXcgT2JqZWN0O2Z1bmN0aW9uIGpyKHQsZSxuLHIsbyxpKXtyZXR1cm4gbmV3IE5yKHQsZSxuLHIsbyxpKX12YXIgTnI9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvLGksYSl7dmFyIHU9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiB1LnNlbGVjdG9yPWUsdS5jb21wb25lbnRUeXBlPW4sdS5faW5wdXRzPW8sdS5fb3V0cHV0cz1pLHUubmdDb250ZW50U2VsZWN0b3JzPWEsdS52aWV3RGVmRmFjdG9yeT1yLHV9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImlucHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdLGU9dGhpcy5faW5wdXRzO2Zvcih2YXIgbiBpbiBlKXQucHVzaCh7cHJvcE5hbWU6bix0ZW1wbGF0ZU5hbWU6ZVtuXX0pO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwib3V0cHV0cyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2Zvcih2YXIgZSBpbiB0aGlzLl9vdXRwdXRzKXQucHVzaCh7cHJvcE5hbWU6ZSx0ZW1wbGF0ZU5hbWU6dGhpcy5fb3V0cHV0c1tlXX0pO3JldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0LGUsbixyKXtpZighcil0aHJvdyBuZXcgRXJyb3IoIm5nTW9kdWxlIHNob3VsZCBiZSBwcm92aWRlZCIpO3ZhciBvPWRyKHRoaXMudmlld0RlZkZhY3RvcnkpLGk9by5ub2Rlc1swXS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLm5vZGVJbmRleCxhPUduLmNyZWF0ZVJvb3RWaWV3KHQsZXx8W10sbixvLHIsTXIpLHU9Rm4oYSxpKS5pbnN0YW5jZTtyZXR1cm4gbiYmYS5yZW5kZXJlci5zZXRBdHRyaWJ1dGUoem4oYSwwKS5yZW5kZXJFbGVtZW50LCJuZy12ZXJzaW9uIixnbi5mdWxsKSxuZXcgRHIoYSxuZXcgSHIoYSksdSl9LGV9KFhlKSxEcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG8uX3ZpZXc9ZSxvLl92aWV3UmVmPW4sby5fY29tcG9uZW50PXIsby5fZWxEZWY9by5fdmlldy5kZWYubm9kZXNbMF0sby5ob3N0Vmlldz1uLG8uY2hhbmdlRGV0ZWN0b3JSZWY9bixvLmluc3RhbmNlPXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibG9jYXRpb24iLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxuKHpuKHRoaXMuX3ZpZXcsdGhpcy5fZWxEZWYubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBacih0aGlzLl92aWV3LHRoaXMuX2VsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNvbXBvbmVudFR5cGUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29tcG9uZW50LmNvbnN0cnVjdG9yfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl92aWV3UmVmLmRlc3Ryb3koKX0sZS5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX3ZpZXdSZWYub25EZXN0cm95KHQpfSxlfSgkZSk7ZnVuY3Rpb24gVXIodCxlLG4pe3JldHVybiBuZXcgTHIodCxlLG4pfXZhciBMcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMuX3ZpZXc9dCx0aGlzLl9lbERlZj1lLHRoaXMuX2RhdGE9bix0aGlzLl9lbWJlZGRlZFZpZXdzPVtdfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImVsZW1lbnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGxuKHRoaXMuX2RhdGEucmVuZGVyRWxlbWVudCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgWnIodGhpcy5fdmlldyx0aGlzLl9lbERlZil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJlbnRJbmplY3RvciIse2dldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl92aWV3LGU9dGhpcy5fZWxEZWYucGFyZW50OyFlJiZ0OyllPWFyKHQpLHQ9dC5wYXJlbnQ7cmV0dXJuIHQ/bmV3IFpyKHQsZSk6bmV3IFpyKHRoaXMuX3ZpZXcsbnVsbCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGgtMTt0Pj0wO3QtLSl7dmFyIGU9QXIodGhpcy5fZGF0YSx0KTtHbi5kZXN0cm95VmlldyhlKX19LHQucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9lbWJlZGRlZFZpZXdzW3RdO2lmKGUpe3ZhciBuPW5ldyBIcihlKTtyZXR1cm4gbi5hdHRhY2hUb1ZpZXdDb250YWluZXJSZWYodGhpcyksbn1yZXR1cm4gbnVsbH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJsZW5ndGgiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5sZW5ndGh9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuY3JlYXRlRW1iZWRkZWRWaWV3PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LmNyZWF0ZUVtYmVkZGVkVmlldyhlfHx7fSk7cmV0dXJuIHRoaXMuaW5zZXJ0KHIsbikscn0sdC5wcm90b3R5cGUuY3JlYXRlQ29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9bnx8dGhpcy5wYXJlbnRJbmplY3RvcjtvfHx0IGluc3RhbmNlb2YgYW58fChvPWkuZ2V0KEh0KSk7dmFyIGE9dC5jcmVhdGUoaSxyLHZvaWQgMCxvKTtyZXR1cm4gdGhpcy5pbnNlcnQoYS5ob3N0VmlldyxlKSxhfSx0LnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCxlKXtpZih0LmRlc3Ryb3llZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBpbnNlcnQgYSBkZXN0cm95ZWQgVmlldyBpbiBhIFZpZXdDb250YWluZXIhIik7dmFyIG4scixvLGksYT10O3JldHVybiBpPShuPXRoaXMuX2RhdGEpLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsbnVsbD09KHI9ZSkmJihyPWkubGVuZ3RoKSwobz1hLl92aWV3KS52aWV3Q29udGFpbmVyUGFyZW50PXRoaXMuX3ZpZXcsRnQoaSxyLG8pLGZ1bmN0aW9uKHQsZSl7dmFyIG49aXIoZSk7aWYobiYmbiE9PXQmJiEoMTYmZS5zdGF0ZSkpe2Uuc3RhdGV8PTE2O3ZhciByPW4udGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzO3J8fChyPW4udGVtcGxhdGUuX3Byb2plY3RlZFZpZXdzPVtdKSxyLnB1c2goZSksZnVuY3Rpb24odCxlKXtpZighKDQmZS5mbGFncykpe3Qubm9kZUZsYWdzfD00LGUuZmxhZ3N8PTQ7Zm9yKHZhciBuPWUucGFyZW50O247KW4uY2hpbGRGbGFnc3w9NCxuPW4ucGFyZW50fX0oZS5wYXJlbnQuZGVmLGUucGFyZW50Tm9kZURlZil9fShuLG8pLEduLmRpcnR5UGFyZW50UXVlcmllcyhvKSxJcihuLHI+MD9pW3ItMV06bnVsbCxvKSxhLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZih0aGlzKSx0fSx0LnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQsZSl7aWYodC5kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbW92ZSBhIGRlc3Ryb3llZCBWaWV3IGluIGEgVmlld0NvbnRhaW5lciEiKTt2YXIgbixyLG8saSxhLHU9dGhpcy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpO3JldHVybiBvPWUsYT0oaT0obj10aGlzLl9kYXRhKS52aWV3Q29udGFpbmVyLl9lbWJlZGRlZFZpZXdzKVtyPXVdLEJ0KGksciksbnVsbD09byYmKG89aS5sZW5ndGgpLEZ0KGksbyxhKSxHbi5kaXJ0eVBhcmVudFF1ZXJpZXMoYSksUnIoYSksSXIobixvPjA/aVtvLTFdOm51bGwsYSksdH0sdC5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZW1iZWRkZWRWaWV3cy5pbmRleE9mKHQuX3ZpZXcpfSx0LnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9QXIodGhpcy5fZGF0YSx0KTtlJiZHbi5kZXN0cm95VmlldyhlKX0sdC5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKHQpe3ZhciBlPUFyKHRoaXMuX2RhdGEsdCk7cmV0dXJuIGU/bmV3IEhyKGUpOm51bGx9LHR9KCk7ZnVuY3Rpb24gVnIodCl7cmV0dXJuIG5ldyBIcih0KX12YXIgSHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX3ZpZXc9dCx0aGlzLl92aWV3Q29udGFpbmVyUmVmPW51bGwsdGhpcy5fYXBwUmVmPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdE5vZGVzIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGdyKHRoaXMuX3ZpZXcsMCx2b2lkIDAsdm9pZCAwLHQ9W10pLHQ7dmFyIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXcuY29udGV4dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImRlc3Ryb3llZCIse2dldDpmdW5jdGlvbigpe3JldHVybiAwIT0oMTI4JnRoaXMuX3ZpZXcuc3RhdGUpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLm1hcmtGb3JDaGVjaz1mdW5jdGlvbigpe25yKHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5kZXRhY2g9ZnVuY3Rpb24oKXt0aGlzLl92aWV3LnN0YXRlJj0tNX0sdC5wcm90b3R5cGUuZGV0ZWN0Q2hhbmdlcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ZpZXcucm9vdC5yZW5kZXJlckZhY3Rvcnk7dC5iZWdpbiYmdC5iZWdpbigpO3RyeXtHbi5jaGVja0FuZFVwZGF0ZVZpZXcodGhpcy5fdmlldyl9ZmluYWxseXt0LmVuZCYmdC5lbmQoKX19LHQucHJvdG90eXBlLmNoZWNrTm9DaGFuZ2VzPWZ1bmN0aW9uKCl7R24uY2hlY2tOb0NoYW5nZXNWaWV3KHRoaXMuX3ZpZXcpfSx0LnByb3RvdHlwZS5yZWF0dGFjaD1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuc3RhdGV8PTR9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl92aWV3LmRpc3Bvc2FibGVzfHwodGhpcy5fdmlldy5kaXNwb3NhYmxlcz1bXSksdGhpcy5fdmlldy5kaXNwb3NhYmxlcy5wdXNoKHQpfSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fYXBwUmVmP3RoaXMuX2FwcFJlZi5kZXRhY2hWaWV3KHRoaXMpOnRoaXMuX3ZpZXdDb250YWluZXJSZWYmJnRoaXMuX3ZpZXdDb250YWluZXJSZWYuZGV0YWNoKHRoaXMuX3ZpZXdDb250YWluZXJSZWYuaW5kZXhPZih0aGlzKSksR24uZGVzdHJveVZpZXcodGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmRldGFjaEZyb21BcHBSZWY9ZnVuY3Rpb24oKXt0aGlzLl9hcHBSZWY9bnVsbCxScih0aGlzLl92aWV3KSxHbi5kaXJ0eVBhcmVudFF1ZXJpZXModGhpcy5fdmlldyl9LHQucHJvdG90eXBlLmF0dGFjaFRvQXBwUmVmPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX3ZpZXdDb250YWluZXJSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBhIFZpZXdDb250YWluZXIhIik7dGhpcy5fYXBwUmVmPXR9LHQucHJvdG90eXBlLmF0dGFjaFRvVmlld0NvbnRhaW5lclJlZj1mdW5jdGlvbih0KXtpZih0aGlzLl9hcHBSZWYpdGhyb3cgbmV3IEVycm9yKCJUaGlzIHZpZXcgaXMgYWxyZWFkeSBhdHRhY2hlZCBkaXJlY3RseSB0byB0aGUgQXBwbGljYXRpb25SZWYhIik7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10fSx0fSgpO2Z1bmN0aW9uIHpyKHQsZSl7cmV0dXJuIG5ldyBGcih0LGUpfXZhciBGcj1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiByLl9wYXJlbnRWaWV3PWUsci5fZGVmPW4scn1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZUVtYmVkZGVkVmlldz1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEhyKEduLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl9wYXJlbnRWaWV3LHRoaXMuX2RlZix0aGlzLl9kZWYuZWxlbWVudC50ZW1wbGF0ZSx0KSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiZWxlbWVudFJlZiIse2dldDpmdW5jdGlvbigpe3JldHVybiBuZXcgbG4oem4odGhpcy5fcGFyZW50Vmlldyx0aGlzLl9kZWYubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfShJbik7ZnVuY3Rpb24gQnIodCxlKXtyZXR1cm4gbmV3IFpyKHQsZSl9dmFyIFpyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMudmlldz10LHRoaXMuZWxEZWY9ZX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPU1lLlRIUk9XX0lGX05PVF9GT1VORCksR24ucmVzb2x2ZURlcCh0aGlzLnZpZXcsdGhpcy5lbERlZiwhIXRoaXMuZWxEZWYmJjAhPSgzMzU1NDQzMiZ0aGlzLmVsRGVmLmZsYWdzKSx7ZmxhZ3M6MCx0b2tlbjp0LHRva2VuS2V5OlFuKHQpfSxlKX0sdH0oKTtmdW5jdGlvbiBHcih0LGUpe3ZhciBuPXQuZGVmLm5vZGVzW2VdO2lmKDEmbi5mbGFncyl7dmFyIHI9em4odCxuLm5vZGVJbmRleCk7cmV0dXJuIG4uZWxlbWVudC50ZW1wbGF0ZT9yLnRlbXBsYXRlOnIucmVuZGVyRWxlbWVudH1pZigyJm4uZmxhZ3MpcmV0dXJuIEhuKHQsbi5ub2RlSW5kZXgpLnJlbmRlclRleHQ7aWYoMjAyNDAmbi5mbGFncylyZXR1cm4gRm4odCxuLm5vZGVJbmRleCkuaW5zdGFuY2U7dGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIHN0YXRlOiByZWFkIG5vZGVWYWx1ZSBmb3Igbm9kZSBpbmRleCAiK2UpfWZ1bmN0aW9uIHFyKHQpe3JldHVybiBuZXcgV3IodC5yZW5kZXJlcil9dmFyIFdyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLnNlbGVjdFJvb3RFbGVtZW50KHQpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49T2JqZWN0KHIuX19yZWFkKShicihlKSwyKSxvPXRoaXMuZGVsZWdhdGUuY3JlYXRlRWxlbWVudChuWzFdLG5bMF0pO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsbyksb30sdC5wcm90b3R5cGUuY3JlYXRlVmlld1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHQucHJvdG90eXBlLmNyZWF0ZVRlbXBsYXRlQW5jaG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCgiIik7cmV0dXJuIHQmJnRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVUZXh0KGUpO3JldHVybiB0JiZ0aGlzLmRlbGVnYXRlLmFwcGVuZENoaWxkKHQsbiksbn0sdC5wcm90b3R5cGUucHJvamVjdE5vZGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5hcHBlbmRDaGlsZCh0LGVbbl0pfSx0LnByb3RvdHlwZS5hdHRhY2hWaWV3QWZ0ZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKHQpLHI9dGhpcy5kZWxlZ2F0ZS5uZXh0U2libGluZyh0KSxvPTA7bzxlLmxlbmd0aDtvKyspdGhpcy5kZWxlZ2F0ZS5pbnNlcnRCZWZvcmUobixlW29dLHIpfSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdLHI9dGhpcy5kZWxlZ2F0ZS5wYXJlbnROb2RlKG4pO3RoaXMuZGVsZWdhdGUucmVtb3ZlQ2hpbGQocixuKX19LHQucHJvdG90eXBlLmRlc3Ryb3lWaWV3PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZShlW25dKX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5kZWxlZ2F0ZS5saXN0ZW4odCxlLG4pfSx0LnByb3RvdHlwZS5saXN0ZW5HbG9iYWw9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLnNldEVsZW1lbnRQcm9wZXJ0eT1mdW5jdGlvbih0LGUsbil7dGhpcy5kZWxlZ2F0ZS5zZXRQcm9wZXJ0eSh0LGUsbil9LHQucHJvdG90eXBlLnNldEVsZW1lbnRBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe3ZhciBvPU9iamVjdChyLl9fcmVhZCkoYnIoZSksMiksaT1vWzBdLGE9b1sxXTtudWxsIT1uP3RoaXMuZGVsZWdhdGUuc2V0QXR0cmlidXRlKHQsYSxuLGkpOnRoaXMuZGVsZWdhdGUucmVtb3ZlQXR0cmlidXRlKHQsYSxpKX0sdC5wcm90b3R5cGUuc2V0QmluZGluZ0RlYnVnSW5mbz1mdW5jdGlvbih0LGUsbil7fSx0LnByb3RvdHlwZS5zZXRFbGVtZW50Q2xhc3M9ZnVuY3Rpb24odCxlLG4pe24/dGhpcy5kZWxlZ2F0ZS5hZGRDbGFzcyh0LGUpOnRoaXMuZGVsZWdhdGUucmVtb3ZlQ2xhc3ModCxlKX0sdC5wcm90b3R5cGUuc2V0RWxlbWVudFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXtudWxsIT1uP3RoaXMuZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4pOnRoaXMuZGVsZWdhdGUucmVtb3ZlU3R5bGUodCxlKX0sdC5wcm90b3R5cGUuaW52b2tlRWxlbWVudE1ldGhvZD1mdW5jdGlvbih0LGUsbil7dFtlXS5hcHBseSh0LG4pfSx0LnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKHQsZSl7dGhpcy5kZWxlZ2F0ZS5zZXRWYWx1ZSh0LGUpfSx0LnByb3RvdHlwZS5hbmltYXRlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJSZW5kZXJlci5hbmltYXRlIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQhIil9LHR9KCk7ZnVuY3Rpb24gUXIodCxlLG4scil7cmV0dXJuIG5ldyBLcih0LGUsbixyKX12YXIgS3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMuX21vZHVsZVR5cGU9dCx0aGlzLl9wYXJlbnQ9ZSx0aGlzLl9ib290c3RyYXBDb21wb25lbnRzPW4sdGhpcy5fZGVmPXIsdGhpcy5fZGVzdHJveUxpc3RlbmVycz1bXSx0aGlzLl9kZXN0cm95ZWQ9ITEsdGhpcy5pbmplY3Rvcj10aGlzLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Ll9kZWYsbj10Ll9wcm92aWRlcnM9bmV3IEFycmF5KGUucHJvdmlkZXJzLmxlbmd0aCkscj0wO3I8ZS5wcm92aWRlcnMubGVuZ3RoO3IrKyl7dmFyIG89ZS5wcm92aWRlcnNbcl07NDA5NiZvLmZsYWdzfHx2b2lkIDA9PT1uW3JdJiYobltyXT1rcih0LG8pKX19KHRoaXMpfXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlLG4pe3ZvaWQgMD09PWUmJihlPU1lLlRIUk9XX0lGX05PVF9GT1VORCksdm9pZCAwPT09biYmKG49aHQuRGVmYXVsdCk7dmFyIHI9MDtyZXR1cm4gbiZodC5Ta2lwU2VsZj9yfD0xOm4maHQuU2VsZiYmKHJ8PTQpLFByKHRoaXMse3Rva2VuOnQsdG9rZW5LZXk6UW4odCksZmxhZ3M6cn0sZSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiaW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQodGhpcy5fbW9kdWxlVHlwZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXQocm4pfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLl9kZXN0cm95ZWQpdGhyb3cgbmV3IEVycm9yKCJUaGUgbmcgbW9kdWxlICIreXQodGhpcy5pbnN0YW5jZS5jb25zdHJ1Y3RvcikrIiBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZC4iKTt0aGlzLl9kZXN0cm95ZWQ9ITAsZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5fZGVmLHI9bmV3IFNldCxvPTA7bzxuLnByb3ZpZGVycy5sZW5ndGg7bysrKWlmKDEzMTA3MiZuLnByb3ZpZGVyc1tvXS5mbGFncyl7dmFyIGk9dC5fcHJvdmlkZXJzW29dO2lmKGkmJmkhPT1Dcil7dmFyIGE9aS5uZ09uRGVzdHJveTsiZnVuY3Rpb24iIT10eXBlb2YgYXx8ci5oYXMoaSl8fChhLmFwcGx5KGkpLHIuYWRkKGkpKX19fSh0aGlzKSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0KCl9KSl9LHQucHJvdG90eXBlLm9uRGVzdHJveT1mdW5jdGlvbih0KXt0aGlzLl9kZXN0cm95TGlzdGVuZXJzLnB1c2godCl9LHR9KCksWXI9UW4oY24pLEpyPVFuKHBuKSwkcj1RbihsbiksWHI9UW4oTW4pLHRvPVFuKEluKSxlbz1RbihrZSksbm89UW4oTWUpLHJvPVFuKFB0KTtmdW5jdGlvbiBvbyh0LGUsbixvLGksYSx1LGwpe3ZhciBzPVtdO2lmKHUpZm9yKHZhciBjIGluIHUpe3ZhciBmPU9iamVjdChyLl9fcmVhZCkodVtjXSwyKTtzW2ZbMF1dPXtmbGFnczo4LG5hbWU6Yyxub25NaW5pZmllZE5hbWU6ZlsxXSxuczpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1ZmZpeDpudWxsfX12YXIgaD1bXTtpZihsKWZvcih2YXIgcCBpbiBsKWgucHVzaCh7dHlwZToxLHByb3BOYW1lOnAsdGFyZ2V0Om51bGwsZXZlbnROYW1lOmxbcF19KTtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGwpe3ZhciBzPWNyKG4pLGM9cy5tYXRjaGVkUXVlcmllcyxmPXMucmVmZXJlbmNlcyxoPXMubWF0Y2hlZFF1ZXJ5SWRzO2x8fChsPVtdKSx1fHwodT1bXSksaT13dChpKTt2YXIgcD1mcihhLHl0KG8pKTtyZXR1cm57bm9kZUluZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxjaGVja0luZGV4OnQsZmxhZ3M6ZSxjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczpjLG1hdGNoZWRRdWVyeUlkczpoLHJlZmVyZW5jZXM6ZixuZ0NvbnRlbnRJbmRleDotMSxjaGlsZENvdW50OnIsYmluZGluZ3M6dSxiaW5kaW5nRmxhZ3M6eHIodSksb3V0cHV0czpsLGVsZW1lbnQ6bnVsbCxwcm92aWRlcjp7dG9rZW46byx2YWx1ZTppLGRlcHM6cH0sdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fSh0LGV8PTE2Mzg0LG4sbyxpLGksYSxzLGgpfWZ1bmN0aW9uIGlvKHQsZSl7cmV0dXJuIHNvKHQsZSl9ZnVuY3Rpb24gYW8odCxlKXtmb3IodmFyIG49dDtuLnBhcmVudCYmIWxyKG4pOyluPW4ucGFyZW50O3JldHVybiBjbyhuLnBhcmVudCxhcihuKSwhMCxlLnByb3ZpZGVyLnZhbHVlLGUucHJvdmlkZXIuZGVwcyl9ZnVuY3Rpb24gdW8odCxlKXt2YXIgbj1jbyh0LGUucGFyZW50LCgzMjc2OCZlLmZsYWdzKT4wLGUucHJvdmlkZXIudmFsdWUsZS5wcm92aWRlci5kZXBzKTtpZihlLm91dHB1dHMubGVuZ3RoKWZvcih2YXIgcj0wO3I8ZS5vdXRwdXRzLmxlbmd0aDtyKyspe3ZhciBvPWUub3V0cHV0c1tyXSxpPW5bby5wcm9wTmFtZV07aWYoIVllKGkpKXRocm93IG5ldyBFcnJvcigiQE91dHB1dCAiK28ucHJvcE5hbWUrIiBub3QgaW5pdGlhbGl6ZWQgaW4gJyIrbi5jb25zdHJ1Y3Rvci5uYW1lKyInLiIpO3ZhciBhPWkuc3Vic2NyaWJlKGxvKHQsZS5wYXJlbnQubm9kZUluZGV4LG8uZXZlbnROYW1lKSk7dC5kaXNwb3NhYmxlc1tlLm91dHB1dEluZGV4K3JdPWEudW5zdWJzY3JpYmUuYmluZChhKX1yZXR1cm4gbn1mdW5jdGlvbiBsbyh0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBvcih0LGUsbixyKX19ZnVuY3Rpb24gc28odCxlKXt2YXIgbj0oODE5MiZlLmZsYWdzKT4wLG89ZS5wcm92aWRlcjtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgNTEyOnJldHVybiBjbyh0LGUucGFyZW50LG4sby52YWx1ZSxvLmRlcHMpO2Nhc2UgMTAyNDpyZXR1cm4gZnVuY3Rpb24odCxlLG4sbyxpKXt2YXIgYT1pLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBvKCk7Y2FzZSAxOnJldHVybiBvKGhvKHQsZSxuLGlbMF0pKTtjYXNlIDI6cmV0dXJuIG8oaG8odCxlLG4saVswXSksaG8odCxlLG4saVsxXSkpO2Nhc2UgMzpyZXR1cm4gbyhobyh0LGUsbixpWzBdKSxobyh0LGUsbixpWzFdKSxobyh0LGUsbixpWzJdKSk7ZGVmYXVsdDpmb3IodmFyIHU9QXJyYXkoYSksbD0wO2w8YTtsKyspdVtsXT1obyh0LGUsbixpW2xdKTtyZXR1cm4gby5hcHBseSh2b2lkIDAsT2JqZWN0KHIuX19zcHJlYWQpKHUpKX19KHQsZS5wYXJlbnQsbixvLnZhbHVlLG8uZGVwcyk7Y2FzZSAyMDQ4OnJldHVybiBobyh0LGUucGFyZW50LG4sby5kZXBzWzBdKTtjYXNlIDI1NjpyZXR1cm4gby52YWx1ZX19ZnVuY3Rpb24gY28odCxlLG4sbyxpKXt2YXIgYT1pLmxlbmd0aDtzd2l0Y2goYSl7Y2FzZSAwOnJldHVybiBuZXcgbztjYXNlIDE6cmV0dXJuIG5ldyBvKGhvKHQsZSxuLGlbMF0pKTtjYXNlIDI6cmV0dXJuIG5ldyBvKGhvKHQsZSxuLGlbMF0pLGhvKHQsZSxuLGlbMV0pKTtjYXNlIDM6cmV0dXJuIG5ldyBvKGhvKHQsZSxuLGlbMF0pLGhvKHQsZSxuLGlbMV0pLGhvKHQsZSxuLGlbMl0pKTtkZWZhdWx0OmZvcih2YXIgdT1uZXcgQXJyYXkoYSksbD0wO2w8YTtsKyspdVtsXT1obyh0LGUsbixpW2xdKTtyZXR1cm4gbmV3KG8uYmluZC5hcHBseShvLE9iamVjdChyLl9fc3ByZWFkKShbdm9pZCAwXSx1KSkpfX12YXIgZm89e307ZnVuY3Rpb24gaG8odCxlLG4scixvKXtpZih2b2lkIDA9PT1vJiYobz1NZS5USFJPV19JRl9OT1RfRk9VTkQpLDgmci5mbGFncylyZXR1cm4gci50b2tlbjt2YXIgaT10OzImci5mbGFncyYmKG89bnVsbCk7dmFyIGE9ci50b2tlbktleTthPT09ZW8mJihuPSEoIWV8fCFlLmVsZW1lbnQuY29tcG9uZW50VmlldykpLGUmJjEmci5mbGFncyYmKG49ITEsZT1lLnBhcmVudCk7Zm9yKHZhciB1PXQ7dTspe2lmKGUpc3dpdGNoKGEpe2Nhc2UgWXI6cmV0dXJuIHFyKHBvKHUsZSxuKSk7Y2FzZSBKcjpyZXR1cm4gcG8odSxlLG4pLnJlbmRlcmVyO2Nhc2UgJHI6cmV0dXJuIG5ldyBsbih6bih1LGUubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIFhyOnJldHVybiB6bih1LGUubm9kZUluZGV4KS52aWV3Q29udGFpbmVyO2Nhc2UgdG86aWYoZS5lbGVtZW50LnRlbXBsYXRlKXJldHVybiB6bih1LGUubm9kZUluZGV4KS50ZW1wbGF0ZTticmVhaztjYXNlIGVvOnJldHVybiBWcihwbyh1LGUsbikpO2Nhc2Ugbm86Y2FzZSBybzpyZXR1cm4gQnIodSxlKTtkZWZhdWx0OnZhciBsPShuP2UuZWxlbWVudC5hbGxQcm92aWRlcnM6ZS5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycylbYV07aWYobCl7dmFyIHM9Rm4odSxsLm5vZGVJbmRleCk7cmV0dXJuIHN8fChzPXtpbnN0YW5jZTpzbyh1LGwpfSx1Lm5vZGVzW2wubm9kZUluZGV4XT1zKSxzLmluc3RhbmNlfX1uPWxyKHUpLGU9YXIodSksdT11LnBhcmVudCw0JnIuZmxhZ3MmJih1PW51bGwpfXZhciBjPWkucm9vdC5pbmplY3Rvci5nZXQoci50b2tlbixmbyk7cmV0dXJuIGMhPT1mb3x8bz09PWZvP2M6aS5yb290Lm5nTW9kdWxlLmluamVjdG9yLmdldChyLnRva2VuLG8pfWZ1bmN0aW9uIHBvKHQsZSxuKXt2YXIgcjtpZihuKXI9em4odCxlLm5vZGVJbmRleCkuY29tcG9uZW50VmlldztlbHNlIGZvcihyPXQ7ci5wYXJlbnQmJiFscihyKTspcj1yLnBhcmVudDtyZXR1cm4gcn1mdW5jdGlvbiBnbyh0LGUsbixyLG8saSl7aWYoMzI3Njgmbi5mbGFncyl7dmFyIGE9em4odCxuLnBhcmVudC5ub2RlSW5kZXgpLmNvbXBvbmVudFZpZXc7MiZhLmRlZi5mbGFncyYmKGEuc3RhdGV8PTgpfWlmKGUuaW5zdGFuY2Vbbi5iaW5kaW5nc1tyXS5uYW1lXT1vLDUyNDI4OCZuLmZsYWdzKXtpPWl8fHt9O3ZhciB1PXFlLnVud3JhcCh0Lm9sZFZhbHVlc1tuLmJpbmRpbmdJbmRleCtyXSk7aVtuLmJpbmRpbmdzW3JdLm5vbk1pbmlmaWVkTmFtZV09bmV3IEplKHUsbywwIT0oMiZ0LnN0YXRlKSl9cmV0dXJuIHQub2xkVmFsdWVzW24uYmluZGluZ0luZGV4K3JdPW8saX1mdW5jdGlvbiB2byh0LGUpe2lmKHQuZGVmLm5vZGVGbGFncyZlKWZvcih2YXIgbj10LmRlZi5ub2RlcyxyPTAsbz0wO288bi5sZW5ndGg7bysrKXt2YXIgaT1uW29dLGE9aS5wYXJlbnQ7Zm9yKCFhJiZpLmZsYWdzJmUmJm1vKHQsbyxpLmZsYWdzJmUscisrKSwwPT0oaS5jaGlsZEZsYWdzJmUpJiYobys9aS5jaGlsZENvdW50KTthJiYxJmEuZmxhZ3MmJm89PT1hLm5vZGVJbmRleCthLmNoaWxkQ291bnQ7KWEuZGlyZWN0Q2hpbGRGbGFncyZlJiYocj15byh0LGEsZSxyKSksYT1hLnBhcmVudH19ZnVuY3Rpb24geW8odCxlLG4scil7Zm9yKHZhciBvPWUubm9kZUluZGV4KzE7bzw9ZS5ub2RlSW5kZXgrZS5jaGlsZENvdW50O28rKyl7dmFyIGk9dC5kZWYubm9kZXNbb107aS5mbGFncyZuJiZtbyh0LG8saS5mbGFncyZuLHIrKyksbys9aS5jaGlsZENvdW50fXJldHVybiByfWZ1bmN0aW9uIG1vKHQsZSxuLHIpe3ZhciBvPUZuKHQsZSk7aWYobyl7dmFyIGk9by5pbnN0YW5jZTtpJiYoR24uc2V0Q3VycmVudE5vZGUodCxlKSwxMDQ4NTc2Jm4mJlZuKHQsNTEyLHIpJiZpLm5nQWZ0ZXJDb250ZW50SW5pdCgpLDIwOTcxNTImbiYmaS5uZ0FmdGVyQ29udGVudENoZWNrZWQoKSw0MTk0MzA0Jm4mJlZuKHQsNzY4LHIpJiZpLm5nQWZ0ZXJWaWV3SW5pdCgpLDgzODg2MDgmbiYmaS5uZ0FmdGVyVmlld0NoZWNrZWQoKSwxMzEwNzImbiYmaS5uZ09uRGVzdHJveSgpKX19dmFyIF9vPW5ldyBUdCgiU0NIRURVTEVSX1RPS0VOIix7cHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBHdH19KSx3bz17fSxibz1mdW5jdGlvbih0KXtyZXR1cm4gdFt0LkxvY2FsZUlkPTBdPSJMb2NhbGVJZCIsdFt0LkRheVBlcmlvZHNGb3JtYXQ9MV09IkRheVBlcmlvZHNGb3JtYXQiLHRbdC5EYXlQZXJpb2RzU3RhbmRhbG9uZT0yXT0iRGF5UGVyaW9kc1N0YW5kYWxvbmUiLHRbdC5EYXlzRm9ybWF0PTNdPSJEYXlzRm9ybWF0Iix0W3QuRGF5c1N0YW5kYWxvbmU9NF09IkRheXNTdGFuZGFsb25lIix0W3QuTW9udGhzRm9ybWF0PTVdPSJNb250aHNGb3JtYXQiLHRbdC5Nb250aHNTdGFuZGFsb25lPTZdPSJNb250aHNTdGFuZGFsb25lIix0W3QuRXJhcz03XT0iRXJhcyIsdFt0LkZpcnN0RGF5T2ZXZWVrPThdPSJGaXJzdERheU9mV2VlayIsdFt0LldlZWtlbmRSYW5nZT05XT0iV2Vla2VuZFJhbmdlIix0W3QuRGF0ZUZvcm1hdD0xMF09IkRhdGVGb3JtYXQiLHRbdC5UaW1lRm9ybWF0PTExXT0iVGltZUZvcm1hdCIsdFt0LkRhdGVUaW1lRm9ybWF0PTEyXT0iRGF0ZVRpbWVGb3JtYXQiLHRbdC5OdW1iZXJTeW1ib2xzPTEzXT0iTnVtYmVyU3ltYm9scyIsdFt0Lk51bWJlckZvcm1hdHM9MTRdPSJOdW1iZXJGb3JtYXRzIix0W3QuQ3VycmVuY3lTeW1ib2w9MTVdPSJDdXJyZW5jeVN5bWJvbCIsdFt0LkN1cnJlbmN5TmFtZT0xNl09IkN1cnJlbmN5TmFtZSIsdFt0LkN1cnJlbmNpZXM9MTddPSJDdXJyZW5jaWVzIix0W3QuUGx1cmFsQ2FzZT0xOF09IlBsdXJhbENhc2UiLHRbdC5FeHRyYURhdGE9MTldPSJFeHRyYURhdGEiLHR9KHt9KSx4bz12b2lkIDAsQ289WyJlbiIsW1siYSIsInAiXSxbIkFNIiwiUE0iXSx4b10sW1siQU0iLCJQTSJdLHhvLHhvXSxbWyJTIiwiTSIsIlQiLCJXIg=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?4?0",
"type": "binary",
"value": "base64:LCJUIiwiRiIsIlMiXSxbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLFsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxbIlN1IiwiTW8iLCJUdSIsIldlIiwiVGgiLCJGciIsIlNhIl1dLHhvLFtbIkoiLCJGIiwiTSIsIkEiLCJNIiwiSiIsIkoiLCJBIiwiUyIsIk8iLCJOIiwiRCJdLFsiSmFuIiwiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sWyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdXSx4byxbWyJCIiwiQSJdLFsiQkMiLCJBRCJdLFsiQmVmb3JlIENocmlzdCIsIkFubm8gRG9taW5pIl1dLDAsWzYsMF0sWyJNL2QveXkiLCJNTU0gZCwgeSIsIk1NTU0gZCwgeSIsIkVFRUUsIE1NTU0gZCwgeSJdLFsiaDptbSBhIiwiaDptbTpzcyBhIiwiaDptbTpzcyBhIHoiLCJoOm1tOnNzIGEgenp6eiJdLFsiezF9LCB7MH0iLHhvLCJ7MX0gJ2F0JyB7MH0iLHhvXSxbIi4iLCIsIiwiOyIsIiUiLCIrIiwiLSIsIkUiLCLDlyIsIuKAsCIsIuKIniIsIk5hTiIsIjoiXSxbIiMsIyMwLiMjIyIsIiMsIyMwJSIsIsKkIywjIzAuMDAiLCIjRTAiXSwiJCIsIlVTIERvbGxhciIse30sZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5mbG9vcihNYXRoLmFicyh0KSksbj10LnRvU3RyaW5nKCkucmVwbGFjZSgvXlteLl0qXC4/LywiIikubGVuZ3RoO3JldHVybiAxPT09ZSYmMD09PW4/MTo1fV0sU289ImVuLVVTIjtmdW5jdGlvbiBFbyh0KXt2YXIgZTtlPSJFeHBlY3RlZCBsb2NhbGVJZCB0byBiZSBkZWZpbmVkIixudWxsPT10JiZmdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIkFTU0VSVElPTiBFUlJPUjogIit0KX0oZSksInN0cmluZyI9PXR5cGVvZiB0JiZ0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXy9nLCItIil9dmFyIE9vPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dm9pZCAwPT09ZSYmKGU9ITEpO3ZhciBuPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gbi5fX2lzQXN5bmM9ZSxufXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyxlKX0sZS5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKGUsbixyKXt2YXIgbyxpPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsfSxhPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O2UmJiJvYmplY3QiPT10eXBlb2YgZT8obz10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlLm5leHQodCl9KSl9OmZ1bmN0aW9uKHQpe2UubmV4dCh0KX0sZS5lcnJvciYmKGk9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24odCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5lcnJvcih0KX0pKX06ZnVuY3Rpb24odCl7ZS5lcnJvcih0KX0pLGUuY29tcGxldGUmJihhPXRoaXMuX19pc0FzeW5jP2Z1bmN0aW9uKCl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5jb21wbGV0ZSgpfSkpfTpmdW5jdGlvbigpe2UuY29tcGxldGUoKX0pKToobz10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBlKHQpfSkpfTpmdW5jdGlvbih0KXtlKHQpfSxuJiYoaT10aGlzLl9faXNBc3luYz9mdW5jdGlvbih0KXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuKHQpfSkpfTpmdW5jdGlvbih0KXtuKHQpfSksciYmKGE9dGhpcy5fX2lzQXN5bmM/ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiByKCl9KSl9OmZ1bmN0aW9uKCl7cigpfSkpO3ZhciB1PXQucHJvdG90eXBlLnN1YnNjcmliZS5jYWxsKHRoaXMsbyxpLGEpO3JldHVybiBlIGluc3RhbmNlb2YgcyYmZS5hZGQodSksdX0sZX0oUCk7ZnVuY3Rpb24gVG8oKXtyZXR1cm4gdGhpcy5fcmVzdWx0c1tCZSgpXSgpfXZhciBQbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpcnR5PSEwLHRoaXMuX3Jlc3VsdHM9W10sdGhpcy5jaGFuZ2VzPW5ldyBPbyx0aGlzLmxlbmd0aD0wO3ZhciBlPUJlKCksbj10LnByb3RvdHlwZTtuW2VdfHwobltlXT1Ubyl9cmV0dXJuIHQucHJvdG90eXBlLm1hcD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5tYXAodCl9LHQucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5maWx0ZXIodCl9LHQucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMuZmluZCh0KX0sdC5wcm90b3R5cGUucmVkdWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3Jlc3VsdHMucmVkdWNlKHQsZSl9LHQucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCl7dGhpcy5fcmVzdWx0cy5mb3JFYWNoKHQpfSx0LnByb3RvdHlwZS5zb21lPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZXN1bHRzLnNvbWUodCl9LHQucHJvdG90eXBlLnRvQXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVzdWx0cy5zbGljZSgpfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZXN1bHRzLnRvU3RyaW5nKCl9LHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKHQpe3RoaXMuX3Jlc3VsdHM9ZnVuY3Rpb24gdChlLG4pe3ZvaWQgMD09PW4mJihuPWUpO2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbz1lW3JdO0FycmF5LmlzQXJyYXkobyk/KG49PT1lJiYobj1lLnNsaWNlKDAscikpLHQobyxuKSk6biE9PWUmJm4ucHVzaChvKX1yZXR1cm4gbn0odCksdGhpcy5kaXJ0eT0hMSx0aGlzLmxlbmd0aD10aGlzLl9yZXN1bHRzLmxlbmd0aCx0aGlzLmxhc3Q9dGhpcy5fcmVzdWx0c1t0aGlzLmxlbmd0aC0xXSx0aGlzLmZpcnN0PXRoaXMuX3Jlc3VsdHNbMF19LHQucHJvdG90eXBlLm5vdGlmeU9uQ2hhbmdlcz1mdW5jdGlvbigpe3RoaXMuY2hhbmdlcy5lbWl0KHRoaXMpfSx0LnByb3RvdHlwZS5zZXREaXJ0eT1mdW5jdGlvbigpe3RoaXMuZGlydHk9ITB9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmNoYW5nZXMuY29tcGxldGUoKSx0aGlzLmNoYW5nZXMudW5zdWJzY3JpYmUoKX0sdH0oKSxrbz1uZXcgVHQoIkFwcGxpY2F0aW9uIEluaXRpYWxpemVyIiksQW89ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlPXRoaXM7dGhpcy5hcHBJbml0cz10LHRoaXMuaW5pdGlhbGl6ZWQ9ITEsdGhpcy5kb25lPSExLHRoaXMuZG9uZVByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKHQsbil7ZS5yZXNvbHZlPXQsZS5yZWplY3Q9bn0pKX1yZXR1cm4gdC5wcm90b3R5cGUucnVuSW5pdGlhbGl6ZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5pbml0aWFsaXplZCl7dmFyIGU9W10sbj1mdW5jdGlvbigpe3QuZG9uZT0hMCx0LnJlc29sdmUoKX07aWYodGhpcy5hcHBJbml0cylmb3IodmFyIHI9MDtyPHRoaXMuYXBwSW5pdHMubGVuZ3RoO3IrKyl7dmFyIG89dGhpcy5hcHBJbml0c1tyXSgpO0tlKG8pJiZlLnB1c2gobyl9UHJvbWlzZS5hbGwoZSkudGhlbigoZnVuY3Rpb24oKXtuKCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3QucmVqZWN0KGUpfSkpLDA9PT1lLmxlbmd0aCYmbigpLHRoaXMuaW5pdGlhbGl6ZWQ9ITB9fSx0fSgpLElvPW5ldyBUdCgiQXBwSWQiKTtmdW5jdGlvbiBSbygpe3JldHVybiIiK01vKCkrTW8oKStNbygpfWZ1bmN0aW9uIE1vKCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoOTcrTWF0aC5mbG9vcigyNSpNYXRoLnJhbmRvbSgpKSl9dmFyIGpvPW5ldyBUdCgiUGxhdGZvcm0gSW5pdGlhbGl6ZXIiKSxObz1uZXcgVHQoIlBsYXRmb3JtIElEIiksRG89bmV3IFR0KCJhcHBCb290c3RyYXBMaXN0ZW5lciIpLFVvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe2NvbnNvbGUubG9nKHQpfSx0LnByb3RvdHlwZS53YXJuPWZ1bmN0aW9uKHQpe2NvbnNvbGUud2Fybih0KX0sdH0oKSxMbz1uZXcgVHQoIkxvY2FsZUlkIiksVm89ITE7ZnVuY3Rpb24gSG8oKXt0aHJvdyBuZXcgRXJyb3IoIlJ1bnRpbWUgY29tcGlsZXIgaXMgbm90IGxvYWRlZCIpfXZhciB6byxGbyxCbz1Ibyxabz1IbyxHbz1Ibyxxbz1IbyxXbz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvbXBpbGVNb2R1bGVTeW5jPUJvLHRoaXMuY29tcGlsZU1vZHVsZUFzeW5jPVpvLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNTeW5jPUdvLHRoaXMuY29tcGlsZU1vZHVsZUFuZEFsbENvbXBvbmVudHNBc3luYz1xb31yZXR1cm4gdC5wcm90b3R5cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuY2xlYXJDYWNoZUZvcj1mdW5jdGlvbih0KXt9LHQucHJvdG90eXBlLmdldE1vZHVsZUlkPWZ1bmN0aW9uKHQpe30sdH0oKSxRbz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCk7ZnVuY3Rpb24gS28oKXt2YXIgdD1PdC53dGY7cmV0dXJuISghdHx8ISh6bz10LnRyYWNlKXx8KEZvPXpvLmV2ZW50cywwKSl9dmFyIFlvPUtvKCk7ZnVuY3Rpb24gSm8odCxlKXtyZXR1cm4gbnVsbH12YXIgJG89WW8/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9bnVsbCksRm8uY3JlYXRlU2NvcGUodCxlKX06ZnVuY3Rpb24odCxlKXtyZXR1cm4gSm99LFhvPVlvP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIHpvLmxlYXZlU2NvcGUodCxlKSxlfTpmdW5jdGlvbih0LGUpe3JldHVybiBlfSx0aT1mdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoMCl9KCk7ZnVuY3Rpb24gZWkodCl7InVuZGVmaW5lZCI9PXR5cGVvZiBab25lP3RpLnRoZW4oKGZ1bmN0aW9uKCl7dCYmdC5hcHBseShudWxsLG51bGwpfSkpOlpvbmUuY3VycmVudC5zY2hlZHVsZU1pY3JvVGFzaygic2NoZWR1bGVNaWNyb3Rhc2siLHQpfXZhciBuaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGUsbj10LmVuYWJsZUxvbmdTdGFja1RyYWNlLHI9dm9pZCAwIT09biYmbjtpZih0aGlzLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPSExLHRoaXMuaGFzUGVuZGluZ01hY3JvdGFza3M9ITEsdGhpcy5pc1N0YWJsZT0hMCx0aGlzLm9uVW5zdGFibGU9bmV3IE9vKCExKSx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IE9vKCExKSx0aGlzLm9uU3RhYmxlPW5ldyBPbyghMSksdGhpcy5vbkVycm9yPW5ldyBPbyghMSksInVuZGVmaW5lZCI9PXR5cGVvZiBab25lKXRocm93IG5ldyBFcnJvcigiSW4gdGhpcyBjb25maWd1cmF0aW9uIEFuZ3VsYXIgcmVxdWlyZXMgWm9uZS5qcyIpO1pvbmUuYXNzZXJ0Wm9uZVBhdGNoZWQoKSx0aGlzLl9uZXN0aW5nPTAsdGhpcy5fb3V0ZXI9dGhpcy5faW5uZXI9Wm9uZS5jdXJyZW50LFpvbmUud3RmWm9uZVNwZWMmJih0aGlzLl9pbm5lcj10aGlzLl9pbm5lci5mb3JrKFpvbmUud3RmWm9uZVNwZWMpKSxab25lLlRhc2tUcmFja2luZ1pvbmVTcGVjJiYodGhpcy5faW5uZXI9dGhpcy5faW5uZXIuZm9yayhuZXcgWm9uZS5UYXNrVHJhY2tpbmdab25lU3BlYykpLHImJlpvbmUubG9uZ1N0YWNrVHJhY2Vab25lU3BlYyYmKHRoaXMuX2lubmVyPXRoaXMuX2lubmVyLmZvcmsoWm9uZS5sb25nU3RhY2tUcmFjZVpvbmVTcGVjKSksKGU9dGhpcykuX2lubmVyPWUuX2lubmVyLmZvcmsoe25hbWU6ImFuZ3VsYXIiLHByb3BlcnRpZXM6e2lzQW5ndWxhclpvbmU6ITB9LG9uSW52b2tlVGFzazpmdW5jdGlvbih0LG4scixvLGksYSl7dHJ5e3JldHVybiBhaShlKSx0Lmludm9rZVRhc2socixvLGksYSl9ZmluYWxseXt1aShlKX19LG9uSW52b2tlOmZ1bmN0aW9uKHQsbixyLG8saSxhLHUpe3RyeXtyZXR1cm4gYWkoZSksdC5pbnZva2UocixvLGksYSx1KX1maW5hbGx5e3VpKGUpfX0sb25IYXNUYXNrOmZ1bmN0aW9uKHQsbixyLG8pe3QuaGFzVGFzayhyLG8pLG49PT1yJiYoIm1pY3JvVGFzayI9PW8uY2hhbmdlPyhlLmhhc1BlbmRpbmdNaWNyb3Rhc2tzPW8ubWljcm9UYXNrLGlpKGUpKToibWFjcm9UYXNrIj09by5jaGFuZ2UmJihlLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPW8ubWFjcm9UYXNrKSl9LG9uSGFuZGxlRXJyb3I6ZnVuY3Rpb24odCxuLHIsbyl7cmV0dXJuIHQuaGFuZGxlRXJyb3IocixvKSxlLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3JldHVybiBlLm9uRXJyb3IuZW1pdChvKX0pKSwhMX19KX1yZXR1cm4gdC5pc0luQW5ndWxhclpvbmU9ZnVuY3Rpb24oKXtyZXR1cm4hMD09PVpvbmUuY3VycmVudC5nZXQoImlzQW5ndWxhclpvbmUiKX0sdC5hc3NlcnRJbkFuZ3VsYXJab25lPWZ1bmN0aW9uKCl7aWYoIXQuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBiZSBpbiBBbmd1bGFyIFpvbmUsIGJ1dCBpdCBpcyBub3QhIil9LHQuYXNzZXJ0Tm90SW5Bbmd1bGFyWm9uZT1mdW5jdGlvbigpe2lmKHQuaXNJbkFuZ3VsYXJab25lKCkpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byBub3QgYmUgaW4gQW5ndWxhciBab25lLCBidXQgaXQgaXMhIil9LHQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX2lubmVyLnJ1bih0LGUsbil9LHQucHJvdG90eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5faW5uZXIsaT1vLnNjaGVkdWxlRXZlbnRUYXNrKCJOZ1pvbmVFdmVudDogIityLHQsb2kscmkscmkpO3RyeXtyZXR1cm4gby5ydW5UYXNrKGksZSxuKX1maW5hbGx5e28uY2FuY2VsVGFzayhpKX19LHQucHJvdG90eXBlLnJ1bkd1YXJkZWQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9pbm5lci5ydW5HdWFyZGVkKHQsZSxuKX0sdC5wcm90b3R5cGUucnVuT3V0c2lkZUFuZ3VsYXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX291dGVyLnJ1bih0KX0sdH0oKTtmdW5jdGlvbiByaSgpe312YXIgb2k9e307ZnVuY3Rpb24gaWkodCl7aWYoMD09dC5fbmVzdGluZyYmIXQuaGFzUGVuZGluZ01pY3JvdGFza3MmJiF0LmlzU3RhYmxlKXRyeXt0Ll9uZXN0aW5nKyssdC5vbk1pY3JvdGFza0VtcHR5LmVtaXQobnVsbCl9ZmluYWxseXtpZih0Ll9uZXN0aW5nLS0sIXQuaGFzUGVuZGluZ01pY3JvdGFza3MpdHJ5e3QucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQub25TdGFibGUuZW1pdChudWxsKX0pKX1maW5hbGx5e3QuaXNTdGFibGU9ITB9fX1mdW5jdGlvbiBhaSh0KXt0Ll9uZXN0aW5nKyssdC5pc1N0YWJsZSYmKHQuaXNTdGFibGU9ITEsdC5vblVuc3RhYmxlLmVtaXQobnVsbCkpfWZ1bmN0aW9uIHVpKHQpe3QuX25lc3RpbmctLSxpaSh0KX12YXIgbGksc2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5oYXNQZW5kaW5nTWljcm90YXNrcz0hMSx0aGlzLmhhc1BlbmRpbmdNYWNyb3Rhc2tzPSExLHRoaXMuaXNTdGFibGU9ITAsdGhpcy5vblVuc3RhYmxlPW5ldyBPbyx0aGlzLm9uTWljcm90YXNrRW1wdHk9bmV3IE9vLHRoaXMub25TdGFibGU9bmV3IE9vLHRoaXMub25FcnJvcj1uZXcgT299cmV0dXJuIHQucHJvdG90eXBlLnJ1bj1mdW5jdGlvbih0KXtyZXR1cm4gdCgpfSx0LnByb3RvdHlwZS5ydW5HdWFyZGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LHQucHJvdG90eXBlLnJ1bk91dHNpZGVBbmd1bGFyPWZ1bmN0aW9uKHQpe3JldHVybiB0KCl9LHQucHJvdG90eXBlLnJ1blRhc2s9ZnVuY3Rpb24odCl7cmV0dXJuIHQoKX0sdH0oKSxjaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGU9dGhpczt0aGlzLl9uZ1pvbmU9dCx0aGlzLl9wZW5kaW5nQ291bnQ9MCx0aGlzLl9pc1pvbmVTdGFibGU9ITAsdGhpcy5fZGlkV29yaz0hMSx0aGlzLl9jYWxsYmFja3M9W10sdGhpcy50YXNrVHJhY2tpbmdab25lPW51bGwsdGhpcy5fd2F0Y2hBbmd1bGFyRXZlbnRzKCksdC5ydW4oKGZ1bmN0aW9uKCl7ZS50YXNrVHJhY2tpbmdab25lPSJ1bmRlZmluZWQiPT10eXBlb2YgWm9uZT9udWxsOlpvbmUuY3VycmVudC5nZXQoIlRhc2tUcmFja2luZ1pvbmUiKX0pKX1yZXR1cm4gdC5wcm90b3R5cGUuX3dhdGNoQW5ndWxhckV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fbmdab25lLm9uVW5zdGFibGUuc3Vic2NyaWJlKHtuZXh0OmZ1bmN0aW9uKCl7dC5fZGlkV29yaz0hMCx0Ll9pc1pvbmVTdGFibGU9ITF9fSksdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3QuX25nWm9uZS5vblN0YWJsZS5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24oKXtuaS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksZWkoKGZ1bmN0aW9uKCl7dC5faXNab25lU3RhYmxlPSEwLHQuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKX0pKX19KX0pKX0sdC5wcm90b3R5cGUuaW5jcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BlbmRpbmdDb3VudCs9MSx0aGlzLl9kaWRXb3JrPSEwLHRoaXMuX3BlbmRpbmdDb3VudH0sdC5wcm90b3R5cGUuZGVjcmVhc2VQZW5kaW5nUmVxdWVzdENvdW50PWZ1bmN0aW9uKCl7aWYodGhpcy5fcGVuZGluZ0NvdW50LT0xLHRoaXMuX3BlbmRpbmdDb3VudDwwKXRocm93IG5ldyBFcnJvcigicGVuZGluZyBhc3luYyByZXF1ZXN0cyBiZWxvdyB6ZXJvIik7cmV0dXJuIHRoaXMuX3J1bkNhbGxiYWNrc0lmUmVhZHkoKSx0aGlzLl9wZW5kaW5nQ291bnR9LHQucHJvdG90eXBlLmlzU3RhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzWm9uZVN0YWJsZSYmMD09PXRoaXMuX3BlbmRpbmdDb3VudCYmIXRoaXMuX25nWm9uZS5oYXNQZW5kaW5nTWFjcm90YXNrc30sdC5wcm90b3R5cGUuX3J1bkNhbGxiYWNrc0lmUmVhZHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMuaXNTdGFibGUoKSllaSgoZnVuY3Rpb24oKXtmb3IoOzAhPT10Ll9jYWxsYmFja3MubGVuZ3RoOyl7dmFyIGU9dC5fY2FsbGJhY2tzLnBvcCgpO2NsZWFyVGltZW91dChlLnRpbWVvdXRJZCksZS5kb25lQ2IodC5fZGlkV29yayl9dC5fZGlkV29yaz0hMX0pKTtlbHNle3ZhciBlPXRoaXMuZ2V0UGVuZGluZ1Rhc2tzKCk7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0LnVwZGF0ZUNifHwhdC51cGRhdGVDYihlKXx8KGNsZWFyVGltZW91dCh0LnRpbWVvdXRJZCksITEpfSkpLHRoaXMuX2RpZFdvcms9ITB9fSx0LnByb3RvdHlwZS5nZXRQZW5kaW5nVGFza3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YXNrVHJhY2tpbmdab25lP3RoaXMudGFza1RyYWNraW5nWm9uZS5tYWNyb1Rhc2tzLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue3NvdXJjZTp0LnNvdXJjZSxjcmVhdGlvbkxvY2F0aW9uOnQuY3JlYXRpb25Mb2NhdGlvbixkYXRhOnQuZGF0YX19KSk6W119LHQucHJvdG90eXBlLmFkZENhbGxiYWNrPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLG89LTE7ZSYmZT4wJiYobz1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3IuX2NhbGxiYWNrcz1yLl9jYWxsYmFja3MuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC50aW1lb3V0SWQhPT1vfSkpLHQoci5fZGlkV29yayxyLmdldFBlbmRpbmdUYXNrcygpKX0pLGUpKSx0aGlzLl9jYWxsYmFja3MucHVzaCh7ZG9uZUNiOnQsdGltZW91dElkOm8sdXBkYXRlQ2I6bn0pfSx0LnByb3RvdHlwZS53aGVuU3RhYmxlPWZ1bmN0aW9uKHQsZSxuKXtpZihuJiYhdGhpcy50YXNrVHJhY2tpbmdab25lKXRocm93IG5ldyBFcnJvcignVGFzayB0cmFja2luZyB6b25lIGlzIHJlcXVpcmVkIHdoZW4gcGFzc2luZyBhbiB1cGRhdGUgY2FsbGJhY2sgdG8gd2hlblN0YWJsZSgpLiBJcyAiem9uZS5qcy9kaXN0L3Rhc2stdHJhY2tpbmcuanMiIGxvYWRlZD8nKTt0aGlzLmFkZENhbGxiYWNrKHQsZSxuKSx0aGlzLl9ydW5DYWxsYmFja3NJZlJlYWR5KCl9LHQucHJvdG90eXBlLmdldFBlbmRpbmdSZXF1ZXN0Q291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGVuZGluZ0NvdW50fSx0LnByb3RvdHlwZS5maW5kUHJvdmlkZXJzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bXX0sdH0oKSxmaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLl9hcHBsaWNhdGlvbnM9bmV3IE1hcCxoaS5hZGRUb1dpbmRvdyh0aGlzKX1yZXR1cm4gdC5wcm90b3R5cGUucmVnaXN0ZXJBcHBsaWNhdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMuX2FwcGxpY2F0aW9ucy5zZXQodCxlKX0sdC5wcm90b3R5cGUudW5yZWdpc3RlckFwcGxpY2F0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuX2FwcGxpY2F0aW9ucy5kZWxldGUodCl9LHQucHJvdG90eXBlLnVucmVnaXN0ZXJBbGxBcHBsaWNhdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLl9hcHBsaWNhdGlvbnMuY2xlYXIoKX0sdC5wcm90b3R5cGUuZ2V0VGVzdGFiaWxpdHk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9ucy5nZXQodCl8fG51bGx9LHQucHJvdG90eXBlLmdldEFsbFRlc3RhYmlsaXRpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMudmFsdWVzKCkpfSx0LnByb3RvdHlwZS5nZXRBbGxSb290RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9hcHBsaWNhdGlvbnMua2V5cygpKX0sdC5wcm90b3R5cGUuZmluZFRlc3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPSEwKSxoaS5maW5kVGVzdGFiaWxpdHlJblRyZWUodGhpcyx0LGUpfSx0fSgpLGhpPW5ldyhmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmFkZFRvV2luZG93PWZ1bmN0aW9uKHQpe30sdC5wcm90b3R5cGUuZmluZFRlc3RhYmlsaXR5SW5UcmVlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbnVsbH0sdH0oKSkscGk9bmV3IFR0KCJBbGxvd011bHRpcGxlVG9rZW4iKSxkaT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3RoaXMubmFtZT10LHRoaXMudG9rZW49ZX19KCk7ZnVuY3Rpb24gZ2kodCxlLG4pe3ZvaWQgMD09PW4mJihuPVtdKTt2YXIgcj0iUGxhdGZvcm06ICIrZSxvPW5ldyBUdChyKTtyZXR1cm4gZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9W10pO3ZhciBpPXZpKCk7aWYoIWl8fGkuaW5qZWN0b3IuZ2V0KHBpLCExKSlpZih0KXQobi5jb25jYXQoZSkuY29uY2F0KHtwcm92aWRlOm8sdXNlVmFsdWU6ITB9KSk7ZWxzZXt2YXIgYT1uLmNvbmNhdChlKS5jb25jYXQoe3Byb3ZpZGU6byx1c2VWYWx1ZTohMH0pOyFmdW5jdGlvbih0KXtpZihsaSYmIWxpLmRlc3Ryb3llZCYmIWxpLmluamVjdG9yLmdldChwaSwhMSkpdGhyb3cgbmV3IEVycm9yKCJUaGVyZSBjYW4gYmUgb25seSBvbmUgcGxhdGZvcm0uIERlc3Ryb3kgdGg="
}
]
},
{
"type": 12,
"id": "64p3BL3rTRa5FiSoAACzkWvMwnrs39btw1kW1JfJouyG",
"fee": 8900000,
"feeAssetId": null,
"timestamp": 1575393737495,
"version": 1,
"sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
"senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
"proofs": [
"3mZchdpvjFvx4xk8XNrYgPg8TnYQr693mx51DjYVXZtepNwcQ3SM5VWg3LCBbfgtFVz2ACRbbi7ge8nW5G6zdJaM"
],
"data": [
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?0?1",
"type": "binary",
"value": "base64:ZSBwcmV2aW91cyBvbmUgdG8gY3JlYXRlIGEgbmV3IG9uZS4iKTtsaT10LmdldCh5aSk7dmFyIGU9dC5nZXQoam8sbnVsbCk7ZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSkpfShNZS5jcmVhdGUoe3Byb3ZpZGVyczphLG5hbWU6cn0pKX1yZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dmkoKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoIk5vIHBsYXRmb3JtIGV4aXN0cyEiKTtpZighZS5pbmplY3Rvci5nZXQodCxudWxsKSl0aHJvdyBuZXcgRXJyb3IoIkEgcGxhdGZvcm0gd2l0aCBhIGRpZmZlcmVudCBjb25maWd1cmF0aW9uIGhhcyBiZWVuIGNyZWF0ZWQuIFBsZWFzZSBkZXN0cm95IGl0IGZpcnN0LiIpO3JldHVybiBlfShvKX19ZnVuY3Rpb24gdmkoKXtyZXR1cm4gbGkmJiFsaS5kZXN0cm95ZWQ/bGk6bnVsbH12YXIgeWk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuX2luamVjdG9yPXQsdGhpcy5fbW9kdWxlcz1bXSx0aGlzLl9kZXN0cm95TGlzdGVuZXJzPVtdLHRoaXMuX2Rlc3Ryb3llZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlRmFjdG9yeT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcyxvPSJub29wIj09PShuPWU/ZS5uZ1pvbmU6dm9pZCAwKT9uZXcgc2k6KCJ6b25lLmpzIj09PW4/dm9pZCAwOm4pfHxuZXcgbmkoe2VuYWJsZUxvbmdTdGFja1RyYWNlOmVlKCl9KSxpPVt7cHJvdmlkZTpuaSx1c2VWYWx1ZTpvfV07cmV0dXJuIG8ucnVuKChmdW5jdGlvbigpe3ZhciBlPU1lLmNyZWF0ZSh7cHJvdmlkZXJzOmkscGFyZW50OnIuaW5qZWN0b3IsbmFtZTp0Lm1vZHVsZVR5cGUubmFtZX0pLG49dC5jcmVhdGUoZSksYT1uLmluamVjdG9yLmdldCgkdCxudWxsKTtpZighYSl0aHJvdyBuZXcgRXJyb3IoIk5vIEVycm9ySGFuZGxlci4gSXMgcGxhdGZvcm0gbW9kdWxlIChCcm93c2VyTW9kdWxlKSBpbmNsdWRlZD8iKTtyZXR1cm4gVm8mJkVvKG4uaW5qZWN0b3IuZ2V0KExvLFNvKXx8U28pLG4ub25EZXN0cm95KChmdW5jdGlvbigpe3JldHVybiB3aShyLl9tb2R1bGVzLG4pfSkpLG8ucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIG8ub25FcnJvci5zdWJzY3JpYmUoe25leHQ6ZnVuY3Rpb24odCl7YS5oYW5kbGVFcnJvcih0KX19KX0pKSxmdW5jdGlvbih0LGUsbyl7dHJ5e3ZhciBpPSgoYT1uLmluamVjdG9yLmdldChBbykpLnJ1bkluaXRpYWxpemVycygpLGEuZG9uZVByb21pc2UudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gci5fbW9kdWxlRG9Cb290c3RyYXAobiksbn0pKSk7cmV0dXJuIEtlKGkpP2kuY2F0Y2goKGZ1bmN0aW9uKG4pe3Rocm93IGUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaGFuZGxlRXJyb3Iobil9KSksbn0pKTppfWNhdGNoKHUpe3Rocm93IGUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQuaGFuZGxlRXJyb3IodSl9KSksdX12YXIgYX0oYSxvKX0pKX0sdC5wcm90b3R5cGUuYm9vdHN0cmFwTW9kdWxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt2b2lkIDA9PT1lJiYoZT1bXSk7dmFyIHI9bWkoe30sZSk7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC5nZXQoUW8pLmNyZWF0ZUNvbXBpbGVyKFtlXSkuY29tcGlsZU1vZHVsZUFzeW5jKG4pfSh0aGlzLmluamVjdG9yLHIsdCkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIG4uYm9vdHN0cmFwTW9kdWxlRmFjdG9yeSh0LHIpfSkpfSx0LnByb3RvdHlwZS5fbW9kdWxlRG9Cb290c3RyYXA9ZnVuY3Rpb24odCl7dmFyIGU9dC5pbmplY3Rvci5nZXQoX2kpO2lmKHQuX2Jvb3RzdHJhcENvbXBvbmVudHMubGVuZ3RoPjApdC5fYm9vdHN0cmFwQ29tcG9uZW50cy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gZS5ib290c3RyYXAodCl9KSk7ZWxzZXtpZighdC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKXRocm93IG5ldyBFcnJvcigiVGhlIG1vZHVsZSAiK3l0KHQuaW5zdGFuY2UuY29uc3RydWN0b3IpKycgd2FzIGJvb3RzdHJhcHBlZCwgYnV0IGl0IGRvZXMgbm90IGRlY2xhcmUgIkBOZ01vZHVsZS5ib290c3RyYXAiIGNvbXBvbmVudHMgbm9yIGEgIm5nRG9Cb290c3RyYXAiIG1ldGhvZC4gUGxlYXNlIGRlZmluZSBvbmUgb2YgdGhlc2UuJyk7dC5pbnN0YW5jZS5uZ0RvQm9vdHN0cmFwKGUpfXRoaXMuX21vZHVsZXMucHVzaCh0KX0sdC5wcm90b3R5cGUub25EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuX2Rlc3Ryb3lMaXN0ZW5lcnMucHVzaCh0KX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9pbmplY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7aWYodGhpcy5fZGVzdHJveWVkKXRocm93IG5ldyBFcnJvcigiVGhlIHBsYXRmb3JtIGhhcyBhbHJlYWR5IGJlZW4gZGVzdHJveWVkISIpO3RoaXMuX21vZHVsZXMuc2xpY2UoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSksdGhpcy5fZGVzdHJveUxpc3RlbmVycy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSkpLHRoaXMuX2Rlc3Ryb3llZD0hMH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJkZXN0cm95ZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGVzdHJveWVkfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCk7ZnVuY3Rpb24gbWkodCxlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lLnJlZHVjZShtaSx0KTpPYmplY3Qoci5fX2Fzc2lnbikoe30sdCxlKX12YXIgX2k9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIsbyxpKXt2YXIgYT10aGlzO3RoaXMuX3pvbmU9dCx0aGlzLl9jb25zb2xlPWUsdGhpcy5faW5qZWN0b3I9bix0aGlzLl9leGNlcHRpb25IYW5kbGVyPXIsdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyPW8sdGhpcy5faW5pdFN0YXR1cz1pLHRoaXMuX2Jvb3RzdHJhcExpc3RlbmVycz1bXSx0aGlzLl92aWV3cz1bXSx0aGlzLl9ydW5uaW5nVGljaz0hMSx0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPSExLHRoaXMuX3N0YWJsZT0hMCx0aGlzLmNvbXBvbmVudFR5cGVzPVtdLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzPWVlKCksdGhpcy5fem9uZS5vbk1pY3JvdGFza0VtcHR5LnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbigpe2EuX3pvbmUucnVuKChmdW5jdGlvbigpe2EudGljaygpfSkpfX0pO3ZhciB1PW5ldyB4KChmdW5jdGlvbih0KXthLl9zdGFibGU9YS5fem9uZS5pc1N0YWJsZSYmIWEuX3pvbmUuaGFzUGVuZGluZ01hY3JvdGFza3MmJiFhLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzLGEuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7dC5uZXh0KGEuX3N0YWJsZSksdC5jb21wbGV0ZSgpfSkpfSkpLGw9bmV3IHgoKGZ1bmN0aW9uKHQpe3ZhciBlO2EuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7ZT1hLl96b25lLm9uU3RhYmxlLnN1YnNjcmliZSgoZnVuY3Rpb24oKXtuaS5hc3NlcnROb3RJbkFuZ3VsYXJab25lKCksZWkoKGZ1bmN0aW9uKCl7YS5fc3RhYmxlfHxhLl96b25lLmhhc1BlbmRpbmdNYWNyb3Rhc2tzfHxhLl96b25lLmhhc1BlbmRpbmdNaWNyb3Rhc2tzfHwoYS5fc3RhYmxlPSEwLHQubmV4dCghMCkpfSkpfSkpfSkpO3ZhciBuPWEuX3pvbmUub25VbnN0YWJsZS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7bmkuYXNzZXJ0SW5Bbmd1bGFyWm9uZSgpLGEuX3N0YWJsZSYmKGEuX3N0YWJsZT0hMSxhLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3QubmV4dCghMSl9KSkpfSkpO3JldHVybiBmdW5jdGlvbigpe2UudW5zdWJzY3JpYmUoKSxuLnVuc3Vic2NyaWJlKCl9fSkpO3RoaXMuaXNTdGFibGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHI9bnVsbCxvPXRbdC5sZW5ndGgtMV07cmV0dXJuIEEobyk/KHI9dC5wb3AoKSx0Lmxlbmd0aD4xJiYibnVtYmVyIj09dHlwZW9mIHRbdC5sZW5ndGgtMV0mJihuPXQucG9wKCkpKToibnVtYmVyIj09dHlwZW9mIG8mJihuPXQucG9wKCkpLG51bGw9PT1yJiYxPT09dC5sZW5ndGgmJnRbMF1pbnN0YW5jZW9mIHg/dFswXTokKG4pKHEodCxyKSl9KHUsbC5waXBlKChmdW5jdGlvbih0KXtyZXR1cm4gWCgpKChlPWl0LGZ1bmN0aW9uKHQpe3ZhciBuO249ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpmdW5jdGlvbigpe3JldHVybiBlfTt2YXIgcj1PYmplY3QuY3JlYXRlKHQscnQpO3JldHVybiByLnNvdXJjZT10LHIuc3ViamVjdEZhY3Rvcnk9bixyfSkodCkpO3ZhciBlfSkpKX12YXIgZTtyZXR1cm4gZT10LHQucHJvdG90eXBlLmJvb3RzdHJhcD1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcztpZighdGhpcy5faW5pdFN0YXR1cy5kb25lKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGJvb3RzdHJhcCBhcyB0aGVyZSBhcmUgc3RpbGwgYXN5bmNocm9ub3VzIGluaXRpYWxpemVycyBydW5uaW5nLiBCb290c3RyYXAgY29tcG9uZW50cyBpbiB0aGUgYG5nRG9Cb290c3RyYXBgIG1ldGhvZCBvZiB0aGUgcm9vdCBtb2R1bGUuIik7bj10IGluc3RhbmNlb2YgWGU/dDp0aGlzLl9jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodCksdGhpcy5jb21wb25lbnRUeXBlcy5wdXNoKG4uY29tcG9uZW50VHlwZSk7dmFyIG89biBpbnN0YW5jZW9mIGFuP251bGw6dGhpcy5faW5qZWN0b3IuZ2V0KEh0KSxpPW4uY3JlYXRlKE1lLk5VTEwsW10sZXx8bi5zZWxlY3RvcixvKTtpLm9uRGVzdHJveSgoZnVuY3Rpb24oKXtyLl91bmxvYWRDb21wb25lbnQoaSl9KSk7dmFyIGE9aS5pbmplY3Rvci5nZXQoY2ksbnVsbCk7cmV0dXJuIGEmJmkuaW5qZWN0b3IuZ2V0KGZpKS5yZWdpc3RlckFwcGxpY2F0aW9uKGkubG9jYXRpb24ubmF0aXZlRWxlbWVudCxhKSx0aGlzLl9sb2FkQ29tcG9uZW50KGkpLGVlKCkmJnRoaXMuX2NvbnNvbGUubG9nKCJBbmd1bGFyIGlzIHJ1bm5pbmcgaW4gdGhlIGRldmVsb3BtZW50IG1vZGUuIENhbGwgZW5hYmxlUHJvZE1vZGUoKSB0byBlbmFibGUgdGhlIHByb2R1Y3Rpb24gbW9kZS4iKSxpfSx0LnByb3RvdHlwZS50aWNrPWZ1bmN0aW9uKCl7dmFyIHQsbixvLGksYT10aGlzO2lmKHRoaXMuX3J1bm5pbmdUaWNrKXRocm93IG5ldyBFcnJvcigiQXBwbGljYXRpb25SZWYudGljayBpcyBjYWxsZWQgcmVjdXJzaXZlbHkiKTt2YXIgdT1lLl90aWNrU2NvcGUoKTt0cnl7dGhpcy5fcnVubmluZ1RpY2s9ITA7dHJ5e2Zvcih2YXIgbD1PYmplY3Qoci5fX3ZhbHVlcykodGhpcy5fdmlld3MpLHM9bC5uZXh0KCk7IXMuZG9uZTtzPWwubmV4dCgpKXMudmFsdWUuZGV0ZWN0Q2hhbmdlcygpfWNhdGNoKGgpe3Q9e2Vycm9yOmh9fWZpbmFsbHl7dHJ5e3MmJiFzLmRvbmUmJihuPWwucmV0dXJuKSYmbi5jYWxsKGwpfWZpbmFsbHl7aWYodCl0aHJvdyB0LmVycm9yfX1pZih0aGlzLl9lbmZvcmNlTm9OZXdDaGFuZ2VzKXRyeXtmb3IodmFyIGM9T2JqZWN0KHIuX192YWx1ZXMpKHRoaXMuX3ZpZXdzKSxmPWMubmV4dCgpOyFmLmRvbmU7Zj1jLm5leHQoKSlmLnZhbHVlLmNoZWNrTm9DaGFuZ2VzKCl9Y2F0Y2gocCl7bz17ZXJyb3I6cH19ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGk9Yy5yZXR1cm4pJiZpLmNhbGwoYyl9ZmluYWxseXtpZihvKXRocm93IG8uZXJyb3J9fX1jYXRjaChkKXt0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKChmdW5jdGlvbigpe3JldHVybiBhLl9leGNlcHRpb25IYW5kbGVyLmhhbmRsZUVycm9yKGQpfSkpfWZpbmFsbHl7dGhpcy5fcnVubmluZ1RpY2s9ITEsWG8odSl9fSx0LnByb3RvdHlwZS5hdHRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7dGhpcy5fdmlld3MucHVzaChlKSxlLmF0dGFjaFRvQXBwUmVmKHRoaXMpfSx0LnByb3RvdHlwZS5kZXRhY2hWaWV3PWZ1bmN0aW9uKHQpe3ZhciBlPXQ7d2kodGhpcy5fdmlld3MsZSksZS5kZXRhY2hGcm9tQXBwUmVmKCl9LHQucHJvdG90eXBlLl9sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuYXR0YWNoVmlldyh0Lmhvc3RWaWV3KSx0aGlzLnRpY2soKSx0aGlzLmNvbXBvbmVudHMucHVzaCh0KSx0aGlzLl9pbmplY3Rvci5nZXQoRG8sW10pLmNvbmNhdCh0aGlzLl9ib290c3RyYXBMaXN0ZW5lcnMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlKHQpfSkpfSx0LnByb3RvdHlwZS5fdW5sb2FkQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3RoaXMuZGV0YWNoVmlldyh0Lmhvc3RWaWV3KSx3aSh0aGlzLmNvbXBvbmVudHMsdCl9LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fdmlld3Muc2xpY2UoKS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdC5kZXN0cm95KCl9KSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwidmlld0NvdW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZpZXdzLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0Ll90aWNrU2NvcGU9JG8oIkFwcGxpY2F0aW9uUmVmI3RpY2soKSIpLHR9KCk7ZnVuY3Rpb24gd2kodCxlKXt2YXIgbj10LmluZGV4T2YoZSk7bj4tMSYmdC5zcGxpY2UobiwxKX12YXIgYmk9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLHhpPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxDaT17ZmFjdG9yeVBhdGhQcmVmaXg6IiIsZmFjdG9yeVBhdGhTdWZmaXg6Ii5uZ2ZhY3RvcnkifSxTaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9jb21waWxlcj10LHRoaXMuX2NvbmZpZz1lfHxDaX1yZXR1cm4gdC5wcm90b3R5cGUubG9hZD1mdW5jdGlvbih0KXtyZXR1cm4hVm8mJnRoaXMuX2NvbXBpbGVyIGluc3RhbmNlb2YgV28/dGhpcy5sb2FkRmFjdG9yeSh0KTp0aGlzLmxvYWRBbmRDb21waWxlKHQpfSx0LnByb3RvdHlwZS5sb2FkQW5kQ29tcGlsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG89T2JqZWN0KHIuX19yZWFkKSh0LnNwbGl0KCIjIiksMiksaT1vWzBdLGE9b1sxXTtyZXR1cm4gdm9pZCAwPT09YSYmKGE9ImRlZmF1bHQiKSxuKCJ6bjhQIikoaSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIHRbYV19KSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIEVpKHQsaSxhKX0pKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gZS5fY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpfSkpfSx0LnByb3RvdHlwZS5sb2FkRmFjdG9yeT1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3Qoci5fX3JlYWQpKHQuc3BsaXQoIiMiKSwyKSxvPWVbMF0saT1lWzFdLGE9Ik5nRmFjdG9yeSI7cmV0dXJuIHZvaWQgMD09PWkmJihpPSJkZWZhdWx0IixhPSIiKSxuKCJ6bjhQIikodGhpcy5fY29uZmlnLmZhY3RvcnlQYXRoUHJlZml4K28rdGhpcy5fY29uZmlnLmZhY3RvcnlQYXRoU3VmZml4KS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gdFtpK2FdfSkpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBFaSh0LG8saSl9KSl9LHR9KCk7ZnVuY3Rpb24gRWkodCxlLG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IGZpbmQgJyIrbisiJyBpbiAnIitlKyInIik7cmV0dXJuIHR9dmFyIE9pPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dGhpcy5uYW1lPXQsdGhpcy5jYWxsYmFjaz1lfX0oKSxUaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubGlzdGVuZXJzPVtdLHRoaXMucGFyZW50PW51bGwsdGhpcy5fZGVidWdDb250ZXh0PW4sdGhpcy5uYXRpdmVOb2RlPXQsZSYmZSBpbnN0YW5jZW9mIFBpJiZlLmFkZENoaWxkKHRoaXMpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImluamVjdG9yIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5pbmplY3Rvcn0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudEluc3RhbmNlIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5jb250ZXh0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVmZXJlbmNlcyIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z0NvbnRleHQucmVmZXJlbmNlc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInByb3ZpZGVyVG9rZW5zIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RlYnVnQ29udGV4dC5wcm92aWRlclRva2Vuc30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0fSgpLFBpPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUsbixyKXx8dGhpcztyZXR1cm4gby5wcm9wZXJ0aWVzPXt9LG8uYXR0cmlidXRlcz17fSxvLmNsYXNzZXM9e30sby5zdHlsZXM9e30sby5jaGlsZE5vZGVzPVtdLG8ubmF0aXZlRWxlbWVudD1lLG99cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5hZGRDaGlsZD1mdW5jdGlvbih0KXt0JiYodGhpcy5jaGlsZE5vZGVzLnB1c2godCksdC5wYXJlbnQ9dGhpcyl9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09ZSYmKHQucGFyZW50PW51bGwsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShlLDEpKX0sZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGRyZW5BZnRlcj1mdW5jdGlvbih0LGUpe3ZhciBuLG89dGhpcyxpPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpOy0xIT09aSYmKChuPXRoaXMuY2hpbGROb2Rlcykuc3BsaWNlLmFwcGx5KG4sT2JqZWN0KHIuX19zcHJlYWQpKFtpKzEsMF0sZSkpLGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxkKGUpLHQucGFyZW50PW99KSkpfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNoaWxkTm9kZXMuaW5kZXhPZih0KTstMT09PW4/dGhpcy5hZGRDaGlsZChlKTooZS5wYXJlbnQmJmUucGFyZW50LnJlbW92ZUNoaWxkKGUpLGUucGFyZW50PXRoaXMsdGhpcy5jaGlsZE5vZGVzLnNwbGljZShuLDAsZSkpfSxlLnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5xdWVyeUFsbCh0KVswXXx8bnVsbH0sZS5wcm90b3R5cGUucXVlcnlBbGw9ZnVuY3Rpb24odCl7dmFyIGU9W107cmV0dXJuIGZ1bmN0aW9uIHQoZSxuLHIpe2UuY2hpbGROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihlKXtlIGluc3RhbmNlb2YgUGkmJihuKGUpJiZyLnB1c2goZSksdChlLG4scikpfSkpfSh0aGlzLHQsZSksZX0sZS5wcm90b3R5cGUucXVlcnlBbGxOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gZnVuY3Rpb24gdChlLG4scil7ZSBpbnN0YW5jZW9mIFBpJiZlLmNoaWxkTm9kZXMuZm9yRWFjaCgoZnVuY3Rpb24oZSl7bihlKSYmci5wdXNoKGUpLGUgaW5zdGFuY2VvZiBQaSYmdChlLG4scil9KSl9KHRoaXMsdCxlKSxlfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZX0pKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS50cmlnZ2VyRXZlbnRIYW5kbGVyPWZ1bmN0aW9uKHQsZSl7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24obil7bi5uYW1lPT10JiZuLmNhbGxiYWNrKGUpfSkpfSxlfShUaSksa2k9bmV3IE1hcCxBaT1mdW5jdGlvbih0KXtyZXR1cm4ga2kuZ2V0KHQpfHxudWxsfTtmdW5jdGlvbiBJaSh0KXtraS5zZXQodC5uYXRpdmVOb2RlLHQpfXZhciBSaT1naShudWxsLCJjb3JlIixbe3Byb3ZpZGU6Tm8sdXNlVmFsdWU6InVua25vd24ifSx7cHJvdmlkZTp5aSxkZXBzOltNZV19LHtwcm92aWRlOmZpLGRlcHM6W119LHtwcm92aWRlOlVvLGRlcHM6W119XSk7ZnVuY3Rpb24gTWkoKXtyZXR1cm4ga259ZnVuY3Rpb24gamkoKXtyZXR1cm4gQW59ZnVuY3Rpb24gTmkodCl7cmV0dXJuIHQ/KFZvJiZFbyh0KSx0KTpTb31mdW5jdGlvbiBEaSh0KXt2YXIgZT1bXTtyZXR1cm4gdC5vblN0YWJsZS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7Zm9yKDtlLmxlbmd0aDspZS5wb3AoKSgpfSkpLGZ1bmN0aW9uKHQpe2UucHVzaCh0KX19dmFyIFVpPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe319KCk7ZnVuY3Rpb24gTGkodCxlLG4scixvLGkpe3R8PTE7dmFyIGE9Y3IoZSk7cmV0dXJue25vZGVJbmRleDotMSxwYXJlbnQ6bnVsbCxyZW5kZXJQYXJlbnQ6bnVsbCxiaW5kaW5nSW5kZXg6LTEsb3V0cHV0SW5kZXg6LTEsZmxhZ3M6dCxjaGVja0luZGV4Oi0xLGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmEubWF0Y2hlZFF1ZXJpZXMsbWF0Y2hlZFF1ZXJ5SWRzOmEubWF0Y2hlZFF1ZXJ5SWRzLHJlZmVyZW5jZXM6YS5yZWZlcmVuY2VzLG5nQ29udGVudEluZGV4Om4sY2hpbGRDb3VudDpyLGJpbmRpbmdzOltdLGJpbmRpbmdGbGFnczowLG91dHB1dHM6W10sZWxlbWVudDp7bnM6bnVsbCxuYW1lOm51bGwsYXR0cnM6bnVsbCx0ZW1wbGF0ZTppP2RyKGkpOm51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVsbCxjb21wb25lbnRWaWV3Om51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOm51bGwscHVibGljUHJvdmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6b3x8cW59LHByb3ZpZGVyOm51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIFZpKHQsZSxuLG8saSxhLHUsbCxzLGMsZixoKXt2YXIgcDt2b2lkIDA9PT11JiYodT1bXSksY3x8KGM9cW4pO3ZhciBkPWNyKG4pLGc9ZC5tYXRjaGVkUXVlcmllcyx2PWQucmVmZXJlbmNlcyx5PWQubWF0Y2hlZFF1ZXJ5SWRzLG09bnVsbCxfPW51bGw7YSYmKG09KHA9T2JqZWN0KHIuX19yZWFkKShicihhKSwyKSlbMF0sXz1wWzFdKSxsPWx8fFtdO2Zvcih2YXIgdz1uZXcgQXJyYXkobC5sZW5ndGgpLGI9MDtiPGwubGVuZ3RoO2IrKyl7dmFyIHg9T2JqZWN0KHIuX19yZWFkKShsW2JdLDMpLEM9eFswXSxTPXhbMV0sRT14WzJdLE89T2JqZWN0KHIuX19yZWFkKShicihTKSwyKSxUPU9bMF0sUD1PWzFdLGs9dm9pZCAwLEE9dm9pZCAwO3N3aXRjaCgxNSZDKXtjYXNlIDQ6QT1FO2JyZWFrO2Nhc2UgMTpjYXNlIDg6az1FfXdbYl09e2ZsYWdzOkMsbnM6VCxuYW1lOlAsbm9uTWluaWZpZWROYW1lOlAsc2VjdXJpdHlDb250ZXh0Omssc3VmZml4OkF9fXM9c3x8W107dmFyIEk9bmV3IEFycmF5KHMubGVuZ3RoKTtmb3IoYj0wO2I8cy5sZW5ndGg7YisrKXt2YXIgUj1PYmplY3Qoci5fX3JlYWQpKHNbYl0sMik7SVtiXT17dHlwZTowLHRhcmdldDpSWzBdLGV2ZW50TmFtZTpSWzFdLHByb3BOYW1lOm51bGx9fXZhciBNPSh1PXV8fFtdKS5tYXAoKGZ1bmN0aW9uKHQpe3ZhciBlPU9iamVjdChyLl9fcmVhZCkodCwyKSxuPWVbMF0sbz1lWzFdLGk9T2JqZWN0KHIuX19yZWFkKShicihuKSwyKTtyZXR1cm5baVswXSxpWzFdLG9dfSkpO3JldHVybiBoPWZ1bmN0aW9uKHQpe2lmKHQmJnQuaWQ9PT1Lbil7dmFyIGU9bnVsbCE9dC5lbmNhcHN1bGF0aW9uJiZ0LmVuY2Fwc3VsYXRpb24hPT1adC5Ob25lfHx0LnN0eWxlcy5sZW5ndGh8fE9iamVjdC5rZXlzKHQuZGF0YSkubGVuZ3RoO3QuaWQ9ZT8iYyIrJG4rKzpZbn1yZXR1cm4gdCYmdC5pZD09PVluJiYodD1udWxsKSx0fHxudWxsfShoKSxmJiYoZXw9MzM1NTQ0MzIpLHtub2RlSW5kZXg6LTEscGFyZW50Om51bGwscmVuZGVyUGFyZW50Om51bGwsYmluZGluZ0luZGV4Oi0xLG91dHB1dEluZGV4Oi0xLGNoZWNrSW5kZXg6dCxmbGFnczplfD0xLGNoaWxkRmxhZ3M6MCxkaXJlY3RDaGlsZEZsYWdzOjAsY2hpbGRNYXRjaGVkUXVlcmllczowLG1hdGNoZWRRdWVyaWVzOmcsbWF0Y2hlZFF1ZXJ5SWRzOnkscmVmZXJlbmNlczp2LG5nQ29udGVudEluZGV4Om8sY2hpbGRDb3VudDppLGJpbmRpbmdzOncsYmluZGluZ0ZsYWdzOnhyKHcpLG91dHB1dHM6SSxlbGVtZW50OntuczptLG5hbWU6XyxhdHRyczpNLHRlbXBsYXRlOm51bGwsY29tcG9uZW50UHJvdmlkZXI6bnVsbCxjb21wb25lbnRWaWV3OmZ8fG51bGwsY29tcG9uZW50UmVuZGVyZXJUeXBlOmgscHVibGljUHJvdmlkZXJzOm51bGwsYWxsUHJvdmlkZXJzOm51bGwsaGFuZGxlRXZlbnQ6Y3x8cW59LHByb3ZpZGVyOm51bGwsdGV4dDpudWxsLHF1ZXJ5Om51bGwsbmdDb250ZW50Om51bGx9fWZ1bmN0aW9uIEhpKHQsZSxuKXt2YXIgbyxpPW4uZWxlbWVudCxhPXQucm9vdC5zZWxlY3Rvck9yTm9kZSx1PXQucmVuZGVyZXI7aWYodC5wYXJlbnR8fCFhKXtvPWkubmFtZT91LmNyZWF0ZUVsZW1lbnQoaS5uYW1lLGkubnMpOnUuY3JlYXRlQ29tbWVudCgiIik7dmFyIGw9aHIodCxlLG4pO2wmJnUuYXBwZW5kQ2hpbGQobCxvKX1lbHNlIG89dS5zZWxlY3RSb290RWxlbWVudChhLCEhaS5jb21wb25lbnRSZW5kZXJlclR5cGUmJmkuY29tcG9uZW50UmVuZGVyZXJUeXBlLmVuY2Fwc3VsYXRpb249PT1adC5TaGFkb3dEb20pO2lmKGkuYXR0cnMpZm9yKHZhciBzPTA7czxpLmF0dHJzLmxlbmd0aDtzKyspe3ZhciBjPU9iamVjdChyLl9fcmVhZCkoaS5hdHRyc1tzXSwzKTt1LnNldEF0dHJpYnV0ZShvLGNbMV0sY1syXSxjWzBdKX1yZXR1cm4gb31mdW5jdGlvbiB6aSh0LGUsbixyKXtmb3IodmFyIG89MDtvPG4ub3V0cHV0cy5sZW5ndGg7bysrKXt2YXIgaT1uLm91dHB1dHNbb10sYT1GaSh0LG4ubm9kZUluZGV4LChmPWkuZXZlbnROYW1lLChjPWkudGFyZ2V0KT9jKyI6IitmOmYpKSx1PWkudGFyZ2V0LGw9dDsiY29tcG9uZW50Ij09PWkudGFyZ2V0JiYodT1udWxsLGw9ZSk7dmFyIHM9bC5yZW5kZXJlci5saXN0ZW4odXx8cixpLmV2ZW50TmFtZSxhKTt0LmRpc3Bvc2FibGVzW24ub3V0cHV0SW5kZXgrb109c312YXIgYyxmfWZ1bmN0aW9uIEZpKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG9yKHQsZSxuLHIpfX1mdW5jdGlvbiBCaSh0LGUsbixyKXtpZighdHIodCxlLG4scikpcmV0dXJuITE7dmFyIG89ZS5iaW5kaW5nc1tuXSxpPXpuKHQsZS5ub2RlSW5kZXgpLGE9aS5yZW5kZXJFbGVtZW50LHU9by5uYW1lO3N3aXRjaCgxNSZvLmZsYWdzKXtjYXNlIDE6IWZ1bmN0aW9uKHQsZSxuLHIsbyxpKXt2YXIgYT1lLnNlY3VyaXR5Q29udGV4dCx1PWE/dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShhLGkpOmk7dT1udWxsIT11P3UudG9TdHJpbmcoKTpudWxsO3ZhciBsPXQucmVuZGVyZXI7bnVsbCE9aT9sLnNldEF0dHJpYnV0ZShuLG8sdSxyKTpsLnJlbW92ZUF0dHJpYnV0ZShuLG8scil9KHQsbyxhLG8ubnMsdSxyKTticmVhaztjYXNlIDI6IWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXQucmVuZGVyZXI7cj9vLmFkZENsYXNzKGUsbik6by5yZW1vdmVDbGFzcyhlLG4pfSh0LGEsdSxyKTticmVhaztjYXNlIDQ6IWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9dC5yb290LnNhbml0aXplci5zYW5pdGl6ZShDZS5TVFlMRSxvKTtpZihudWxsIT1pKXtpPWkudG9TdHJpbmcoKTt2YXIgYT1lLnN1ZmZpeDtudWxsIT1hJiYoaSs9YSl9ZWxzZSBpPW51bGw7dmFyIHU9dC5yZW5kZXJlcjtudWxsIT1pP3Uuc2V0U3R5bGUobixyLGkpOnUucmVtb3ZlU3R5bGUobixyKX0odCxvLGEsdSxyKTticmVhaztjYXNlIDg6IWZ1bmN0aW9uKHQsZSxuLHIsbyl7dmFyIGk9ZS5zZWN1cml0eUNvbnRleHQsYT1pP3Qucm9vdC5zYW5pdGl6ZXIuc2FuaXRpemUoaSxvKTpvO3QucmVuZGVyZXIuc2V0UHJvcGVydHkobixyLGEpfSgzMzU1NDQzMiZlLmZsYWdzJiYzMiZvLmZsYWdzP2kuY29tcG9uZW50Vmlldzp0LG8sYSx1LHIpfXJldHVybiEwfWZ1bmN0aW9uIFppKHQpe2Zvcih2YXIgZT10LmRlZi5ub2RlTWF0Y2hlZFF1ZXJpZXM7dC5wYXJlbnQmJnNyKHQpOyl7dmFyIG49dC5wYXJlbnROb2RlRGVmO3Q9dC5wYXJlbnQ7Zm9yKHZhciByPW4ubm9kZUluZGV4K24uY2hpbGRDb3VudCxvPTA7bzw9cjtvKyspNjcxMDg4NjQmKGk9dC5kZWYubm9kZXNbb10pLmZsYWdzJiY1MzY4NzA5MTImaS5mbGFncyYmKGkucXVlcnkuZmlsdGVySWQmZSk9PT1pLnF1ZXJ5LmZpbHRlcklkJiZabih0LG8pLnNldERpcnR5KCksISgxJmkuZmxhZ3MmJm8raS5jaGlsZENvdW50PG4ubm9kZUluZGV4KSYmNjcxMDg4NjQmaS5jaGlsZEZsYWdzJiY1MzY4NzA5MTImaS5jaGlsZEZsYWdzfHwobys9aS5jaGlsZENvdW50KX1pZigxMzQyMTc3MjgmdC5kZWYubm9kZUZsYWdzKWZvcihvPTA7bzx0LmRlZi5ub2Rlcy5sZW5ndGg7bysrKXt2YXIgaTsxMzQyMTc3MjgmKGk9dC5kZWYubm9kZXNbb10pLmZsYWdzJiY1MzY4NzA5MTImaS5mbGFncyYmWm4odCxvKS5zZXREaXJ0eSgpLG8rPWkuY2hpbGRDb3VudH19ZnVuY3Rpb24gR2kodCxlKXt2YXIgbj1abih0LGUubm9kZUluZGV4KTtpZihuLmRpcnR5KXt2YXIgcixvPXZvaWQgMDtpZig2NzEwODg2NCZlLmZsYWdzKXt2YXIgaT1lLnBhcmVudC5wYXJlbnQ7bz1xaSh0LGkubm9kZUluZGV4LGkubm9kZUluZGV4K2kuY2hpbGRDb3VudCxlLnF1ZXJ5LFtdKSxyPUZuKHQsZS5wYXJlbnQubm9kZUluZGV4KS5pbnN0YW5jZX1lbHNlIDEzNDIxNzcyOCZlLmZsYWdzJiYobz1xaSh0LDAsdC5kZWYubm9kZXMubGVuZ3RoLTEsZS5xdWVyeSxbXSkscj10LmNvbXBvbmVudCk7bi5yZXNldChvKTtmb3IodmFyIGE9ZS5xdWVyeS5iaW5kaW5ncyx1PSExLGw9MDtsPGEubGVuZ3RoO2wrKyl7dmFyIHM9YVtsXSxjPXZvaWQgMDtzd2l0Y2gocy5iaW5kaW5nVHlwZSl7Y2FzZSAwOmM9bi5maXJzdDticmVhaztjYXNlIDE6Yz1uLHU9ITB9cltzLnByb3BOYW1lXT1jfXUmJm4ubm90aWZ5T25DaGFuZ2VzKCl9fWZ1bmN0aW9uIHFpKHQsZSxuLHIsbyl7Zm9yKHZhciBpPWU7aTw9bjtpKyspe3ZhciBhPXQuZGVmLm5vZGVzW2ldLHU9YS5tYXRjaGVkUXVlcmllc1tyLmlkXTtpZihudWxsIT11JiZvLnB1c2goV2kodCxhLHUpKSwxJmEuZmxhZ3MmJmEuZWxlbWVudC50ZW1wbGF0ZSYmKGEuZWxlbWVudC50ZW1wbGF0ZS5ub2RlTWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCk9PT1yLmZpbHRlcklkKXt2YXIgbD16bih0LGkpO2lmKChhLmNoaWxkTWF0Y2hlZFF1ZXJpZXMmci5maWx0ZXJJZCk9PT1yLmZpbHRlcklkJiYocWkodCxpKzEsaSthLmNoaWxkQ291bnQscixvKSxpKz1hLmNoaWxkQ291bnQpLDE2Nzc3MjE2JmEuZmxhZ3MpZm9yKHZhciBzPWwudmlld0NvbnRhaW5lci5fZW1iZWRkZWRWaWV3cyxjPTA7YzxzLmxlbmd0aDtjKyspe3ZhciBmPXNbY10saD1pcihmKTtoJiZoPT09bCYmcWkoZiwwLGYuZGVmLm5vZGVzLmxlbmd0aC0xLHIsbyl9dmFyIHA9bC50ZW1wbGF0ZS5fcHJvamVjdGVkVmlld3M7aWYocClmb3IoYz0wO2M8cC5sZW5ndGg7YysrKXt2YXIgZD1wW2NdO3FpKGQsMCxkLmRlZi5ub2Rlcy5sZW5ndGgtMSxyLG8pfX0oYS5jaGlsZE1hdGNoZWRRdWVyaWVzJnIuZmlsdGVySWQpIT09ci5maWx0ZXJJZCYmKGkrPWEuY2hpbGRDb3VudCl9cmV0dXJuIG99ZnVuY3Rpb24gV2kodCxlLG4pe2lmKG51bGwhPW4pc3dpdGNoKG4pe2Nhc2UgMTpyZXR1cm4gem4odCxlLm5vZGVJbmRleCkucmVuZGVyRWxlbWVudDtjYXNlIDA6cmV0dXJuIG5ldyBsbih6bih0LGUubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50KTtjYXNlIDI6cmV0dXJuIHpuKHQsZS5ub2RlSW5kZXgpLnRlbXBsYXRlO2Nhc2UgMzpyZXR1cm4gem4odCxlLm5vZGVJbmRleCkudmlld0NvbnRhaW5lcjtjYXNlIDQ6cmV0dXJuIEZuKHQsZS5ub2RlSW5kZXgpLmluc3RhbmNlfX1mdW5jdGlvbiBRaSh0LGUsbil7dmFyIHI9aHIodCxlLG4pO3ImJnlyKHQsbi5uZ0NvbnRlbnQuaW5kZXgsMSxyLG51bGwsdm9pZCAwKX1mdW5jdGlvbiBLaSh0LGUsbil7Zm9yKHZhciByPW5ldyBBcnJheShuLmxlbmd0aC0xKSxvPTE7bzxuLmxlbmd0aDtvKyspcltvLTFdPXtmbGFnczo4LG5hbWU6bnVsbCxuczpudWxsLG5vbk1pbmlmaWVkTmFtZTpudWxsLHNlY3VyaXR5Q29udGV4dDpudWxsLHN1ZmZpeDpuW29dfTtyZXR1cm57bm9kZUluZGV4Oi0xLHBhcmVudDpudWxsLHJlbmRlclBhcmVudDpudWxsLGJpbmRpbmdJbmRleDotMSxvdXRwdXRJbmRleDotMSxjaGVja0luZGV4OnQsZmxhZ3M6MixjaGlsZEZsYWdzOjAsZGlyZWN0Q2hpbGRGbGFnczowLGNoaWxkTWF0Y2hlZFF1ZXJpZXM6MCxtYXRjaGVkUXVlcmllczp7fSxtYXRjaGVkUXVlcnlJZHM6MCxyZWZlcmVuY2VzOnt9LG5nQ29udGVudEluZGV4OmUsY2hpbGRDb3VudDowLGJpbmRpbmdzOnIsYmluZGluZ0ZsYWdzOjgsb3V0cHV0czpbXSxlbGVtZW50Om51bGwscHJvdmlkZXI6bnVsbCx0ZXh0OntwcmVmaXg6blswXX0scXVlcnk6bnVsbCxuZ0NvbnRlbnQ6bnVsbH19ZnVuY3Rpb24gWWkodCxlLG4pe3ZhciByLG89dC5yZW5kZXJlcjtyPW8uY3JlYXRlVGV4dChuLnRleHQucHJlZml4KTt2YXIgaT1ocih0LGUsbik7cmV0dXJuIGkmJm8uYXBwZW5kQ2hpbGQoaSxyKSx7cmVuZGVyVGV4dDpyfX1mdW5jdGlvbiBKaSh0LGUpe3JldHVybihudWxsIT10P3QudG9TdHJpbmcoKToiIikrZS5zdWZmaXh9ZnVuY3Rpb24gJGkodCxlLG4scil7Zm9yKHZhciBvPTAsaT0wLGE9MCx1PTAsbD0wLHM9bnVsbCxjPW51bGwsZj0hMSxoPSExLHA9bnVsbCxkPTA7ZDxlLmxlbmd0aDtkKyspe3ZhciBnPWVbZF07aWYoZy5ub2RlSW5kZXg9ZCxnLnBhcmVudD1zLGcuYmluZGluZ0luZGV4PW8sZy5vdXRwdXRJbmRleD1pLGcucmVuZGVyUGFyZW50PWMsYXw9Zy5mbGFncyxsfD1nLm1hdGNoZWRRdWVyeUlkcyxnLmVsZW1lbnQpe3ZhciB2PWcuZWxlbWVudDt2LnB1YmxpY1Byb3ZpZGVycz1zP3MuZWxlbWVudC5wdWJsaWNQcm92aWRlcnM6T2JqZWN0LmNyZWF0ZShudWxsKSx2LmFsbFByb3ZpZGVycz12LnB1YmxpY1Byb3ZpZGVycyxmPSExLGg9ITEsZy5lbGVtZW50LnRlbXBsYXRlJiYobHw9Zy5lbGVtZW50LnRlbXBsYXRlLm5vZGVNYXRjaGVkUXVlcmllcyl9aWYodGEocyxnLGUubGVuZ3RoKSxvKz1nLmJpbmRpbmdzLmxlbmd0aCxpKz1nLm91dHB1dHMubGVuZ3RoLCFjJiYzJmcuZmxhZ3MmJihwPWcpLDIwMjI0JmcuZmxhZ3Mpe2Z8fChmPSEwLHMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnM9T2JqZWN0LmNyZWF0ZShzLmVsZW1lbnQucHVibGljUHJvdmlkZXJzKSxzLmVsZW1lbnQuYWxsUHJvdmlkZXJzPXMuZWxlbWVudC5wdWJsaWNQcm92aWRlcnMpO3ZhciB5PTAhPSgzMjc2OCZnLmZsYWdzKTswPT0oODE5MiZnLmZsYWdzKXx8eT9zLmVsZW1lbnQucHVibGljUHJvdmlkZXJzW1FuKGcucHJvdmlkZXIudG9rZW4pXT1nOihofHwoaD0hMCxzLmVsZW1lbnQuYWxsUHJvdmlkZXJzPU9iamVjdC5jcmVhdGUocy5lbGVtZW50LnB1YmxpY1Byb3ZpZGVycykpLHMuZWxlbWVudC5hbGxQcm92aWRlcnNbUW4oZy5wcm92aWRlci50b2tlbildPWcpLHkmJihzLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXI9Zyl9aWYocz8ocy5jaGlsZEZsYWdzfD1nLmZsYWdzLHMuZGlyZWN0Q2hpbGRGbGFnc3w9Zy5mbGFncyxzLmNoaWxkTWF0Y2hlZFF1ZXJpZXN8PWcubWF0Y2hlZFF1ZXJ5SWRzLGcuZWxlbWVudCYmZy5lbGVtZW50LnRlbXBsYXRlJiYocy5jaGlsZE1hdGNoZWRRdWVyaWVzfD1nLmVsZW1lbnQudGVtcGxhdGUubm9kZU1hdGNoZWRRdWVyaWVzKSk6dXw9Zy5mbGFncyxnLmNoaWxkQ291bnQ+MClzPWcsWGkoZyl8fChjPWcpO2Vsc2UgZm9yKDtzJiZkPT09cy5ub2RlSW5kZXgrcy5jaGlsZENvdW50Oyl7dmFyIG09cy5wYXJlbnQ7bSYmKG0uY2hpbGRGbGFnc3w9cy5jaGlsZEZsYWdzLG0uY2hpbGRNYXRjaGVkUXVlcmllc3w9cy5jaGlsZE1hdGNoZWRRdWVyaWVzKSxjPShzPW0pJiZYaShzKT9zLnJlbmRlclBhcmVudDpzfX1yZXR1cm57ZmFjdG9yeTpudWxsLG5vZGVGbGFnczphLHJvb3ROb2RlRmxhZ3M6dSxub2RlTWF0Y2hlZFF1ZXJpZXM6bCxmbGFnczp0LG5vZGVzOmUsdXBkYXRlRGlyZWN0aXZlczpufHxxbix1cGRhdGVSZW5kZXJlcjpyfHxxbixoYW5kbGVFdmVudDpmdW5jdGlvbih0LG4scixvKXtyZXR1cm4gZVtuXS5lbGVtZW50LmhhbmRsZUV2ZW50KHQscixvKX0sYmluZGluZ0NvdW50Om8sb3V0cHV0Q291bnQ6aSxsYXN0UmVuZGVyUm9vdE5vZGU6cH19ZnVuY3Rpb24gWGkodCl7cmV0dXJuIDAhPSgxJnQuZmxhZ3MpJiZudWxsPT09dC5lbGVtZW50Lm5hbWV9ZnVuY3Rpb24gdGEodCxlLG4pe3ZhciByPWUuZWxlbWVudCYmZS5lbGVtZW50LnRlbXBsYXRlO2lmKHIpe2lmKCFyLmxhc3RSZW5kZXJSb290Tm9kZSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IEVtYmVkZGVkIHRlbXBsYXRlcyB3aXRob3V0IG5vZGVzIGFyZSBub3QgYWxsb3dlZCEiKTtpZihyLmxhc3RSZW5kZXJSb290Tm9kZSYmMTY3NzcyMTYmci5sYXN0UmVuZGVyUm9vdE5vZGUuZmxhZ3MpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBMYXN0IHJvb3Qgbm9kZSBvZiBhIHRlbXBsYXRlIGNhbid0IGhhdmUgZW1iZWRkZWQgdmlld3MsIGF0IGluZGV4ICIrZS5ub2RlSW5kZXgrIiEiKX1pZigyMDIyNCZlLmZsYWdzJiYwPT0oMSYodD90LmZsYWdzOjApKSl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IFN0YXRpY1Byb3ZpZGVyL0RpcmVjdGl2ZSBub2RlcyBuZWVkIHRvIGJlIGNoaWxkcmVuIG9mIGVsZW1lbnRzIG9yIGFuY2hvcnMsIGF0IGluZGV4ICIrZS5ub2RlSW5kZXgrIiEiKTtpZihlLnF1ZXJ5KXtpZig2NzEwODg2NCZlLmZsYWdzJiYoIXR8fDA9PSgxNjM4NCZ0LmZsYWdzKSkpdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIFN0YXRlOiBDb250ZW50IFF1ZXJ5IG5vZGVzIG5lZWQgdG8gYmUgY2hpbGRyZW4gb2YgZGlyZWN0aXZlcywgYXQgaW5kZXggIitlLm5vZGVJbmRleCsiISIpO2lmKDEzNDIxNzcyOCZlLmZsYWdzJiZ0KXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBTdGF0ZTogVmlldyBRdWVyeSBub2RlcyBoYXZlIHRvIGJlIHRvcCBsZXZlbCBub2RlcywgYXQgaW5kZXggIitlLm5vZGVJbmRleCsiISIpfWlmKGUuY2hpbGRDb3VudCl7dmFyIG89dD90Lm5vZGVJbmRleCt0LmNoaWxkQ291bnQ6bi0xO2lmKGUubm9kZUluZGV4PD1vJiZlLm5vZGVJbmRleCtlLmNoaWxkQ291bnQ+byl0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgU3RhdGU6IGNoaWxkQ291bnQgb2Ygbm9kZSBsZWFkcyBvdXRzaWRlIG9mIHBhcmVudCwgYXQgaW5kZXggIitlLm5vZGVJbmRleCsiISIpfX1mdW5jdGlvbiBlYSh0LGUsbixyKXt2YXIgbz1vYSh0LnJvb3QsdC5yZW5kZXJlcix0LGUsbik7cmV0dXJuIGlhKG8sdC5jb21wb25lbnQsciksYWEobyksb31mdW5jdGlvbiBuYSh0LGUsbil7dmFyIHI9b2EodCx0LnJlbmRlcmVyLG51bGwsbnVsbCxlKTtyZXR1cg=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?1?1",
"type": "binary",
"value": "base64:biBpYShyLG4sbiksYWEocikscn1mdW5jdGlvbiByYSh0LGUsbixyKXt2YXIgbyxpPWUuZWxlbWVudC5jb21wb25lbnRSZW5kZXJlclR5cGU7cmV0dXJuIG89aT90LnJvb3QucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHIsaSk6dC5yb290LnJlbmRlcmVyLG9hKHQucm9vdCxvLHQsZS5lbGVtZW50LmNvbXBvbmVudFByb3ZpZGVyLG4pfWZ1bmN0aW9uIG9hKHQsZSxuLHIsbyl7dmFyIGk9bmV3IEFycmF5KG8ubm9kZXMubGVuZ3RoKSxhPW8ub3V0cHV0Q291bnQ/bmV3IEFycmF5KG8ub3V0cHV0Q291bnQpOm51bGw7cmV0dXJue2RlZjpvLHBhcmVudDpuLHZpZXdDb250YWluZXJQYXJlbnQ6bnVsbCxwYXJlbnROb2RlRGVmOnIsY29udGV4dDpudWxsLGNvbXBvbmVudDpudWxsLG5vZGVzOmksc3RhdGU6MTMscm9vdDp0LHJlbmRlcmVyOmUsb2xkVmFsdWVzOm5ldyBBcnJheShvLmJpbmRpbmdDb3VudCksZGlzcG9zYWJsZXM6YSxpbml0SW5kZXg6LTF9fWZ1bmN0aW9uIGlhKHQsZSxuKXt0LmNvbXBvbmVudD1lLHQuY29udGV4dD1ufWZ1bmN0aW9uIGFhKHQpe3ZhciBlO2xyKHQpJiYoZT16bih0LnBhcmVudCx0LnBhcmVudE5vZGVEZWYucGFyZW50Lm5vZGVJbmRleCkucmVuZGVyRWxlbWVudCk7Zm9yKHZhciBuPXQuZGVmLHI9dC5ub2RlcyxvPTA7bzxuLm5vZGVzLmxlbmd0aDtvKyspe3ZhciBpPW4ubm9kZXNbb107R24uc2V0Q3VycmVudE5vZGUodCxvKTt2YXIgYT12b2lkIDA7c3dpdGNoKDIwMTM0NzA2NyZpLmZsYWdzKXtjYXNlIDE6dmFyIHU9SGkodCxlLGkpLGw9dm9pZCAwO2lmKDMzNTU0NDMyJmkuZmxhZ3Mpe3ZhciBzPWRyKGkuZWxlbWVudC5jb21wb25lbnRWaWV3KTtsPUduLmNyZWF0ZUNvbXBvbmVudFZpZXcodCxpLHMsdSl9emkodCxsLGksdSksYT17cmVuZGVyRWxlbWVudDp1LGNvbXBvbmVudFZpZXc6bCx2aWV3Q29udGFpbmVyOm51bGwsdGVtcGxhdGU6aS5lbGVtZW50LnRlbXBsYXRlP3pyKHQsaSk6dm9pZCAwfSwxNjc3NzIxNiZpLmZsYWdzJiYoYS52aWV3Q29udGFpbmVyPVVyKHQsaSxhKSk7YnJlYWs7Y2FzZSAyOmE9WWkodCxlLGkpO2JyZWFrO2Nhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSAyNTY6KGE9cltvXSl8fDQwOTYmaS5mbGFnc3x8KGE9e2luc3RhbmNlOmlvKHQsaSl9KTticmVhaztjYXNlIDE2OmE9e2luc3RhbmNlOmFvKHQsaSl9O2JyZWFrO2Nhc2UgMTYzODQ6KGE9cltvXSl8fChhPXtpbnN0YW5jZTp1byh0LGkpfSksMzI3NjgmaS5mbGFncyYmaWEoem4odCxpLnBhcmVudC5ub2RlSW5kZXgpLmNvbXBvbmVudFZpZXcsYS5pbnN0YW5jZSxhLmluc3RhbmNlKTticmVhaztjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6YT17dmFsdWU6dm9pZCAwfTticmVhaztjYXNlIDY3MTA4ODY0OmNhc2UgMTM0MjE3NzI4OmE9bmV3IFBvO2JyZWFrO2Nhc2UgODpRaSh0LGUsaSksYT12b2lkIDB9cltvXT1hfWdhKHQsZGEuQ3JlYXRlVmlld05vZGVzKSxfYSh0LDIwMTMyNjU5MiwyNjg0MzU0NTYsMCl9ZnVuY3Rpb24gdWEodCl7Y2EodCksR24udXBkYXRlRGlyZWN0aXZlcyh0LDEpLHZhKHQsZGEuQ2hlY2tOb0NoYW5nZXMpLEduLnVwZGF0ZVJlbmRlcmVyKHQsMSksZ2EodCxkYS5DaGVja05vQ2hhbmdlcyksdC5zdGF0ZSY9LTk3fWZ1bmN0aW9uIGxhKHQpezEmdC5zdGF0ZT8odC5zdGF0ZSY9LTIsdC5zdGF0ZXw9Mik6dC5zdGF0ZSY9LTMsTG4odCwwLDI1NiksY2EodCksR24udXBkYXRlRGlyZWN0aXZlcyh0LDApLHZhKHQsZGEuQ2hlY2tBbmRVcGRhdGUpLF9hKHQsNjcxMDg4NjQsNTM2ODcwOTEyLDApO3ZhciBlPUxuKHQsMjU2LDUxMik7dm8odCwyMDk3MTUyfChlPzEwNDg1NzY6MCkpLEduLnVwZGF0ZVJlbmRlcmVyKHQsMCksZ2EodCxkYS5DaGVja0FuZFVwZGF0ZSksX2EodCwxMzQyMTc3MjgsNTM2ODcwOTEyLDApLHZvKHQsODM4ODYwOHwoKGU9TG4odCw1MTIsNzY4KSk/NDE5NDMwNDowKSksMiZ0LmRlZi5mbGFncyYmKHQuc3RhdGUmPS05KSx0LnN0YXRlJj0tOTcsTG4odCw3NjgsMTAyNCl9ZnVuY3Rpb24gc2EodCxlLG4sbyxpLGEsdSxsLHMsYyxmLGgscCl7cmV0dXJuIDA9PT1uP2Z1bmN0aW9uKHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmKXtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGwscyxjLGYpe3ZhciBoPWUuYmluZGluZ3MubGVuZ3RoLHA9ITE7cmV0dXJuIGg+MCYmQmkodCxlLDAsbikmJihwPSEwKSxoPjEmJkJpKHQsZSwxLHIpJiYocD0hMCksaD4yJiZCaSh0LGUsMixvKSYmKHA9ITApLGg+MyYmQmkodCxlLDMsaSkmJihwPSEwKSxoPjQmJkJpKHQsZSw0LGEpJiYocD0hMCksaD41JiZCaSh0LGUsNSx1KSYmKHA9ITApLGg+NiYmQmkodCxlLDYsbCkmJihwPSEwKSxoPjcmJkJpKHQsZSw3LHMpJiYocD0hMCksaD44JiZCaSh0LGUsOCxjKSYmKHA9ITApLGg+OSYmQmkodCxlLDksZikmJihwPSEwKSxwfSh0LGUsbixyLG8saSxhLHUsbCxzLGMsZik7Y2FzZSAyOnJldHVybiBmdW5jdGlvbih0LGUsbixyLG8saSxhLHUsbCxzLGMsZil7dmFyIGg9ITEscD1lLmJpbmRpbmdzLGQ9cC5sZW5ndGg7aWYoZD4wJiZ0cih0LGUsMCxuKSYmKGg9ITApLGQ+MSYmdHIodCxlLDEscikmJihoPSEwKSxkPjImJnRyKHQsZSwyLG8pJiYoaD0hMCksZD4zJiZ0cih0LGUsMyxpKSYmKGg9ITApLGQ+NCYmdHIodCxlLDQsYSkmJihoPSEwKSxkPjUmJnRyKHQsZSw1LHUpJiYoaD0hMCksZD42JiZ0cih0LGUsNixsKSYmKGg9ITApLGQ+NyYmdHIodCxlLDcscykmJihoPSEwKSxkPjgmJnRyKHQsZSw4LGMpJiYoaD0hMCksZD45JiZ0cih0LGUsOSxmKSYmKGg9ITApLGgpe3ZhciBnPWUudGV4dC5wcmVmaXg7ZD4wJiYoZys9SmkobixwWzBdKSksZD4xJiYoZys9SmkocixwWzFdKSksZD4yJiYoZys9SmkobyxwWzJdKSksZD4zJiYoZys9SmkoaSxwWzNdKSksZD40JiYoZys9SmkoYSxwWzRdKSksZD41JiYoZys9SmkodSxwWzVdKSksZD42JiYoZys9SmkobCxwWzZdKSksZD43JiYoZys9SmkocyxwWzddKSksZD44JiYoZys9SmkoYyxwWzhdKSksZD45JiYoZys9SmkoZixwWzldKSk7dmFyIHY9SG4odCxlLm5vZGVJbmRleCkucmVuZGVyVGV4dDt0LnJlbmRlcmVyLnNldFZhbHVlKHYsZyl9cmV0dXJuIGh9KHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmKTtjYXNlIDE2Mzg0OnJldHVybiBmdW5jdGlvbih0LGUsbixyLG8saSxhLHUsbCxzLGMsZil7dmFyIGg9Rm4odCxlLm5vZGVJbmRleCkscD1oLmluc3RhbmNlLGQ9ITEsZz12b2lkIDAsdj1lLmJpbmRpbmdzLmxlbmd0aDtyZXR1cm4gdj4wJiZYbih0LGUsMCxuKSYmKGQ9ITAsZz1nbyh0LGgsZSwwLG4sZykpLHY+MSYmWG4odCxlLDEscikmJihkPSEwLGc9Z28odCxoLGUsMSxyLGcpKSx2PjImJlhuKHQsZSwyLG8pJiYoZD0hMCxnPWdvKHQsaCxlLDIsbyxnKSksdj4zJiZYbih0LGUsMyxpKSYmKGQ9ITAsZz1nbyh0LGgsZSwzLGksZykpLHY+NCYmWG4odCxlLDQsYSkmJihkPSEwLGc9Z28odCxoLGUsNCxhLGcpKSx2PjUmJlhuKHQsZSw1LHUpJiYoZD0hMCxnPWdvKHQsaCxlLDUsdSxnKSksdj42JiZYbih0LGUsNixsKSYmKGQ9ITAsZz1nbyh0LGgsZSw2LGwsZykpLHY+NyYmWG4odCxlLDcscykmJihkPSEwLGc9Z28odCxoLGUsNyxzLGcpKSx2PjgmJlhuKHQsZSw4LGMpJiYoZD0hMCxnPWdvKHQsaCxlLDgsYyxnKSksdj45JiZYbih0LGUsOSxmKSYmKGQ9ITAsZz1nbyh0LGgsZSw5LGYsZykpLGcmJnAubmdPbkNoYW5nZXMoZyksNjU1MzYmZS5mbGFncyYmVm4odCwyNTYsZS5ub2RlSW5kZXgpJiZwLm5nT25Jbml0KCksMjYyMTQ0JmUuZmxhZ3MmJnAubmdEb0NoZWNrKCksZH0odCxlLG4scixvLGksYSx1LGwscyxjLGYpO2Nhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvLGksYSx1LGwscyxjLGYpe3ZhciBoPWUuYmluZGluZ3MscD0hMSxkPWgubGVuZ3RoO2lmKGQ+MCYmdHIodCxlLDAsbikmJihwPSEwKSxkPjEmJnRyKHQsZSwxLHIpJiYocD0hMCksZD4yJiZ0cih0LGUsMixvKSYmKHA9ITApLGQ+MyYmdHIodCxlLDMsaSkmJihwPSEwKSxkPjQmJnRyKHQsZSw0LGEpJiYocD0hMCksZD41JiZ0cih0LGUsNSx1KSYmKHA9ITApLGQ+NiYmdHIodCxlLDYsbCkmJihwPSEwKSxkPjcmJnRyKHQsZSw3LHMpJiYocD0hMCksZD44JiZ0cih0LGUsOCxjKSYmKHA9ITApLGQ+OSYmdHIodCxlLDksZikmJihwPSEwKSxwKXt2YXIgZz1Cbih0LGUubm9kZUluZGV4KSx2PXZvaWQgMDtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMzI6dj1uZXcgQXJyYXkoaC5sZW5ndGgpLGQ+MCYmKHZbMF09biksZD4xJiYodlsxXT1yKSxkPjImJih2WzJdPW8pLGQ+MyYmKHZbM109aSksZD40JiYodls0XT1hKSxkPjUmJih2WzVdPXUpLGQ+NiYmKHZbNl09bCksZD43JiYodls3XT1zKSxkPjgmJih2WzhdPWMpLGQ+OSYmKHZbOV09Zik7YnJlYWs7Y2FzZSA2NDp2PXt9LGQ+MCYmKHZbaFswXS5uYW1lXT1uKSxkPjEmJih2W2hbMV0ubmFtZV09ciksZD4yJiYodltoWzJdLm5hbWVdPW8pLGQ+MyYmKHZbaFszXS5uYW1lXT1pKSxkPjQmJih2W2hbNF0ubmFtZV09YSksZD41JiYodltoWzVdLm5hbWVdPXUpLGQ+NiYmKHZbaFs2XS5uYW1lXT1sKSxkPjcmJih2W2hbN10ubmFtZV09cyksZD44JiYodltoWzhdLm5hbWVdPWMpLGQ+OSYmKHZbaFs5XS5uYW1lXT1mKTticmVhaztjYXNlIDEyODp2YXIgeT1uO3N3aXRjaChkKXtjYXNlIDE6dj15LnRyYW5zZm9ybShuKTticmVhaztjYXNlIDI6dj15LnRyYW5zZm9ybShyKTticmVhaztjYXNlIDM6dj15LnRyYW5zZm9ybShyLG8pO2JyZWFrO2Nhc2UgNDp2PXkudHJhbnNmb3JtKHIsbyxpKTticmVhaztjYXNlIDU6dj15LnRyYW5zZm9ybShyLG8saSxhKTticmVhaztjYXNlIDY6dj15LnRyYW5zZm9ybShyLG8saSxhLHUpO2JyZWFrO2Nhc2UgNzp2PXkudHJhbnNmb3JtKHIsbyxpLGEsdSxsKTticmVhaztjYXNlIDg6dj15LnRyYW5zZm9ybShyLG8saSxhLHUsbCxzKTticmVhaztjYXNlIDk6dj15LnRyYW5zZm9ybShyLG8saSxhLHUsbCxzLGMpO2JyZWFrO2Nhc2UgMTA6dj15LnRyYW5zZm9ybShyLG8saSxhLHUsbCxzLGMsZil9fWcudmFsdWU9dn1yZXR1cm4gcH0odCxlLG4scixvLGksYSx1LGwscyxjLGYpO2RlZmF1bHQ6dGhyb3cidW5yZWFjaGFibGUifX0odCxlLG8saSxhLHUsbCxzLGMsZixoLHApOmZ1bmN0aW9uKHQsZSxuKXtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0hMSxvPTA7bzxuLmxlbmd0aDtvKyspQmkodCxlLG8sbltvXSkmJihyPSEwKTtyZXR1cm4gcn0odCxlLG4pO2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj1lLmJpbmRpbmdzLG89ITEsaT0wO2k8bi5sZW5ndGg7aSsrKXRyKHQsZSxpLG5baV0pJiYobz0hMCk7aWYobyl7dmFyIGE9IiI7Zm9yKGk9MDtpPG4ubGVuZ3RoO2krKylhKz1KaShuW2ldLHJbaV0pO2E9ZS50ZXh0LnByZWZpeCthO3ZhciB1PUhuKHQsZS5ub2RlSW5kZXgpLnJlbmRlclRleHQ7dC5yZW5kZXJlci5zZXRWYWx1ZSh1LGEpfXJldHVybiBvfSh0LGUsbik7Y2FzZSAxNjM4NDpyZXR1cm4gZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj1Gbih0LGUubm9kZUluZGV4KSxvPXIuaW5zdGFuY2UsaT0hMSxhPXZvaWQgMCx1PTA7dTxuLmxlbmd0aDt1KyspWG4odCxlLHUsblt1XSkmJihpPSEwLGE9Z28odCxyLGUsdSxuW3VdLGEpKTtyZXR1cm4gYSYmby5uZ09uQ2hhbmdlcyhhKSw2NTUzNiZlLmZsYWdzJiZWbih0LDI1NixlLm5vZGVJbmRleCkmJm8ubmdPbkluaXQoKSwyNjIxNDQmZS5mbGFncyYmby5uZ0RvQ2hlY2soKSxpfSh0LGUsbik7Y2FzZSAzMjpjYXNlIDY0OmNhc2UgMTI4OnJldHVybiBmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBvPWUuYmluZGluZ3MsaT0hMSxhPTA7YTxuLmxlbmd0aDthKyspdHIodCxlLGEsblthXSkmJihpPSEwKTtpZihpKXt2YXIgdT1Cbih0LGUubm9kZUluZGV4KSxsPXZvaWQgMDtzd2l0Y2goMjAxMzQ3MDY3JmUuZmxhZ3Mpe2Nhc2UgMzI6bD1uO2JyZWFrO2Nhc2UgNjQ6Zm9yKGw9e30sYT0wO2E8bi5sZW5ndGg7YSsrKWxbb1thXS5uYW1lXT1uW2FdO2JyZWFrO2Nhc2UgMTI4OnZhciBzPW5bMF0sYz1uLnNsaWNlKDEpO2w9cy50cmFuc2Zvcm0uYXBwbHkocyxPYmplY3Qoci5fX3NwcmVhZCkoYykpfXUudmFsdWU9bH1yZXR1cm4gaX0odCxlLG4pO2RlZmF1bHQ6dGhyb3cidW5yZWFjaGFibGUifX0odCxlLG8pfWZ1bmN0aW9uIGNhKHQpe3ZhciBlPXQuZGVmO2lmKDQmZS5ub2RlRmxhZ3MpZm9yKHZhciBuPTA7bjxlLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPWUubm9kZXNbbl07aWYoNCZyLmZsYWdzKXt2YXIgbz16bih0LG4pLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztpZihvKWZvcih2YXIgaT0wO2k8by5sZW5ndGg7aSsrKXt2YXIgYT1vW2ldO2Euc3RhdGV8PTMyLHJyKGEsdCl9fWVsc2UgMD09KDQmci5jaGlsZEZsYWdzKSYmKG4rPXIuY2hpbGRDb3VudCl9fWZ1bmN0aW9uIGZhKHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmLGgpe3JldHVybiAwPT09bj9mdW5jdGlvbih0LGUsbixyLG8saSxhLHUsbCxzLGMsZil7dmFyIGg9ZS5iaW5kaW5ncy5sZW5ndGg7aD4wJiZlcih0LGUsMCxuKSxoPjEmJmVyKHQsZSwxLHIpLGg+MiYmZXIodCxlLDIsbyksaD4zJiZlcih0LGUsMyxpKSxoPjQmJmVyKHQsZSw0LGEpLGg+NSYmZXIodCxlLDUsdSksaD42JiZlcih0LGUsNixsKSxoPjcmJmVyKHQsZSw3LHMpLGg+OCYmZXIodCxlLDgsYyksaD45JiZlcih0LGUsOSxmKX0odCxlLHIsbyxpLGEsdSxsLHMsYyxmLGgpOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyllcih0LGUscixuW3JdKX0odCxlLHIpLCExfWZ1bmN0aW9uIGhhKHQsZSl7aWYoWm4odCxlLm5vZGVJbmRleCkuZGlydHkpdGhyb3cgTm4oR24uY3JlYXRlRGVidWdDb250ZXh0KHQsZS5ub2RlSW5kZXgpLCJRdWVyeSAiK2UucXVlcnkuaWQrIiBub3QgZGlydHkiLCJRdWVyeSAiK2UucXVlcnkuaWQrIiBkaXJ0eSIsMCE9KDEmdC5zdGF0ZSkpfWZ1bmN0aW9uIHBhKHQpe2lmKCEoMTI4JnQuc3RhdGUpKXtpZih2YSh0LGRhLkRlc3Ryb3kpLGdhKHQsZGEuRGVzdHJveSksdm8odCwxMzEwNzIpLHQuZGlzcG9zYWJsZXMpZm9yKHZhciBlPTA7ZTx0LmRpc3Bvc2FibGVzLmxlbmd0aDtlKyspdC5kaXNwb3NhYmxlc1tlXSgpOyFmdW5jdGlvbih0KXtpZigxNiZ0LnN0YXRlKXt2YXIgZT1pcih0KTtpZihlKXt2YXIgbj1lLnRlbXBsYXRlLl9wcm9qZWN0ZWRWaWV3cztuJiYoQnQobixuLmluZGV4T2YodCkpLEduLmRpcnR5UGFyZW50UXVlcmllcyh0KSl9fX0odCksdC5yZW5kZXJlci5kZXN0cm95Tm9kZSYmZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuZGVmLm5vZGVzLmxlbmd0aCxuPTA7bjxlO24rKyl7dmFyIHI9dC5kZWYubm9kZXNbbl07MSZyLmZsYWdzP3QucmVuZGVyZXIuZGVzdHJveU5vZGUoem4odCxuKS5yZW5kZXJFbGVtZW50KToyJnIuZmxhZ3M/dC5yZW5kZXJlci5kZXN0cm95Tm9kZShIbih0LG4pLnJlbmRlclRleHQpOig2NzEwODg2NCZyLmZsYWdzfHwxMzQyMTc3Mjgmci5mbGFncykmJlpuKHQsbikuZGVzdHJveSgpfX0odCksbHIodCkmJnQucmVuZGVyZXIuZGVzdHJveSgpLHQuc3RhdGV8PTEyOH19dmFyIGRhPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuQ3JlYXRlVmlld05vZGVzPTBdPSJDcmVhdGVWaWV3Tm9kZXMiLHRbdC5DaGVja05vQ2hhbmdlcz0xXT0iQ2hlY2tOb0NoYW5nZXMiLHRbdC5DaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzPTJdPSJDaGVja05vQ2hhbmdlc1Byb2plY3RlZFZpZXdzIix0W3QuQ2hlY2tBbmRVcGRhdGU9M109IkNoZWNrQW5kVXBkYXRlIix0W3QuQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cz00XT0iQ2hlY2tBbmRVcGRhdGVQcm9qZWN0ZWRWaWV3cyIsdFt0LkRlc3Ryb3k9NV09IkRlc3Ryb3kiLHR9KHt9KTtmdW5jdGlvbiBnYSh0LGUpe3ZhciBuPXQuZGVmO2lmKDMzNTU0NDMyJm4ubm9kZUZsYWdzKWZvcih2YXIgcj0wO3I8bi5ub2Rlcy5sZW5ndGg7cisrKXt2YXIgbz1uLm5vZGVzW3JdOzMzNTU0NDMyJm8uZmxhZ3M/eWEoem4odCxyKS5jb21wb25lbnRWaWV3LGUpOjA9PSgzMzU1NDQzMiZvLmNoaWxkRmxhZ3MpJiYocis9by5jaGlsZENvdW50KX19ZnVuY3Rpb24gdmEodCxlKXt2YXIgbj10LmRlZjtpZigxNjc3NzIxNiZuLm5vZGVGbGFncylmb3IodmFyIHI9MDtyPG4ubm9kZXMubGVuZ3RoO3IrKyl7dmFyIG89bi5ub2Rlc1tyXTtpZigxNjc3NzIxNiZvLmZsYWdzKWZvcih2YXIgaT16bih0LHIpLnZpZXdDb250YWluZXIuX2VtYmVkZGVkVmlld3MsYT0wO2E8aS5sZW5ndGg7YSsrKXlhKGlbYV0sZSk7ZWxzZSAwPT0oMTY3NzcyMTYmby5jaGlsZEZsYWdzKSYmKHIrPW8uY2hpbGRDb3VudCl9fWZ1bmN0aW9uIHlhKHQsZSl7dmFyIG49dC5zdGF0ZTtzd2l0Y2goZSl7Y2FzZSBkYS5DaGVja05vQ2hhbmdlczowPT0oMTI4Jm4pJiYoMTI9PSgxMiZuKT91YSh0KTo2NCZuJiZtYSh0LGRhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3MpKTticmVhaztjYXNlIGRhLkNoZWNrTm9DaGFuZ2VzUHJvamVjdGVkVmlld3M6MD09KDEyOCZuKSYmKDMyJm4/dWEodCk6NjQmbiYmbWEodCxlKSk7YnJlYWs7Y2FzZSBkYS5DaGVja0FuZFVwZGF0ZTowPT0oMTI4Jm4pJiYoMTI9PSgxMiZuKT9sYSh0KTo2NCZuJiZtYSh0LGRhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3MpKTticmVhaztjYXNlIGRhLkNoZWNrQW5kVXBkYXRlUHJvamVjdGVkVmlld3M6MD09KDEyOCZuKSYmKDMyJm4/bGEodCk6NjQmbiYmbWEodCxlKSk7YnJlYWs7Y2FzZSBkYS5EZXN0cm95OnBhKHQpO2JyZWFrO2Nhc2UgZGEuQ3JlYXRlVmlld05vZGVzOmFhKHQpfX1mdW5jdGlvbiBtYSh0LGUpe3ZhKHQsZSksZ2EodCxlKX1mdW5jdGlvbiBfYSh0LGUsbixyKXtpZih0LmRlZi5ub2RlRmxhZ3MmZSYmdC5kZWYubm9kZUZsYWdzJm4pZm9yKHZhciBvPXQuZGVmLm5vZGVzLmxlbmd0aCxpPTA7aTxvO2krKyl7dmFyIGE9dC5kZWYubm9kZXNbaV07aWYoYS5mbGFncyZlJiZhLmZsYWdzJm4pc3dpdGNoKEduLnNldEN1cnJlbnROb2RlKHQsYS5ub2RlSW5kZXgpLHIpe2Nhc2UgMDpHaSh0LGEpO2JyZWFrO2Nhc2UgMTpoYSh0LGEpfWEuY2hpbGRGbGFncyZlJiZhLmNoaWxkRmxhZ3Mmbnx8KGkrPWEuY2hpbGRDb3VudCl9fXZhciB3YT0hMTtmdW5jdGlvbiBiYSh0LGUsbixyLG8saSl7dmFyIGE9by5pbmplY3Rvci5nZXQoZm4pO3JldHVybiBuYShDYSh0LG8sYSxlLG4pLHIsaSl9ZnVuY3Rpb24geGEodCxlLG4scixvLGkpe3ZhciBhPW8uaW5qZWN0b3IuZ2V0KGZuKSx1PUNhKHQsbyxuZXcgbnUoYSksZSxuKSxsPU1hKHIpO3JldHVybiB0dShGYS5jcmVhdGUsbmEsbnVsbCxbdSxsLGldKX1mdW5jdGlvbiBDYSh0LGUsbixyLG8pe3ZhciBpPWUuaW5qZWN0b3IuZ2V0KFNlKSxhPWUuaW5qZWN0b3IuZ2V0KCR0KSx1PW4uY3JlYXRlUmVuZGVyZXIobnVsbCxudWxsKTtyZXR1cm57bmdNb2R1bGU6ZSxpbmplY3Rvcjp0LHByb2plY3RhYmxlTm9kZXM6cixzZWxlY3Rvck9yTm9kZTpvLHNhbml0aXplcjppLHJlbmRlcmVyRmFjdG9yeTpuLHJlbmRlcmVyOnUsZXJyb3JIYW5kbGVyOmF9fWZ1bmN0aW9uIFNhKHQsZSxuLHIpe3ZhciBvPU1hKG4pO3JldHVybiB0dShGYS5jcmVhdGUsZWEsbnVsbCxbdCxlLG8scl0pfWZ1bmN0aW9uIEVhKHQsZSxuLHIpe3JldHVybiBuPWthLmdldChlLmVsZW1lbnQuY29tcG9uZW50UHJvdmlkZXIucHJvdmlkZXIudG9rZW4pfHxNYShuKSx0dShGYS5jcmVhdGUscmEsbnVsbCxbdCxlLG4scl0pfWZ1bmN0aW9uIE9hKHQsZSxuLHIpe3JldHVybiBRcih0LGUsbixmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXt2YXIgZT0hMSxuPSExO3JldHVybiAwPT09VGEuc2l6ZT97aGFzT3ZlcnJpZGVzOmUsaGFzRGVwcmVjYXRlZE92ZXJyaWRlczpufToodC5wcm92aWRlcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIHI9VGEuZ2V0KHQudG9rZW4pOzM4NDAmdC5mbGFncyYmciYmKGU9ITAsbj1ufHxyLmRlcHJlY2F0ZWRCZWhhdmlvcil9KSksdC5tb2R1bGVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe1BhLmZvckVhY2goKGZ1bmN0aW9uKHIsbyl7Z3QobykucHJvdmlkZWRJbj09PXQmJihlPSEwLG49bnx8ci5kZXByZWNhdGVkQmVoYXZpb3IpfSkpfSkpLHtoYXNPdmVycmlkZXM6ZSxoYXNEZXByZWNhdGVkT3ZlcnJpZGVzOm59KX0odCksbj1lLmhhc0RlcHJlY2F0ZWRPdmVycmlkZXM7cmV0dXJuIGUuaGFzT3ZlcnJpZGVzPyhmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQucHJvdmlkZXJzLmxlbmd0aDtlKyspe3ZhciByPXQucHJvdmlkZXJzW2VdO24mJihyLmZsYWdzfD00MDk2KTt2YXIgbz1UYS5nZXQoci50b2tlbik7byYmKHIuZmxhZ3M9LTM4NDEmci5mbGFnc3xvLmZsYWdzLHIuZGVwcz1mcihvLmRlcHMpLHIudmFsdWU9by52YWx1ZSl9aWYoUGEuc2l6ZT4wKXt2YXIgaT1uZXcgU2V0KHQubW9kdWxlcyk7UGEuZm9yRWFjaCgoZnVuY3Rpb24oZSxyKXtpZihpLmhhcyhndChyKS5wcm92aWRlZEluKSl7dmFyIG89e3Rva2VuOnIsZmxhZ3M6ZS5mbGFnc3wobj80MDk2OjApLGRlcHM6ZnIoZS5kZXBzKSx2YWx1ZTplLnZhbHVlLGluZGV4OnQucHJvdmlkZXJzLmxlbmd0aH07dC5wcm92aWRlcnMucHVzaChvKSx0LnByb3ZpZGVyc0J5S2V5W1FuKHIpXT1vfX0pKX19KHQ9dC5mYWN0b3J5KChmdW5jdGlvbigpe3JldHVybiBxbn0pKSksdCk6dH0ocikpfXZhciBUYT1uZXcgTWFwLFBhPW5ldyBNYXAsa2E9bmV3IE1hcDtmdW5jdGlvbiBBYSh0KXt2YXIgZTtUYS5zZXQodC50b2tlbix0KSwiZnVuY3Rpb24iPT10eXBlb2YgdC50b2tlbiYmKGU9Z3QodC50b2tlbikpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm92aWRlZEluJiZQYS5zZXQodC50b2tlbix0KX1mdW5jdGlvbiBJYSh0LGUpe3ZhciBuPWRyKGUudmlld0RlZkZhY3RvcnkpLHI9ZHIobi5ub2Rlc1swXS5lbGVtZW50LmNvbXBvbmVudFZpZXcpO2thLnNldCh0LHIpfWZ1bmN0aW9uIFJhKCl7VGEuY2xlYXIoKSxQYS5jbGVhcigpLGthLmNsZWFyKCl9ZnVuY3Rpb24gTWEodCl7aWYoMD09PVRhLnNpemUpcmV0dXJuIHQ7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49bnVsbCxyPTA7cjx0Lm5vZGVzLmxlbmd0aDtyKyspe3ZhciBvPXQubm9kZXNbcl07MSZvLmZsYWdzJiYobj1vKSxuJiYzODQwJm8uZmxhZ3MmJlRhLmhhcyhvLnByb3ZpZGVyLnRva2VuKSYmKGUucHVzaChuLm5vZGVJbmRleCksbj1udWxsKX1yZXR1cm4gZX0odCk7aWYoMD09PWUubGVuZ3RoKXJldHVybiB0O3Q9dC5mYWN0b3J5KChmdW5jdGlvbigpe3JldHVybiBxbn0pKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylyKHQsZVtuXSk7cmV0dXJuIHQ7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lKzE7bjx0Lm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQubm9kZXNbbl07aWYoMSZyLmZsYWdzKXJldHVybjtpZigzODQwJnIuZmxhZ3Mpe3ZhciBvPXIucHJvdmlkZXIsaT1UYS5nZXQoby50b2tlbik7aSYmKHIuZmxhZ3M9LTM4NDEmci5mbGFnc3xpLmZsYWdzLG8uZGVwcz1mcihpLmRlcHMpLG8udmFsdWU9aS52YWx1ZSl9fX19ZnVuY3Rpb24gamEodCxlLG4scixvLGksYSx1LGwscyxjLGYsaCl7dmFyIHA9dC5kZWYubm9kZXNbZV07cmV0dXJuIHNhKHQscCxuLHIsbyxpLGEsdSxsLHMsYyxmLGgpLDIyNCZwLmZsYWdzP0JuKHQsZSkudmFsdWU6dm9pZCAwfWZ1bmN0aW9uIE5hKHQsZSxuLHIsbyxpLGEsdSxsLHMsYyxmLGgpe3ZhciBwPXQuZGVmLm5vZGVzW2VdO3JldHVybiBmYSh0LHAsbixyLG8saSxhLHUsbCxzLGMsZixoKSwyMjQmcC5mbGFncz9Cbih0LGUpLnZhbHVlOnZvaWQgMH1mdW5jdGlvbiBEYSh0KXtyZXR1cm4gdHUoRmEuZGV0ZWN0Q2hhbmdlcyxsYSxudWxsLFt0XSl9ZnVuY3Rpb24gVWEodCl7cmV0dXJuIHR1KEZhLmNoZWNrTm9DaGFuZ2VzLHVhLG51bGwsW3RdKX1mdW5jdGlvbiBMYSh0KXtyZXR1cm4gdHUoRmEuZGVzdHJveSxwYSxudWxsLFt0XSl9dmFyIFZhLEhhLHphLEZhPWZ1bmN0aW9uKHQpe3JldHVybiB0W3QuY3JlYXRlPTBdPSJjcmVhdGUiLHRbdC5kZXRlY3RDaGFuZ2VzPTFdPSJkZXRlY3RDaGFuZ2VzIix0W3QuY2hlY2tOb0NoYW5nZXM9Ml09ImNoZWNrTm9DaGFuZ2VzIix0W3QuZGVzdHJveT0zXT0iZGVzdHJveSIsdFt0LmhhbmRsZUV2ZW50PTRdPSJoYW5kbGVFdmVudCIsdH0oe30pO2Z1bmN0aW9uIEJhKHQsZSl7SGE9dCx6YT1lfWZ1bmN0aW9uIFphKHQsZSxuLHIpe3JldHVybiBCYSh0LGUpLHR1KEZhLmhhbmRsZUV2ZW50LHQuZGVmLmhhbmRsZUV2ZW50LG51bGwsW3QsZSxuLHJdKX1mdW5jdGlvbiBHYSh0LGUpe2lmKDEyOCZ0LnN0YXRlKXRocm93IFVuKEZhW1ZhXSk7cmV0dXJuIEJhKHQsS2EodCwwKSksdC5kZWYudXBkYXRlRGlyZWN0aXZlcygoZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgbz1bXSxpPTM7aTxhcmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBhPXQuZGVmLm5vZGVzW25dO3JldHVybiAwPT09ZT9XYSh0LGEscixvKTpRYSh0LGEscixvKSwxNjM4NCZhLmZsYWdzJiZCYSh0LEthKHQsbikpLDIyNCZhLmZsYWdzP0JuKHQsYS5ub2RlSW5kZXgpLnZhbHVlOnZvaWQgMH0pLHQpfWZ1bmN0aW9uIHFhKHQsZSl7aWYoMTI4JnQuc3RhdGUpdGhyb3cgVW4oRmFbVmFdKTtyZXR1cm4gQmEodCxZYSh0LDApKSx0LmRlZi51cGRhdGVSZW5kZXJlcigoZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgbz1bXSxpPTM7aTxhcmd1bWVudHMubGVuZ3RoO2krKylvW2ktM109YXJndW1lbnRzW2ldO3ZhciBhPXQuZGVmLm5vZGVzW25dO3JldHVybiAwPT09ZT9XYSh0LGEscixvKTpRYSh0LGEscixvKSwzJmEuZmxhZ3MmJkJhKHQsWWEodCxuKSksMjI0JmEuZmxhZ3M/Qm4odCxhLm5vZGVJbmRleCkudmFsdWU6dm9pZCAwfSksdCl9ZnVuY3Rpb24gV2EodCxlLG4sbyl7aWYoc2EuYXBwbHkodm9pZCAwLE9iamVjdChyLl9fc3ByZWFkKShbdCxlLG5dLG8pKSl7dmFyIGk9MT09PW4/b1swXTpvO2lmKDE2Mzg0JmUuZmxhZ3Mpe2Zvcih2YXIgYT17fSx1PTA7dTxlLmJpbmRpbmdzLmxlbmd0aDt1Kyspe3ZhciBsPWUuYmluZGluZ3NbdV0scz1pW3VdOzgmbC5mbGFncyYmKGFbKHA9bC5ub25NaW5pZmllZE5hbWUsIm5nLXJlZmxlY3QtIitwLnJlcGxhY2UoL1skQF0vZywiXyIpLnJlcGxhY2UoVGUsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3JldHVybiItIit0WzFdLnRvTG93ZXJDYXNlKCl9KSkpXT1QZShzKSl9dmFyIGM9ZS5wYXJlbnQsZj16bih0LGMubm9kZUluZGV4KS5yZW5kZXJFbGVtZW50O2lmKGMuZWxlbWVudC5uYW1lKWZvcih2YXIgaCBpbiBhKW51bGwhPShzPWFbaF0pP3QucmVuZGVyZXIuc2V0QXR0cmlidXRlKGYsaCxzKTp0LnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZShmLGgpO2Vsc2UgdC5yZW5kZXJlci5zZXRWYWx1ZShmLCJiaW5kaW5ncz0iK0pTT04uc3RyaW5naWZ5KGEsbnVsbCwyKSl9fXZhciBwfWZ1bmN0aW9uIFFhKHQsZSxuLG8pe2ZhLmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkoW3QsZSxuXSxvKSl9ZnVuY3Rpb24gS2EodCxlKXtmb3IodmFyIG49ZTtuPHQuZGVmLm5vZGVzLmxlbmd0aDtuKyspe3ZhciByPXQuZGVmLm5vZGVzW25dO2lmKDE2Mzg0JnIuZmxhZ3MmJnIuYmluZGluZ3MmJnIuYmluZGluZ3MubGVuZ3RoKXJldHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIFlhKHQsZSl7Zm9yKHZhciBuPWU7bjx0LmRlZi5ub2Rlcy5sZW5ndGg7bisrKXt2YXIgcj10LmRlZi5ub2Rlc1tuXTtpZigzJnIuZmxhZ3MmJnIuYmluZGluZ3MmJnIuYmluZGluZ3MubGVuZ3RoKXJldHVybiBufXJldHVybiBudWxsfXZhciBKYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnZpZXc9dCx0aGlzLm5vZGVJbmRleD1lLG51bGw9PWUmJih0aGlzLm5vZGVJbmRleD1lPTApLHRoaXMubm9kZURlZj10LmRlZi5ub2Rlc1tlXTtmb3IodmFyIG49dGhpcy5ub2RlRGVmLHI9dDtuJiYwPT0oMSZuLmZsYWdzKTspbj1uLnBhcmVudDtpZighbilmb3IoOyFuJiZyOyluPWFyKHIpLHI9ci5wYXJlbnQ7dGhpcy5lbERlZj1uLHRoaXMuZWxWaWV3PXJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiZWxPckNvbXBWaWV3Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHpuKHRoaXMuZWxWaWV3LHRoaXMuZWxEZWYubm9kZUluZGV4KS5jb21wb25lbnRWaWV3fHx0aGlzLnZpZXd9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJpbmplY3RvciIse2dldDpmdW5jdGlvbigpe3JldHVybiBCcih0aGlzLmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsT3JDb21wVmlldy5jb21wb25lbnR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjb250ZXh0Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxPckNvbXBWaWV3LmNvbnRleHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm92aWRlclRva2VucyIse2dldDpmdW5jdGlvbigpe3ZhciB0PVtdO2lmKHRoaXMuZWxEZWYpZm9yKHZhciBlPXRoaXMuZWxEZWYubm9kZUluZGV4KzE7ZTw9dGhpcy5lbERlZi5ub2RlSW5kZXgrdGhpcy5lbERlZi5jaGlsZENvdW50O2UrKyl7dmFyIG49dGhpcy5lbFZpZXcuZGVmLm5vZGVzW2VdOzIwMjI0Jm4uZmxhZ3MmJnQucHVzaChuLnByb3ZpZGVyLnRva2VuKSxlKz1uLmNoaWxkQ291bnR9cmV0dXJuIHR9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJyZWZlcmVuY2VzIix7Z2V0OmZ1bmN0aW9uKCl7dmFyIHQ9e307aWYodGhpcy5lbERlZil7WGEodGhpcy5lbFZpZXcsdGhpcy5lbERlZix0KTtmb3IodmFyIGU9dGhpcy5lbERlZi5ub2RlSW5kZXgrMTtlPD10aGlzLmVsRGVmLm5vZGVJbmRleCt0aGlzLmVsRGVmLmNoaWxkQ291bnQ7ZSsrKXt2YXIgbj10aGlzLmVsVmlldy5kZWYubm9kZXNbZV07MjAyMjQmbi5mbGFncyYmWGEodGhpcy5lbFZpZXcsbix0KSxlKz1uLmNoaWxkQ291bnR9fXJldHVybiB0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiY29tcG9uZW50UmVuZGVyRWxlbWVudCIse2dldDpmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQpe2Zvcig7dCYmIWxyKHQpOyl0PXQucGFyZW50O3JldHVybiB0LnBhcmVudD96bih0LnBhcmVudCxhcih0KS5ub2RlSW5kZXgpOm51bGx9KHRoaXMuZWxPckNvbXBWaWV3KTtyZXR1cm4gdD90LnJlbmRlckVsZW1lbnQ6dm9pZCAwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicmVuZGVyTm9kZSIse2dldDpmdW5jdGlvbigpe3JldHVybiAyJnRoaXMubm9kZURlZi5mbGFncz91cih0aGlzLnZpZXcsdGhpcy5ub2RlRGVmKTp1cih0aGlzLmVsVmlldyx0aGlzLmVsRGVmKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5sb2dFcnJvcj1mdW5jdGlvbih0KXtmb3IodmFyIGUsbixvPVtdLGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKW9baS0xXT1hcmd1bWVudHNbaV07MiZ0aGlzLm5vZGVEZWYuZmxhZ3M/KGU9dGhpcy52aWV3LmRlZixuPXRoaXMubm9kZURlZi5ub2RlSW5kZXgpOihlPXRoaXMuZWxWaWV3LmRlZixuPXRoaXMuZWxEZWYubm9kZUluZGV4KTt2YXIgYT0kYShlLG4pLHU9LTEsbD1mdW5jdGlvbigpe3ZhciBlO3JldHVybisrdT09PWE/KGU9dC5lcnJvcikuYmluZC5hcHBseShlLE9iamVjdChyLl9fc3ByZWFkKShbdF0sbykpOnFufTtlLmZhY3RvcnkobCksdTxhJiYodC5lcnJvcigiSWxsZWdhbCBzdGF0ZTogdGhlIFZpZXdEZWZpbml0aW9uRmFjdG9yeSBkaWQgbm90IGNhbGwgdGhlIGxvZ2dlciEiKSx0LmVycm9yLmFwcGx5KHQsT2JqZWN0KHIuX19zcHJlYWQpKG8pKSl9LHR9KCk7ZnVuY3Rpb24gJGEodCxlKXtmb3IodmFyIG49LTEscj0wO3I8PWU7cisrKTMmdC5ub2Rlc1tyXS5mbGFncyYmbisrO3JldHVybiBufWZ1bmN0aW9uIFhhKHQsZSxuKXtmb3IodmFyIHIgaW4gZS5yZWZlcmVuY2VzKW5bcl09V2kodCxlLGUucmVmZXJlbmNlc1tyXSl9ZnVuY3Rpb24gdHUodCxlLG4scil7dmFyIG8saSxhPVZhLHU9SGEsbD16YTt0cnl7VmE9dDt2YXIgcz1lLmFwcGx5KG4scik7cmV0dXJuIEhhPXUsemE9bCxWYT1hLHN9Y2F0Y2goYyl7aWYoS3QoYyl8fCFIYSl0aHJvdyBjO3Rocm93IG89YyxpPWV1KCksbyBpbnN0YW5jZW9mIEVycm9yfHwobz1uZXcgRXJyb3Ioby50b1N0cmluZygpKSksRG4obyxpKSxvfX1mdW5jdGlvbiBldSgpe3JldHVybiBIYT9uZXcgSmEoSGEsemEpOm51bGx9dmFyIG51PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmRlbGVnYXRlPXR9cmV0dXJuIHQucHJvdG90eXBlLmNyZWF0ZVJlbmRlcmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBydSh0aGlzLmRlbGVnYXRlLmNyZWF0ZVJlbmRlcmVyKHQsZSkpfSx0LnByb3RvdHlwZS5iZWdpbj1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuYmVnaW4mJnRoaXMuZGVsZWdhdGUuYmVnaW4oKX0sdC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dGhpcy5kZWxlZ2F0ZS5lbmQmJnRoaXMuZGVsZWdhdGUuZW5kKCl9LHQucHJvdG90eXBlLndoZW5SZW5kZXJpbmdEb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUud2hlblJlbmRlcmluZ0RvbmU/dGhpcy5kZWxlZ2F0ZS53aGVuUmVuZGVyaW5nRG9uZSgpOlByb21pc2UucmVzb2x2ZShudWxsKX0sdH0oKSxydT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxlZ2F0ZT10LHRoaXMuZGVidWdDb250ZXh0RmFjdG9yeT1ldSx0aGlzLmRhdGE9dGhpcy5kZWxlZ2F0ZS5kYXRhfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVEZWJ1Z0NvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVidWdDb250ZXh0RmFjdG9yeSh0KX0sdC5wcm90b3R5cGUuZGVzdHJveU5vZGU9ZnVuY3Rpb24odCl7dmFyIGU9QWkodCk7IWZ1bmN0aW9uKHQpe2tpLmRlbGV0ZSh0Lm5hdGl2ZU5vZGUpfShlKSxlIGluc3RhbmNlb2YgVGkmJihlLmxpc3RlbmVycy5sZW5ndGg9MCksdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSYmdGhpcy5kZWxlZ2F0ZS5kZXN0cm95Tm9kZSh0KX0sdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuZGVsZWdhdGUuZGVzdHJveSgpfSx0LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5jcmVhdGVFbGVtZW50KHQsZSkscj10aGlzLmNyZWF0ZURlYnVnQ29udGV4dChuKTtpZihyKXt2YXIgbz1uZXcgUGkobixudWxsLHIpO28ubmFtZT10LElpKG8pfXJldHVybiBufSx0LnByb3RvdHlwZS5jcmVhdGVDb21tZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlQ29tbWVudCh0KSxuPXRoaXMuY3JlYXRlRGVidWdDb250ZXh0KGUpO3JldHVybiBuJiZJaShuZXcgVGkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5jcmVhdGVUZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGVsZWdhdGUuY3JlYXRlVGV4dCh0KSxuPXRoaXMuY3JlYXRlRGVidWdDb250ZXh0KGUpO3JldHVybiBuJiZJaShuZXcgVGkoZSxudWxsLG4pKSxlfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3ZhciBuPUFpKHQpLHI9QWkoZSk7biYmciYmbiBpbnN0YW5jZW9mIFBpJiZuLmFkZENoaWxkKHIpLHRoaXMuZGVsZWdhdGUuYXBwZW5kQ2hpbGQodCxlKX0sdC5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1BaSh0KSxvPUFpKGUpLGk9QWkobik7ciYmbyYmciBpbnN0YW5jZW9mIFBpJiZyLmluc2VydEJlZm9yZShpLG8pLHRoaXMuZGVsZWdhdGUuaW5zZXJ0QmVmb3JlKHQsZSxuKX0sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1BaSh0KSxyPUFpKGUpO24mJnImJm4gaW5zdGFuY2VvZiBQaSYmbi5yZW1vdmVDaGlsZChyKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNoaWxkKHQsZSl9LHQucHJvdG90eXBlLnNlbGVjdFJvb3RFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5kZWxlZ2F0ZS5zZWxlY3RSb290RWxlbWVudCh0LGUpLHI9ZXUoKTtyZXR1cm4gciYmSWkobmV3IFBpKG4sbnVsbCxyKSksbn0sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPUFpKHQpO28mJm8gaW5zdGFuY2VvZiBQaSYmKG8uYXR0cmlidXRlc1tyP3IrIjoiK2U6ZV09biksdGhpcy5kZWxlZ2F0ZS5zZXRBdHRyaWJ1dGUodCxlLG4scil9LHQucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9QWkodCk7ciYmciBpbnN0YW5jZW9mIFBpJiYoci5hdHRyaWJ1dGVzW24/bisiOiIrZTplXT1udWxsKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUF0dHJpYnV0ZSh0LGUsbil9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49QWkodCk7biYmbiBpbnN0YW5jZW9mIFBpJiYobi5jbGFzc2VzW2VdPSEwKSx0aGlzLmRlbGVnYXRlLmFkZENsYXNzKHQsZSl9LHQucHJvdG90eXBlLnJlbW92ZUNsYXNzPWZ1bmN0aW9uKHQsZSl7dmFyIG49QWkodCk7biYmbiBpbnN0YW5jZW9mIFBpJiYobi5jbGFzc2VzW2VdPSExKSx0aGlzLmRlbGVnYXRlLnJlbW92ZUNsYXNzKHQsZSl9LHQucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPUFpKHQpO28mJm8gaW5zdGFuY2VvZiBQaSYmKG8uc3R5bGVzW2VdPW4pLHRoaXMuZGVsZWdhdGUuc2V0U3R5bGUodCxlLG4scil9LHQucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1BaSh0KTtyJiZyIGluc3RhbmNlb2YgUGkmJihyLnN0eWxlc1tlXT1udWxsKSx0aGlzLmRlbGVnYXRlLnJlbW92ZVN0eWxlKHQsZSxuKX0sdC5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3ZhciByPUFpKHQpO3ImJnIgaW5zdGFuY2VvZiBQaSYmKHIucHJvcGVydGllc1tlXT1uKSx0aGlzLmRlbGVnYXRlLnNldFByb3BlcnR5KHQsZSxuKX0sdC5wcm90b3R5cGUubGlzdGVuPWZ1bmN0aW9uKHQsZSxuKXtpZigic3RyaW5nIiE9dHlwZW9mIHQpe3ZhciByPUFpKHQpO3ImJnIubGlzdGVuZXJzLnB1c2gobmV3IE9pKGUsbikpfXJldHVybiB0aGlzLmRlbGVnYXRlLmxpc3Rlbih0LGUsbil9LHQucHJvdG90eXBlLnBhcmVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUucGFyZW50Tm9kZSh0KX0sdC5wcm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUubmV4dFNpYmxpbmcodCl9LHQucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGUuc2V0VmFsdWUodCxlKX0sdH0oKTtmdQ=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?2?1",
"type": "binary",
"value": "base64:bmN0aW9uIG91KHQsZSxuKXtyZXR1cm4gbmV3IGl1KHQsZSxuKX12YXIgaXU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBvLm1vZHVsZVR5cGU9ZSxvLl9ib290c3RyYXBDb21wb25lbnRzPW4sby5fbmdNb2R1bGVEZWZGYWN0b3J5PXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbih0KXshZnVuY3Rpb24oKXtpZighd2Epe3dhPSEwO3ZhciB0PWVlKCk/e3NldEN1cnJlbnROb2RlOkJhLGNyZWF0ZVJvb3RWaWV3OnhhLGNyZWF0ZUVtYmVkZGVkVmlldzpTYSxjcmVhdGVDb21wb25lbnRWaWV3OkVhLGNyZWF0ZU5nTW9kdWxlUmVmOk9hLG92ZXJyaWRlUHJvdmlkZXI6QWEsb3ZlcnJpZGVDb21wb25lbnRWaWV3OklhLGNsZWFyT3ZlcnJpZGVzOlJhLGNoZWNrQW5kVXBkYXRlVmlldzpEYSxjaGVja05vQ2hhbmdlc1ZpZXc6VWEsZGVzdHJveVZpZXc6TGEsY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBKYSh0LGUpfSxoYW5kbGVFdmVudDpaYSx1cGRhdGVEaXJlY3RpdmVzOkdhLHVwZGF0ZVJlbmRlcmVyOnFhfTp7c2V0Q3VycmVudE5vZGU6ZnVuY3Rpb24oKXt9LGNyZWF0ZVJvb3RWaWV3OmJhLGNyZWF0ZUVtYmVkZGVkVmlldzplYSxjcmVhdGVDb21wb25lbnRWaWV3OnJhLGNyZWF0ZU5nTW9kdWxlUmVmOlFyLG92ZXJyaWRlUHJvdmlkZXI6cW4sb3ZlcnJpZGVDb21wb25lbnRWaWV3OnFuLGNsZWFyT3ZlcnJpZGVzOnFuLGNoZWNrQW5kVXBkYXRlVmlldzpsYSxjaGVja05vQ2hhbmdlc1ZpZXc6dWEsZGVzdHJveVZpZXc6cGEsY3JlYXRlRGVidWdDb250ZXh0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBKYSh0LGUpfSxoYW5kbGVFdmVudDpmdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gdC5kZWYuaGFuZGxlRXZlbnQodCxlLG4scil9LHVwZGF0ZURpcmVjdGl2ZXM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRlRGlyZWN0aXZlcygwPT09ZT9qYTpOYSx0KX0sdXBkYXRlUmVuZGVyZXI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kZWYudXBkYXRlUmVuZGVyZXIoMD09PWU/amE6TmEsdCl9fTtHbi5zZXRDdXJyZW50Tm9kZT10LnNldEN1cnJlbnROb2RlLEduLmNyZWF0ZVJvb3RWaWV3PXQuY3JlYXRlUm9vdFZpZXcsR24uY3JlYXRlRW1iZWRkZWRWaWV3PXQuY3JlYXRlRW1iZWRkZWRWaWV3LEduLmNyZWF0ZUNvbXBvbmVudFZpZXc9dC5jcmVhdGVDb21wb25lbnRWaWV3LEduLmNyZWF0ZU5nTW9kdWxlUmVmPXQuY3JlYXRlTmdNb2R1bGVSZWYsR24ub3ZlcnJpZGVQcm92aWRlcj10Lm92ZXJyaWRlUHJvdmlkZXIsR24ub3ZlcnJpZGVDb21wb25lbnRWaWV3PXQub3ZlcnJpZGVDb21wb25lbnRWaWV3LEduLmNsZWFyT3ZlcnJpZGVzPXQuY2xlYXJPdmVycmlkZXMsR24uY2hlY2tBbmRVcGRhdGVWaWV3PXQuY2hlY2tBbmRVcGRhdGVWaWV3LEduLmNoZWNrTm9DaGFuZ2VzVmlldz10LmNoZWNrTm9DaGFuZ2VzVmlldyxHbi5kZXN0cm95Vmlldz10LmRlc3Ryb3lWaWV3LEduLnJlc29sdmVEZXA9aG8sR24uY3JlYXRlRGVidWdDb250ZXh0PXQuY3JlYXRlRGVidWdDb250ZXh0LEduLmhhbmRsZUV2ZW50PXQuaGFuZGxlRXZlbnQsR24udXBkYXRlRGlyZWN0aXZlcz10LnVwZGF0ZURpcmVjdGl2ZXMsR24udXBkYXRlUmVuZGVyZXI9dC51cGRhdGVSZW5kZXJlcixHbi5kaXJ0eVBhcmVudFF1ZXJpZXM9Wml9fSgpO3ZhciBlPWZ1bmN0aW9uKHQpe3ZhciBlPUFycmF5LmZyb20odC5wcm92aWRlcnMpLG49QXJyYXkuZnJvbSh0Lm1vZHVsZXMpLHI9e307Zm9yKHZhciBvIGluIHQucHJvdmlkZXJzQnlLZXkpcltvXT10LnByb3ZpZGVyc0J5S2V5W29dO3JldHVybntmYWN0b3J5OnQuZmFjdG9yeSxpc1Jvb3Q6dC5pc1Jvb3QscHJvdmlkZXJzOmUsbW9kdWxlczpuLHByb3ZpZGVyc0J5S2V5OnJ9fShkcih0aGlzLl9uZ01vZHVsZURlZkZhY3RvcnkpKTtyZXR1cm4gR24uY3JlYXRlTmdNb2R1bGVSZWYodGhpcy5tb2R1bGVUeXBlLHR8fE1lLk5VTEwsdGhpcy5fYm9vdHN0cmFwQ29tcG9uZW50cyxlKX0sZX0oenQpLGF1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSx1dT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGl0bGU9InRlc3QifX0oKSxsdT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksc3U9bmV3IFR0KCJMb2NhdGlvbiBJbml0aWFsaXplZCIpLGN1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxmdT1uZXcgVHQoImFwcEJhc2VIcmVmIiksaHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9dGhpczt0aGlzLl9zdWJqZWN0PW5ldyBPbyx0aGlzLl91cmxDaGFuZ2VMaXN0ZW5lcnM9W10sdGhpcy5fcGxhdGZvcm1TdHJhdGVneT10O3ZhciBvPXRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuZ2V0QmFzZUhyZWYoKTt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uPW4sdGhpcy5fYmFzZUhyZWY9ZS5zdHJpcFRyYWlsaW5nU2xhc2gocHUobykpLHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kub25Qb3BTdGF0ZSgoZnVuY3Rpb24odCl7ci5fc3ViamVjdC5lbWl0KHt1cmw6ci5wYXRoKCEwKSxwb3A6ITAsc3RhdGU6dC5zdGF0ZSx0eXBlOnQudHlwZX0pfSkpfXZhciBlO3JldHVybiBlPXQsdC5wcm90b3R5cGUucGF0aD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITEpLHRoaXMubm9ybWFsaXplKHRoaXMuX3BsYXRmb3JtU3RyYXRlZ3kucGF0aCh0KSl9LHQucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uZ2V0U3RhdGUoKX0sdC5wcm90b3R5cGUuaXNDdXJyZW50UGF0aEVxdWFsVG89ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49IiIpLHRoaXMucGF0aCgpPT10aGlzLm5vcm1hbGl6ZSh0K2Uubm9ybWFsaXplUXVlcnlQYXJhbXMobikpfSx0LnByb3RvdHlwZS5ub3JtYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIGUuc3RyaXBUcmFpbGluZ1NsYXNoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQmJmUuc3RhcnRzV2l0aCh0KT9lLnN1YnN0cmluZyh0Lmxlbmd0aCk6ZX0odGhpcy5fYmFzZUhyZWYscHUodCkpKX0sdC5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiB0JiYiLyIhPT10WzBdJiYodD0iLyIrdCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodCl9LHQucHJvdG90eXBlLmdvPWZ1bmN0aW9uKHQsbixyKXt2b2lkIDA9PT1uJiYobj0iIiksdm9pZCAwPT09ciYmKHI9bnVsbCksdGhpcy5fcGxhdGZvcm1TdHJhdGVneS5wdXNoU3RhdGUociwiIix0LG4pLHRoaXMuX25vdGlmeVVybENoYW5nZUxpc3RlbmVycyh0aGlzLnByZXBhcmVFeHRlcm5hbFVybCh0K2Uubm9ybWFsaXplUXVlcnlQYXJhbXMobikpLHIpfSx0LnByb3RvdHlwZS5yZXBsYWNlU3RhdGU9ZnVuY3Rpb24odCxuLHIpe3ZvaWQgMD09PW4mJihuPSIiKSx2b2lkIDA9PT1yJiYocj1udWxsKSx0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LnJlcGxhY2VTdGF0ZShyLCIiLHQsbiksdGhpcy5fbm90aWZ5VXJsQ2hhbmdlTGlzdGVuZXJzKHRoaXMucHJlcGFyZUV4dGVybmFsVXJsKHQrZS5ub3JtYWxpemVRdWVyeVBhcmFtcyhuKSkscil9LHQucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybVN0cmF0ZWd5LmZvcndhcmQoKX0sdC5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtU3RyYXRlZ3kuYmFjaygpfSx0LnByb3RvdHlwZS5vblVybENoYW5nZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX3VybENoYW5nZUxpc3RlbmVycy5wdXNoKHQpLHRoaXMuc3Vic2NyaWJlKChmdW5jdGlvbih0KXtlLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnModC51cmwsdC5zdGF0ZSl9KSl9LHQucHJvdG90eXBlLl9ub3RpZnlVcmxDaGFuZ2VMaXN0ZW5lcnM9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10JiYodD0iIiksdGhpcy5fdXJsQ2hhbmdlTGlzdGVuZXJzLmZvckVhY2goKGZ1bmN0aW9uKG4pe3JldHVybiBuKHQsZSl9KSl9LHQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMuX3N1YmplY3Quc3Vic2NyaWJlKHtuZXh0OnQsZXJyb3I6ZSxjb21wbGV0ZTpufSl9LHQubm9ybWFsaXplUXVlcnlQYXJhbXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiI/IiE9PXRbMF0/Ij8iK3Q6dH0sdC5qb2luV2l0aFNsYXNoPWZ1bmN0aW9uKHQsZSl7aWYoMD09dC5sZW5ndGgpcmV0dXJuIGU7aWYoMD09ZS5sZW5ndGgpcmV0dXJuIHQ7dmFyIG49MDtyZXR1cm4gdC5lbmRzV2l0aCgiLyIpJiZuKyssZS5zdGFydHNXaXRoKCIvIikmJm4rKywyPT1uP3QrZS5zdWJzdHJpbmcoMSk6MT09bj90K2U6dCsiLyIrZX0sdC5zdHJpcFRyYWlsaW5nU2xhc2g9ZnVuY3Rpb24odCl7dmFyIGU9dC5tYXRjaCgvI3xcP3wkLyksbj1lJiZlLmluZGV4fHx0Lmxlbmd0aDtyZXR1cm4gdC5zbGljZSgwLG4tKCIvIj09PXRbbi0xXT8xOjApKSt0LnNsaWNlKG4pfSx0fSgpO2Z1bmN0aW9uIHB1KHQpe3JldHVybiB0LnJlcGxhY2UoL1wvaW5kZXguaHRtbCQvLCIiKX12YXIgZHU9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5fcGxhdGZvcm1Mb2NhdGlvbj1lLHIuX2Jhc2VIcmVmPSIiLG51bGwhPW4mJihyLl9iYXNlSHJlZj1uKSxyfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLm9uUG9wU3RhdGUodCksdGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vbkhhc2hDaGFuZ2UodCl9LGUucHJvdG90eXBlLmdldEJhc2VIcmVmPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Jhc2VIcmVmfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmhhc2g7cmV0dXJuIG51bGw9PWUmJihlPSIjIiksZS5sZW5ndGg+MD9lLnN1YnN0cmluZygxKTplfSxlLnByb3RvdHlwZS5wcmVwYXJlRXh0ZXJuYWxVcmw9ZnVuY3Rpb24odCl7dmFyIGU9aHUuam9pbldpdGhTbGFzaCh0aGlzLl9iYXNlSHJlZix0KTtyZXR1cm4gZS5sZW5ndGg+MD8iIyIrZTplfSxlLnByb3RvdHlwZS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcy5wcmVwYXJlRXh0ZXJuYWxVcmwobitodS5ub3JtYWxpemVRdWVyeVBhcmFtcyhyKSk7MD09by5sZW5ndGgmJihvPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucGF0aG5hbWUpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4raHUubm9ybWFsaXplUXVlcnlQYXJhbXMocikpOzA9PW8ubGVuZ3RoJiYobz10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lKSx0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0LGUsbyl9LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uYmFjaygpfSxlfShjdSksZ3U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztpZihyLl9wbGF0Zm9ybUxvY2F0aW9uPWUsbnVsbD09biYmKG49ci5fcGxhdGZvcm1Mb2NhdGlvbi5nZXRCYXNlSHJlZkZyb21ET00oKSksbnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIk5vIGJhc2UgaHJlZiBzZXQuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBBUFBfQkFTRV9IUkVGIHRva2VuIG9yIGFkZCBhIGJhc2UgZWxlbWVudCB0byB0aGUgZG9jdW1lbnQuIik7cmV0dXJuIHIuX2Jhc2VIcmVmPW4scn1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLm9uUG9wU3RhdGU9ZnVuY3Rpb24odCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5vblBvcFN0YXRlKHQpLHRoaXMuX3BsYXRmb3JtTG9jYXRpb24ub25IYXNoQ2hhbmdlKHQpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9iYXNlSHJlZn0sZS5wcm90b3R5cGUucHJlcGFyZUV4dGVybmFsVXJsPWZ1bmN0aW9uKHQpe3JldHVybiBodS5qb2luV2l0aFNsYXNoKHRoaXMuX2Jhc2VIcmVmLHQpfSxlLnByb3RvdHlwZS5wYXRoPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSExKTt2YXIgZT10aGlzLl9wbGF0Zm9ybUxvY2F0aW9uLnBhdGhuYW1lK2h1Lm5vcm1hbGl6ZVF1ZXJ5UGFyYW1zKHRoaXMuX3BsYXRmb3JtTG9jYXRpb24uc2VhcmNoKSxuPXRoaXMuX3BsYXRmb3JtTG9jYXRpb24uaGFzaDtyZXR1cm4gbiYmdD8iIitlK246ZX0sZS5wcm90b3R5cGUucHVzaFN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4raHUubm9ybWFsaXplUXVlcnlQYXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucHVzaFN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMucHJlcGFyZUV4dGVybmFsVXJsKG4raHUubm9ybWFsaXplUXVlcnlQYXJhbXMocikpO3RoaXMuX3BsYXRmb3JtTG9jYXRpb24ucmVwbGFjZVN0YXRlKHQsZSxvKX0sZS5wcm90b3R5cGUuZm9yd2FyZD1mdW5jdGlvbigpe3RoaXMuX3BsYXRmb3JtTG9jYXRpb24uZm9yd2FyZCgpfSxlLnByb3RvdHlwZS5iYWNrPWZ1bmN0aW9uKCl7dGhpcy5fcGxhdGZvcm1Mb2NhdGlvbi5iYWNrKCl9LGV9KGN1KSx2dT1mdW5jdGlvbih0KXtyZXR1cm4gdFt0Llplcm89MF09Ilplcm8iLHRbdC5PbmU9MV09Ik9uZSIsdFt0LlR3bz0yXT0iVHdvIix0W3QuRmV3PTNdPSJGZXciLHRbdC5NYW55PTRdPSJNYW55Iix0W3QuT3RoZXI9NV09Ik90aGVyIix0fSh7fSkseXU9bmV3IFR0KCJVc2VWNFBsdXJhbHMiKSxtdT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksX3U9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzKXx8dGhpcztyZXR1cm4gci5sb2NhbGU9ZSxyLmRlcHJlY2F0ZWRQbHVyYWxGbj1uLHJ9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5nZXRQbHVyYWxDYXRlZ29yeT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0aGlzLmRlcHJlY2F0ZWRQbHVyYWxGbj90aGlzLmRlcHJlY2F0ZWRQbHVyYWxGbihlfHx0aGlzLmxvY2FsZSx0KTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL18vZywiLSIpLG49d29bZV07aWYobilyZXR1cm4gbjt2YXIgcj1lLnNwbGl0KCItIilbMF07aWYobj13b1tyXSlyZXR1cm4gbjtpZigiZW4iPT09cilyZXR1cm4gQ287dGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGxvY2FsZSBkYXRhIGZvciB0aGUgbG9jYWxlICInK3QrJyIuJyl9KHQpW2JvLlBsdXJhbENhc2VdfShlfHx0aGlzLmxvY2FsZSkodCkpe2Nhc2UgdnUuWmVybzpyZXR1cm4iemVybyI7Y2FzZSB2dS5PbmU6cmV0dXJuIm9uZSI7Y2FzZSB2dS5Ud286cmV0dXJuInR3byI7Y2FzZSB2dS5GZXc6cmV0dXJuImZldyI7Y2FzZSB2dS5NYW55OnJldHVybiJtYW55IjtkZWZhdWx0OnJldHVybiJvdGhlciJ9fSxlfShtdSksd3U9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5fdmlld0NvbnRhaW5lclJlZj10LHRoaXMuX3RlbXBsYXRlUmVmPWUsdGhpcy5fY3JlYXRlZD0hMX1yZXR1cm4gdC5wcm90b3R5cGUuY3JlYXRlPWZ1bmN0aW9uKCl7dGhpcy5fY3JlYXRlZD0hMCx0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZil9LHQucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLl9jcmVhdGVkPSExLHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKX0sdC5wcm90b3R5cGUuZW5mb3JjZVN0YXRlPWZ1bmN0aW9uKHQpe3QmJiF0aGlzLl9jcmVhdGVkP3RoaXMuY3JlYXRlKCk6IXQmJnRoaXMuX2NyZWF0ZWQmJnRoaXMuZGVzdHJveSgpfSx0fSgpLGJ1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMuX2RlZmF1bHRVc2VkPSExLHRoaXMuX2Nhc2VDb3VudD0wLHRoaXMuX2xhc3RDYXNlQ2hlY2tJbmRleD0wLHRoaXMuX2xhc3RDYXNlc01hdGNoZWQ9ITF9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwibmdTd2l0Y2giLHtzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fbmdTd2l0Y2g9dCwwPT09dGhpcy5fY2FzZUNvdW50JiZ0aGlzLl91cGRhdGVEZWZhdWx0Q2FzZXMoITApfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLl9hZGRDYXNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Nhc2VDb3VudCsrfSx0LnByb3RvdHlwZS5fYWRkRGVmYXVsdD1mdW5jdGlvbih0KXt0aGlzLl9kZWZhdWx0Vmlld3N8fCh0aGlzLl9kZWZhdWx0Vmlld3M9W10pLHRoaXMuX2RlZmF1bHRWaWV3cy5wdXNoKHQpfSx0LnByb3RvdHlwZS5fbWF0Y2hDYXNlPWZ1bmN0aW9uKHQpe3ZhciBlPXQ9PXRoaXMuX25nU3dpdGNoO3JldHVybiB0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPXRoaXMuX2xhc3RDYXNlc01hdGNoZWR8fGUsdGhpcy5fbGFzdENhc2VDaGVja0luZGV4KyssdGhpcy5fbGFzdENhc2VDaGVja0luZGV4PT09dGhpcy5fY2FzZUNvdW50JiYodGhpcy5fdXBkYXRlRGVmYXVsdENhc2VzKCF0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkKSx0aGlzLl9sYXN0Q2FzZUNoZWNrSW5kZXg9MCx0aGlzLl9sYXN0Q2FzZXNNYXRjaGVkPSExKSxlfSx0LnByb3RvdHlwZS5fdXBkYXRlRGVmYXVsdENhc2VzPWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2RlZmF1bHRWaWV3cyYmdCE9PXRoaXMuX2RlZmF1bHRVc2VkKXt0aGlzLl9kZWZhdWx0VXNlZD10O2Zvcih2YXIgZT0wO2U8dGhpcy5fZGVmYXVsdFZpZXdzLmxlbmd0aDtlKyspdGhpcy5fZGVmYXVsdFZpZXdzW2VdLmVuZm9yY2VTdGF0ZSh0KX19LHR9KCkseHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLm5nU3dpdGNoPW4sbi5fYWRkQ2FzZSgpLHRoaXMuX3ZpZXc9bmV3IHd1KHQsZSl9cmV0dXJuIHQucHJvdG90eXBlLm5nRG9DaGVjaz1mdW5jdGlvbigpe3RoaXMuX3ZpZXcuZW5mb3JjZVN0YXRlKHRoaXMubmdTd2l0Y2guX21hdGNoQ2FzZSh0aGlzLm5nU3dpdGNoQ2FzZSkpfSx0fSgpLEN1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtuLl9hZGREZWZhdWx0KG5ldyB3dSh0LGUpKX19KCksU3U9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLEV1PW5ldyBUdCgiRG9jdW1lbnRUb2tlbiIpLE91PSJzZXJ2ZXIiLFR1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5uZ0luamVjdGFibGVEZWY9ZHQoe3Rva2VuOnQscHJvdmlkZWRJbjoicm9vdCIsZmFjdG9yeTpmdW5jdGlvbigpe3JldHVybiBuZXcgUHUoVXQoRXUpLHdpbmRvdyxVdCgkdCkpfX0pLHR9KCksUHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLmRvY3VtZW50PXQsdGhpcy53aW5kb3c9ZSx0aGlzLmVycm9ySGFuZGxlcj1uLHRoaXMub2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuWzAsMF19fXJldHVybiB0LnByb3RvdHlwZS5zZXRPZmZzZXQ9ZnVuY3Rpb24odCl7dGhpcy5vZmZzZXQ9QXJyYXkuaXNBcnJheSh0KT9mdW5jdGlvbigpe3JldHVybiB0fTp0fSx0LnByb3RvdHlwZS5nZXRTY3JvbGxQb3NpdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN1cHBvcnRTY3JvbGxSZXN0b3JhdGlvbigpP1t0aGlzLndpbmRvdy5zY3JvbGxYLHRoaXMud2luZG93LnNjcm9sbFldOlswLDBdfSx0LnByb3RvdHlwZS5zY3JvbGxUb1Bvc2l0aW9uPWZ1bmN0aW9uKHQpe3RoaXMuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCkmJnRoaXMud2luZG93LnNjcm9sbFRvKHRbMF0sdFsxXSl9LHQucHJvdG90eXBlLnNjcm9sbFRvQW5jaG9yPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCkpe3Q9dGhpcy53aW5kb3cuQ1NTJiZ0aGlzLndpbmRvdy5DU1MuZXNjYXBlP3RoaXMud2luZG93LkNTUy5lc2NhcGUodCk6dC5yZXBsYWNlKC8oXCJ8XCdcIHw6fFwufFxbfFxdfCx8PSkvZywiXFwkMSIpO3RyeXt2YXIgZT10aGlzLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiK3QpO2lmKGUpcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQoZSk7dmFyIG49dGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJbbmFtZT0nIit0KyInXSIpO2lmKG4pcmV0dXJuIHZvaWQgdGhpcy5zY3JvbGxUb0VsZW1lbnQobil9Y2F0Y2gocil7dGhpcy5lcnJvckhhbmRsZXIuaGFuZGxlRXJyb3Iocil9fX0sdC5wcm90b3R5cGUuc2V0SGlzdG9yeVNjcm9sbFJlc3RvcmF0aW9uPWZ1bmN0aW9uKHQpe2lmKHRoaXMuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uKCkpe3ZhciBlPXRoaXMud2luZG93Lmhpc3Rvcnk7ZSYmZS5zY3JvbGxSZXN0b3JhdGlvbiYmKGUuc2Nyb2xsUmVzdG9yYXRpb249dCl9fSx0LnByb3RvdHlwZS5zY3JvbGxUb0VsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWUubGVmdCt0aGlzLndpbmRvdy5wYWdlWE9mZnNldCxyPWUudG9wK3RoaXMud2luZG93LnBhZ2VZT2Zmc2V0LG89dGhpcy5vZmZzZXQoKTt0aGlzLndpbmRvdy5zY3JvbGxUbyhuLW9bMF0sci1vWzFdKX0sdC5wcm90b3R5cGUuc3VwcG9ydFNjcm9sbFJlc3RvcmF0aW9uPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiEhdGhpcy53aW5kb3cmJiEhdGhpcy53aW5kb3cuc2Nyb2xsVG99Y2F0Y2godCl7cmV0dXJuITF9fSx0fSgpLGt1PW5ldyB4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5jb21wbGV0ZSgpfSkpO2Z1bmN0aW9uIEF1KHQpe3JldHVybiB0P2Z1bmN0aW9uKHQpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuc2NoZWR1bGUoKGZ1bmN0aW9uKCl7cmV0dXJuIGUuY29tcGxldGUoKX0pKX0pKX0odCk6a3V9ZnVuY3Rpb24gSXUodCl7dmFyIGU9bmV3IHgoKGZ1bmN0aW9uKGUpe2UubmV4dCh0KSxlLmNvbXBsZXRlKCl9KSk7cmV0dXJuIGUuX2lzU2NhbGFyPSEwLGUudmFsdWU9dCxlfWZ1bmN0aW9uIFJ1KCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPXRbdC5sZW5ndGgtMV07c3dpdGNoKEEobik/dC5wb3AoKTpuPXZvaWQgMCx0Lmxlbmd0aCl7Y2FzZSAwOnJldHVybiBBdShuKTtjYXNlIDE6cmV0dXJuIG4/cSh0LG4pOkl1KHRbMF0pO2RlZmF1bHQ6cmV0dXJuIHEodCxuKX19dmFyIE11PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl92YWx1ZT1lLG59cmV0dXJuIHIuX19leHRlbmRzKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJ2YWx1ZSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFZhbHVlKCl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuX3N1YnNjcmliZT1mdW5jdGlvbihlKXt2YXIgbj10LnByb3RvdHlwZS5fc3Vic2NyaWJlLmNhbGwodGhpcyxlKTtyZXR1cm4gbiYmIW4uY2xvc2VkJiZlLm5leHQodGhpcy5fdmFsdWUpLG59LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKCl7aWYodGhpcy5oYXNFcnJvcil0aHJvdyB0aGlzLnRocm93bkVycm9yO2lmKHRoaXMuY2xvc2VkKXRocm93IG5ldyBFO3JldHVybiB0aGlzLl92YWx1ZX0sZS5wcm90b3R5cGUubmV4dD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5uZXh0LmNhbGwodGhpcyx0aGlzLl92YWx1ZT1lKX0sZX0oUCk7ZnVuY3Rpb24ganUoKXtyZXR1cm4gRXJyb3IuY2FsbCh0aGlzKSx0aGlzLm1lc3NhZ2U9Im5vIGVsZW1lbnRzIGluIHNlcXVlbmNlIix0aGlzLm5hbWU9IkVtcHR5RXJyb3IiLHRoaXN9anUucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTt2YXIgTnU9anUsRHU9e307ZnVuY3Rpb24gVXUoKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIEEodFt0Lmxlbmd0aC0xXSkmJihyPXQucG9wKCkpLCJmdW5jdGlvbiI9PXR5cGVvZiB0W3QubGVuZ3RoLTFdJiYobj10LnBvcCgpKSwxPT09dC5sZW5ndGgmJm8odFswXSkmJih0PXRbMF0pLHEodCxyKS5saWZ0KG5ldyBMdShuKSl9dmFyIEx1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnJlc3VsdFNlbGVjdG9yPXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IFZ1KHQsdGhpcy5yZXN1bHRTZWxlY3RvcikpfSx0fSgpLFZ1PWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5yZXN1bHRTZWxlY3Rvcj1uLHIuYWN0aXZlPTAsci52YWx1ZXM9W10sci5vYnNlcnZhYmxlcz1bXSxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3RoaXMudmFsdWVzLnB1c2goRHUpLHRoaXMub2JzZXJ2YWJsZXMucHVzaCh0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vYnNlcnZhYmxlcyxlPXQubGVuZ3RoO2lmKDA9PT1lKXRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKTtlbHNle3RoaXMuYWN0aXZlPWUsdGhpcy50b1Jlc3BvbmQ9ZTtmb3IodmFyIG49MDtuPGU7bisrKXt2YXIgcj10W25dO3RoaXMuYWRkKHoodGhpcyxyLHIsbikpfX19LGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpezA9PSh0aGlzLmFjdGl2ZS09MSkmJnRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZS5wcm90b3R5cGUubm90aWZ5TmV4dD1mdW5jdGlvbih0LGUsbixyLG8pe3ZhciBpPXRoaXMudmFsdWVzLGE9dGhpcy50b1Jlc3BvbmQ/aVtuXT09PUR1Py0tdGhpcy50b1Jlc3BvbmQ6dGhpcy50b1Jlc3BvbmQ6MDtpW25dPWUsMD09PWEmJih0aGlzLnJlc3VsdFNlbGVjdG9yP3RoaXMuX3RyeVJlc3VsdFNlbGVjdG9yKGkpOnRoaXMuZGVzdGluYXRpb24ubmV4dChpLnNsaWNlKCkpKX0sZS5wcm90b3R5cGUuX3RyeVJlc3VsdFNlbGVjdG9yPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPXRoaXMucmVzdWx0U2VsZWN0b3IuYXBwbHkodGhpcyx0KX1jYXRjaChuKXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKG4pfXRoaXMuZGVzdGluYXRpb24ubmV4dChlKX0sZX0oRik7ZnVuY3Rpb24gSHUodCl7cmV0dXJuIG5ldyB4KChmdW5jdGlvbihlKXt2YXIgbjt0cnl7bj10KCl9Y2F0Y2gocil7cmV0dXJuIHZvaWQgZS5lcnJvcihyKX1yZXR1cm4obj9XKG4pOkF1KCkpLnN1YnNjcmliZShlKX0pKX1mdW5jdGlvbiB6dSgpe3JldHVybiAkKDEpfWZ1bmN0aW9uIEZ1KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuLmxpZnQobmV3IEJ1KHQsZSkpfX12YXIgQnU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5wcmVkaWNhdGU9dCx0aGlzLnRoaXNBcmc9ZX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgWnUodCx0aGlzLnByZWRpY2F0ZSx0aGlzLnRoaXNBcmcpKX0sdH0oKSxadT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gby5wcmVkaWNhdGU9bixvLnRoaXNBcmc9cixvLmNvdW50PTAsb31yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt2YXIgZTt0cnl7ZT10aGlzLnByZWRpY2F0ZS5jYWxsKHRoaXMudGhpc0FyZyx0LHRoaXMuY291bnQrKyl9Y2F0Y2gobil7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihuKX1lJiZ0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGV9KHYpO2Z1bmN0aW9uIEd1KCl7cmV0dXJuIEVycm9yLmNhbGwodGhpcyksdGhpcy5tZXNzYWdlPSJhcmd1bWVudCBvdXQgb2YgcmFuZ2UiLHRoaXMubmFtZT0iQXJndW1lbnRPdXRPZlJhbmdlRXJyb3IiLHRoaXN9R3UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTt2YXIgcXU9R3U7ZnVuY3Rpb24gV3UodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAwPT09dD9BdSgpOmUubGlmdChuZXcgUXUodCkpfX12YXIgUXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHRoaXMudG90YWw9dCx0aGlzLnRvdGFsPDApdGhyb3cgbmV3IHF1fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyBLdSh0LHRoaXMudG90YWwpKX0sdH0oKSxLdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIudG90YWw9bixyLnJpbmc9bmV3IEFycmF5LHIuY291bnQ9MCxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucmluZyxuPXRoaXMudG90YWwscj10aGlzLmNvdW50Kys7ZS5sZW5ndGg8bj9lLnB1c2godCk6ZVtyJW5dPXR9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZGVzdGluYXRpb24sZT10aGlzLmNvdW50O2lmKGU+MClmb3IodmFyIG49dGhpcy5jb3VudD49dGhpcy50b3RhbD90aGlzLnRvdGFsOnRoaXMuY291bnQscj10aGlzLnJpbmcsbz0wO288bjtvKyspe3ZhciBpPWUrKyVuO3QubmV4dChyW2ldKX10LmNvbXBsZXRlKCl9LGV9KHYpO2Z1bmN0aW9uIFl1KHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHIubGlmdChuZXcgSnUodCxlLG4pKX19dmFyIEp1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5uZXh0T3JPYnNlcnZlcj10LHRoaXMuZXJyb3I9ZSx0aGlzLmNvbXBsZXRlPW59cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3ICR1KHQsdGhpcy5uZXh0T3JPYnNlcnZlcix0aGlzLmVycm9yLHRoaXMuY29tcGxldGUpKX0sdH0oKSwkdT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLl90YXBOZXh0PV8saS5fdGFwRXJyb3I9XyxpLl90YXBDb21wbGV0ZT1fLGkuX3RhcEVycm9yPXJ8fF8saS5fdGFwQ29tcGxldGU9b3x8XyxhKG4pPyhpLl9jb250ZXh0PWksaS5fdGFwTmV4dD1uKTpuJiYoaS5fY29udGV4dD1uLGkuX3RhcE5leHQ9bi5uZXh0fHxfLGkuX3RhcEVycm9yPW4uZXJyb3J8fF8saS5fdGFwQ29tcGxldGU9bi5jb21wbGV0ZXx8XyksaX1yZXR1cm4gci5fX2V4dGVuZHMoZSx0KSxlLnByb3RvdHlwZS5fbmV4dD1mdW5jdGlvbih0KXt0cnl7dGhpcy5fdGFwTmV4dC5jYWxsKHRoaXMuX2NvbnRleHQsdCl9Y2F0Y2goZSl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcihlKX10aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGUucHJvdG90eXBlLl9lcnJvcj1mdW5jdGlvbih0KXt0cnl7dGhpcy5fdGFwRXJyb3IuY2FsbCh0aGlzLl9jb250ZXh0LHQpfWNhdGNoKHQpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3IodCl9dGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dHJ5e3RoaXMuX3RhcENvbXBsZXRlLmNhbGwodGhpcy5fY29udGV4dCl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgdGhpcy5kZXN0aW5hdGlvbi5lcnJvcih0KX1yZXR1cm4gdGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpfSxlfSh2KSxYdT1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9dGwpLFl1KHtoYXNWYWx1ZTohMSxuZXh0OmZ1bmN0aW9uKCl7dGhpcy5oYXNWYWx1ZT0hMH0sY29tcGxldGU6ZnVuY3Rpb24oKXtpZighdGhpcy5oYXNWYWx1ZSl0aHJvdyB0KCl9fSl9O2Z1bmN0aW9uIHRsKCl7cmV0dXJuIG5ldyBOdX1mdW5jdGlvbiBlbCh0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9bnVsbCksZnVuY3Rpb24oZSl7cmV0dXJuIGUubGlmdChuZXcgbmwodCkpfX12YXIgbmw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuZGVmYXVsdFZhbHVlPXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHJsKHQsdGhpcy5kZWZhdWx0VmFsdWUpKX0sdH0oKSxybD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuZGVmYXVsdFZhbHVlPW4sci5pc0VtcHR5PSEwLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dGhpcy5pc0VtcHR5PSExLHRoaXMuZGVzdGluYXRpb24ubmV4dCh0KX0sZS5wcm90b3R5cGUuX2NvbXBsZXRlPWZ1bmN0aW9uKCl7dGhpcy5pc0VtcHR5JiZ0aGlzLmRlc3RpbmF0aW9uLm5leHQodGhpcy5kZWZhdWx0VmFsdWUpLHRoaXMuZGVzdGluYXRpb24uY29tcGxldGUoKX0sZX0odik7ZnVuY3Rpb24gb2wodCxlKXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoPj0yO3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gci5waXBlKHQ/RnUoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoZSxuLHIpfSkpOkosV3UoMSksbj9lbChlKTpYdSgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE51fSkpKX19ZnVuY3Rpb24gaWwodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPW5ldyBhbCh0KSxyPWUubGlmdChuKTtyZXR1cm4gbi5jYXVnaHQ9cn19dmFyIGFsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnNlbGVjdG9yPXR9cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHVsKHQsdGhpcy5zZWxlY3Rvcix0aGlzLmNhdWdodCkpfSx0fSgpLHVsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBvLnNlbGVjdG9yPW4sby5jYXVnaHQ9cixvfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmlzU3RvcHBlZCl7dmFyIG49dm9pZCAwO3RyeXtuPXRoaXMuc2VsZWN0b3IoZSx0aGlzLmNhdWdodCl9Y2F0Y2gobyl7cmV0dXJuIHZvaWQgdC5wcm90b3R5cGUuZXJyb3IuY2FsbCh0aGlzLG8pfXRoaXMuX3Vuc3Vic2NyaWJlQW5kUmVjeWNsZSgpO3ZhciByPW5ldyBJKHRoaXMsdm9pZCAwLHZvaWQgMCk7dGhpcy5hZGQocikseih0aGlzLG4sdm9pZCAwLHZvaWQgMCxyKX19LGV9KEYpO2Z1bmN0aW9uIGxsKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMD09PXQ/QXUoKTplLmxpZnQobmV3IHNsKHQpKX19dmFyIHNsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtpZih0aGlzLnRvdGFsPXQsdGhpcy50b3RhbDwwKXRocm93IG5ldyBxdX1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgY2wodCx0aGlzLnRvdGFsKSl9LHR9KCksY2w9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4pe3ZhciByPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiByLnRvdGFsPW4sci5jb3VudD0wLHJ9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksZS5wcm90b3R5cGUuX25leHQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50b3RhbCxuPSsrdGhpcy5jb3VudDtuPD1lJiYodGhpcy5kZXN0aW5hdGlvbi5uZXh0KHQpLG49PT1lJiYodGhpcy5kZXN0aW5hdGlvbi5jb21wbGV0ZSgpLHRoaXMudW5zdWJzY3JpYmUoKSkpfSxlfSh2KTtmdW5jdGlvbiBmbCh0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+PTI7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByLnBpcGUodD9GdSgoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlLG4scil9KSk6SixsbCgxKSxuP2VsKGUpOlh1KChmdW5jdGlvbigpe3JldHVybiBuZXcgTnV9KSkpfX12YXIgaGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnByZWRpY2F0ZT10LHRoaXMudGhpc0FyZz1lLHRoaXMuc291cmNlPW59cmV0dXJuIHQucHJvdG90eXBlLmNhbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5zdWJzY3JpYmUobmV3IHBsKHQsdGhpcy5wcmVkaWNhdGUsdGhpcy50aGlzQXJnLHRoaXMuc291cmNlKSl9LHR9KCkscGw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gaS5wcmVkaWNhdGU9bixpLnRoaXNBcmc9cixpLnNvdXJjZT1vLGkuaW5kZXg9MCxpLnRoaXNBcmc9cnx8aSxpfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLm5vdGlmeUNvbXBsZXRlPWZ1bmN0aW9uKHQpe3RoaXMuZGVzdGluYXRpb24ubmV4dCh0KSx0aGlzLmRlc3RpbmF0aW9uLmNvbXBsZXRlKCl9LGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPSExO3RyeXtlPXRoaXMucHJlZGljYXRlLmNhbGwodGhpcy50aGlzQXJnLHQsdGhpcy5pbmRleCsrLHRoaXMuc291cmNlKX1jYXRjaChuKXtyZXR1cm4gdm9pZCB0aGlzLmRlc3RpbmF0aW9uLmVycm9yKG4pfWV8fHRoaXMubm90aWZ5Q29tcGxldGUoITEpfSxlLnByb3RvdHlwZS5fY29tcGxldGU9ZnVuY3Rpb24oKXt0aGlzLm5vdGlmeUNvbXBsZXRlKCEwKX0sZX0odik7ZnVuY3Rpb24gZGwodCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZT9mdW5jdGlvbihuKXtyZXR1cm4gbi5waXBlKGRsKChmdW5jdGlvbihuLHIpe3JldHVybiBXKHQobixyKSkucGlwZShCKChmdW5jdGlvbih0LG8pe3JldHVybiBlKG4sdCxyLG8pfSkpKX0pKSl9OmZ1bmN0aW9uKGUpe3JldHVybiBlLmxpZnQobmV3IGdsKHQpKX19dmFyIGdsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnByb2plY3Q9dH1yZXR1cm4gdC5wcm90b3R5cGUuY2FsbD1mdW5jdGlvbih0LGUpe3JldHVybiBlLnN1YnNjcmliZShuZXcgdmwodCx0aGlzLnByb2plY3QpKX0sdH0oKSx2bD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIucHJvamVjdD1uLHIuaW5kZXg9MCxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5pbmRleCsrO3RyeXtlPXRoaXMucHJvamVjdCh0LG4pfWNhdGNoKHIpe3JldHVybiB2b2lkIHRoaXMuZGVzdGluYXRpb24uZXJyb3Iocil9dGhpcy5faW5uZXJTdWIoZSx0LG4pfSxlLnByb3RvdHlwZS5faW5uZXJTdWI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuaW5uZXJTdWJzY3JpcHRpb247ciYmci51bnN1YnNjcmliZSgpO3ZhciBvPW5ldyBJKHRoaXMsdm9pZCAwLHZvaWQgMCk7dGhpcy5kZXN0aW5hdGlvbi5hZGQobyksdGhpcy5pbm5lclN1YnNjcmlwdGlvbj16KHRoaXMsdCxlLG4sbyl9LGUucHJvdG90eXBlLl9jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuaW5uZXJTdWJzY3JpcHRpb247ZSYmIWUuY2xvc2VkfHx0LnByb3RvdHlwZS5fY29tcGxldGUuY2FsbCh0aGlzKSx0aGlzLnVuc3Vic2NyaWJlKCl9LGUucHJvdG90eQ=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?3?1",
"type": "binary",
"value": "base64:cGUuX3Vuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhpcy5pbm5lclN1YnNjcmlwdGlvbj1udWxsfSxlLnByb3RvdHlwZS5ub3RpZnlDb21wbGV0ZT1mdW5jdGlvbihlKXt0aGlzLmRlc3RpbmF0aW9uLnJlbW92ZShlKSx0aGlzLmlubmVyU3Vic2NyaXB0aW9uPW51bGwsdGhpcy5pc1N0b3BwZWQmJnQucHJvdG90eXBlLl9jb21wbGV0ZS5jYWxsKHRoaXMpfSxlLnByb3RvdHlwZS5ub3RpZnlOZXh0PWZ1bmN0aW9uKHQsZSxuLHIsbyl7dGhpcy5kZXN0aW5hdGlvbi5uZXh0KGUpfSxlfShGKTtmdW5jdGlvbiB5bCgpe2Zvcih2YXIgdD1bXSxlPTA7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl0W2VdPWFyZ3VtZW50c1tlXTtyZXR1cm4genUoKShSdS5hcHBseSh2b2lkIDAsdCkpfWZ1bmN0aW9uIG1sKHQsZSl7dmFyIG49ITE7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTImJihuPSEwKSxmdW5jdGlvbihyKXtyZXR1cm4gci5saWZ0KG5ldyBfbCh0LGUsbikpfX12YXIgX2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2b2lkIDA9PT1uJiYobj0hMSksdGhpcy5hY2N1bXVsYXRvcj10LHRoaXMuc2VlZD1lLHRoaXMuaGFzU2VlZD1ufXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyB3bCh0LHRoaXMuYWNjdW11bGF0b3IsdGhpcy5zZWVkLHRoaXMuaGFzU2VlZCkpfSx0fSgpLHdsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIGkuYWNjdW11bGF0b3I9bixpLl9zZWVkPXIsaS5oYXNTZWVkPW8saS5pbmRleD0wLGl9cmV0dXJuIHIuX19leHRlbmRzKGUsdCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzZWVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NlZWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLmhhc1NlZWQ9ITAsdGhpcy5fc2VlZD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLl9uZXh0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuaGFzU2VlZClyZXR1cm4gdGhpcy5fdHJ5TmV4dCh0KTt0aGlzLnNlZWQ9dCx0aGlzLmRlc3RpbmF0aW9uLm5leHQodCl9LGUucHJvdG90eXBlLl90cnlOZXh0PWZ1bmN0aW9uKHQpe3ZhciBlLG49dGhpcy5pbmRleCsrO3RyeXtlPXRoaXMuYWNjdW11bGF0b3IodGhpcy5zZWVkLHQsbil9Y2F0Y2gocil7dGhpcy5kZXN0aW5hdGlvbi5lcnJvcihyKX10aGlzLnNlZWQ9ZSx0aGlzLmRlc3RpbmF0aW9uLm5leHQoZSl9LGV9KHYpO2Z1bmN0aW9uIGJsKHQsZSl7cmV0dXJuIFEodCxlLDEpfXZhciB4bD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5jYWxsYmFjaz10fXJldHVybiB0LnByb3RvdHlwZS5jYWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuc3Vic2NyaWJlKG5ldyBDbCh0LHRoaXMuY2FsbGJhY2spKX0sdH0oKSxDbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIHIuYWRkKG5ldyBzKG4pKSxyfXJldHVybiByLl9fZXh0ZW5kcyhlLHQpLGV9KHYpLFNsPW51bGw7ZnVuY3Rpb24gRWwoKXtyZXR1cm4gU2x9dmFyIE9sLFRsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoKXt2YXIgZT10LmNhbGwodGhpcyl8fHRoaXM7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5fdHJhbnNpdGlvbkVuZD1udWxsO3RyeXt2YXIgbj1lLmNyZWF0ZUVsZW1lbnQoImRpdiIsZG9jdW1lbnQpO2lmKG51bGwhPWUuZ2V0U3R5bGUobiwiYW5pbWF0aW9uTmFtZSIpKWUuX2FuaW1hdGlvblByZWZpeD0iIjtlbHNlIGZvcih2YXIgcj1bIldlYmtpdCIsIk1veiIsIk8iLCJtcyJdLG89MDtvPHIubGVuZ3RoO28rKylpZihudWxsIT1lLmdldFN0eWxlKG4scltvXSsiQW5pbWF0aW9uTmFtZSIpKXtlLl9hbmltYXRpb25QcmVmaXg9Ii0iK3Jbb10udG9Mb3dlckNhc2UoKSsiLSI7YnJlYWt9dmFyIGk9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O09iamVjdC5rZXlzKGkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe251bGwhPWUuZ2V0U3R5bGUobix0KSYmKGUuX3RyYW5zaXRpb25FbmQ9aVt0XSl9KSl9Y2F0Y2goYSl7ZS5fYW5pbWF0aW9uUHJlZml4PW51bGwsZS5fdHJhbnNpdGlvbkVuZD1udWxsfXJldHVybiBlfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuZ2V0RGlzdHJpYnV0ZWROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXREaXN0cmlidXRlZE5vZGVzKCl9LGUucHJvdG90eXBlLnJlc29sdmVBbmRTZXRIcmVmPWZ1bmN0aW9uKHQsZSxuKXt0LmhyZWY9bnVsbD09bj9lOmUrIi8uLi8iK259LGUucHJvdG90eXBlLnN1cHBvcnRzRE9NRXZlbnRzPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGUucHJvdG90eXBlLnN1cHBvcnRzTmF0aXZlU2hhZG93RE9NPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGRvY3VtZW50LmJvZHkuY3JlYXRlU2hhZG93Um9vdH0sZS5wcm90b3R5cGUuZ2V0QW5pbWF0aW9uUHJlZml4PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FuaW1hdGlvblByZWZpeD90aGlzLl9hbmltYXRpb25QcmVmaXg6IiJ9LGUucHJvdG90eXBlLmdldFRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdHJhbnNpdGlvbkVuZD90aGlzLl90cmFuc2l0aW9uRW5kOiIifSxlLnByb3RvdHlwZS5zdXBwb3J0c0FuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLl9hbmltYXRpb25QcmVmaXgmJm51bGwhPXRoaXMuX3RyYW5zaXRpb25FbmR9LGV9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3RoaXMucmVzb3VyY2VMb2FkZXJUeXBlPW51bGx9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hdHRyVG9Qcm9wTWFwfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fYXR0clRvUHJvcE1hcD10fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHR9KCkpLFBsPXtjbGFzczoiY2xhc3NOYW1lIixpbm5lckh0bWw6ImlubmVySFRNTCIscmVhZG9ubHk6InJlYWRPbmx5Iix0YWJpbmRleDoidGFiSW5kZXgifSxrbD17IlxiIjoiQmFja3NwYWNlIiwiXHQiOiJUYWIiLCJ/IjoiRGVsZXRlIiwiGyI6IkVzY2FwZSIsRGVsOiJEZWxldGUiLEVzYzoiRXNjYXBlIixMZWZ0OiJBcnJvd0xlZnQiLFJpZ2h0OiJBcnJvd1JpZ2h0IixVcDoiQXJyb3dVcCIsRG93bjoiQXJyb3dEb3duIixNZW51OiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2NrIixXaW46Ik9TIn0sQWw9e0E6IjEiLEI6IjIiLEM6IjMiLEQ6IjQiLEU6IjUiLEY6IjYiLEc6IjciLEg6IjgiLEk6IjkiLEo6IioiLEs6IisiLE06Ii0iLE46Ii4iLE86Ii8iLCJgIjoiMCIsIsKQIjoiTnVtTG9jayJ9LElsPWZ1bmN0aW9uKCl7aWYoT3QuTm9kZSlyZXR1cm4gT3QuTm9kZS5wcm90b3R5cGUuY29udGFpbnN8fGZ1bmN0aW9uKHQpe3JldHVybiEhKDE2JnRoaXMuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpfX0oKSxSbD1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicGFyc2Ugbm90IGltcGxlbWVudGVkIil9LGUubWFrZUN1cnJlbnQ9ZnVuY3Rpb24oKXt2YXIgdDt0PW5ldyBlLFNsfHwoU2w9dCl9LGUucHJvdG90eXBlLmhhc1Byb3BlcnR5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUgaW4gdH0sZS5wcm90b3R5cGUuc2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlLG4pe3RbZV09bn0sZS5wcm90b3R5cGUuZ2V0UHJvcGVydHk9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXX0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbzsobz10KVtlXS5hcHBseShvLE9iamVjdChyLl9fc3ByZWFkKShuKSl9LGUucHJvdG90eXBlLmxvZ0Vycm9yPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiYoY29uc29sZS5lcnJvcj9jb25zb2xlLmVycm9yKHQpOmNvbnNvbGUubG9nKHQpKX0sZS5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKHQpe3dpbmRvdy5jb25zb2xlJiZ3aW5kb3cuY29uc29sZS5sb2cmJndpbmRvdy5jb25zb2xlLmxvZyh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXA9ZnVuY3Rpb24odCl7d2luZG93LmNvbnNvbGUmJndpbmRvdy5jb25zb2xlLmdyb3VwJiZ3aW5kb3cuY29uc29sZS5ncm91cCh0KX0sZS5wcm90b3R5cGUubG9nR3JvdXBFbmQ9ZnVuY3Rpb24oKXt3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUuZ3JvdXBFbmQmJndpbmRvdy5jb25zb2xlLmdyb3VwRW5kKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYXR0clRvUHJvcE1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiBQbH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0LGUpe3JldHVybiBJbC5jYWxsKHQsZSl9LGUucHJvdG90eXBlLnF1ZXJ5U2VsZWN0b3I9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yKGUpfSxlLnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChlKX0sZS5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlLG4pe3QuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpfSxlLnByb3RvdHlwZS5vbkFuZENhbmNlbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLG4sITEpLGZ1bmN0aW9uKCl7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbiwhMSl9fSxlLnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50PWZ1bmN0aW9uKHQsZSl7dC5kaXNwYXRjaEV2ZW50KGUpfSxlLnByb3RvdHlwZS5jcmVhdGVNb3VzZUV2ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUuY3JlYXRlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKS5jcmVhdGVFdmVudCgiRXZlbnQiKTtyZXR1cm4gZS5pbml0RXZlbnQodCwhMCwhMCksZX0sZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQucmV0dXJuVmFsdWU9ITF9LGUucHJvdG90eXBlLmlzUHJldmVudGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0LmRlZmF1bHRQcmV2ZW50ZWR8fG51bGwhPXQucmV0dXJuVmFsdWUmJiF0LnJldHVyblZhbHVlfSxlLnByb3RvdHlwZS5nZXRJbm5lckhUTUw9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5uZXJIVE1MfSxlLnByb3RvdHlwZS5nZXRUZW1wbGF0ZUNvbnRlbnQ9ZnVuY3Rpb24odCl7cmV0dXJuImNvbnRlbnQiaW4gdCYmdGhpcy5pc1RlbXBsYXRlRWxlbWVudCh0KT90LmNvbnRlbnQ6bnVsbH0sZS5wcm90b3R5cGUuZ2V0T3V0ZXJIVE1MPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm91dGVySFRNTH0sZS5wcm90b3R5cGUubm9kZU5hbWU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZU5hbWV9LGUucHJvdG90eXBlLm5vZGVWYWx1ZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVmFsdWV9LGUucHJvdG90eXBlLnR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZX0sZS5wcm90b3R5cGUuY29udGVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXNQcm9wZXJ0eSh0LCJjb250ZW50Iik/dC5jb250ZW50OnR9LGUucHJvdG90eXBlLmZpcnN0Q2hpbGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZmlyc3RDaGlsZH0sZS5wcm90b3R5cGUubmV4dFNpYmxpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHQubmV4dFNpYmxpbmd9LGUucHJvdG90eXBlLnBhcmVudEVsZW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQucGFyZW50Tm9kZX0sZS5wcm90b3R5cGUuY2hpbGROb2Rlcz1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGlsZE5vZGVzfSxlLnByb3RvdHlwZS5jaGlsZE5vZGVzQXNMaXN0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNoaWxkTm9kZXMsbj1uZXcgQXJyYXkoZS5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoO3IrKyluW3JdPWVbcl07cmV0dXJuIG59LGUucHJvdG90eXBlLmNsZWFyTm9kZXM9ZnVuY3Rpb24odCl7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKX0sZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0LmFwcGVuZENoaWxkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQ2hpbGQoZSl9LGUucHJvdG90eXBlLnJlcGxhY2VDaGlsZD1mdW5jdGlvbih0LGUsbil7dC5yZXBsYWNlQ2hpbGQoZSxuKX0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0fSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24odCxlLG4pe3QuaW5zZXJ0QmVmb3JlKG4sZSl9LGUucHJvdG90eXBlLmluc2VydEFsbEJlZm9yZT1mdW5jdGlvbih0LGUsbil7bi5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gdC5pbnNlcnRCZWZvcmUobixlKX0pKX0sZS5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXI9ZnVuY3Rpb24odCxlLG4pe3QuaW5zZXJ0QmVmb3JlKG4sZS5uZXh0U2libGluZyl9LGUucHJvdG90eXBlLnNldElubmVySFRNTD1mdW5jdGlvbih0LGUpe3QuaW5uZXJIVE1MPWV9LGUucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQudGV4dENvbnRlbnR9LGUucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24odCxlKXt0LnRleHRDb250ZW50PWV9LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0LGUpe3QudmFsdWU9ZX0sZS5wcm90b3R5cGUuZ2V0Q2hlY2tlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5jaGVja2VkfSxlLnByb3RvdHlwZS5zZXRDaGVja2VkPWZ1bmN0aW9uKHQsZSl7dC5jaGVja2VkPWV9LGUucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkuY3JlYXRlQ29tbWVudCh0KX0sZS5wcm90b3R5cGUuY3JlYXRlVGVtcGxhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREZWZhdWx0RG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO3JldHVybiBlLmlubmVySFRNTD10LGV9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4oZT1lfHx0aGlzLmdldERlZmF1bHREb2N1bWVudCgpKS5jcmVhdGVFbGVtZW50KHQpfSxlLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50TlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybihuPW58fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnROUyh0LGUpfSxlLnByb3RvdHlwZS5jcmVhdGVUZXh0Tm9kZT1mdW5jdGlvbih0LGUpe3JldHVybihlPWV8fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZVRleHROb2RlKHQpfSxlLnByb3RvdHlwZS5jcmVhdGVTY3JpcHRUYWc9ZnVuY3Rpb24odCxlLG4pe3ZhciByPShuPW58fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQoIlNDUklQVCIpO3JldHVybiByLnNldEF0dHJpYnV0ZSh0LGUpLHJ9LGUucHJvdG90eXBlLmNyZWF0ZVN0eWxlRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPShlPWV8fHRoaXMuZ2V0RGVmYXVsdERvY3VtZW50KCkpLmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQobix0aGlzLmNyZWF0ZVRleHROb2RlKHQsZSkpLG59LGUucHJvdG90eXBlLmNyZWF0ZVNoYWRvd1Jvb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY3JlYXRlU2hhZG93Um9vdCgpfSxlLnByb3RvdHlwZS5nZXRTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0LnNoYWRvd1Jvb3R9LGUucHJvdG90eXBlLmdldEhvc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQuaG9zdH0sZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xvbmVOb2RlKCEwKX0sZS5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZSl9LGUucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSl9LGUucHJvdG90eXBlLmNsYXNzTGlzdD1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodC5jbGFzc0xpc3QsMCl9LGUucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sZS5wcm90b3R5cGUuaGFzQ2xhc3M9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSl9LGUucHJvdG90eXBlLnNldFN0eWxlPWZ1bmN0aW9uKHQsZSxuKXt0LnN0eWxlW2VdPW59LGUucHJvdG90eXBlLnJlbW92ZVN0eWxlPWZ1bmN0aW9uKHQsZSl7dC5zdHlsZVtlXT0iIn0sZS5wcm90b3R5cGUuZ2V0U3R5bGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdHlsZVtlXX0sZS5wcm90b3R5cGUuaGFzU3R5bGU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMuZ2V0U3R5bGUodCxlKXx8IiI7cmV0dXJuIG4/cj09bjpyLmxlbmd0aD4wfSxlLnByb3RvdHlwZS50YWdOYW1lPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRhZ05hbWV9LGUucHJvdG90eXBlLmF0dHJpYnV0ZU1hcD1mdW5jdGlvbih0KXtmb3IodmFyIGU9bmV3IE1hcCxuPXQuYXR0cmlidXRlcyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW4uaXRlbShyKTtlLnNldChvLm5hbWUsby52YWx1ZSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLmhhc0F0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0Lmhhc0F0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuaGFzQXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lmhhc0F0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLmdldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB0LmdldEF0dHJpYnV0ZShlKX0sZS5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LmdldEF0dHJpYnV0ZU5TKGUsbil9LGUucHJvdG90eXBlLnNldEF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbil7dC5zZXRBdHRyaWJ1dGUoZSxuKX0sZS5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlM9ZnVuY3Rpb24odCxlLG4scil7dC5zZXRBdHRyaWJ1dGVOUyhlLG4scil9LGUucHJvdG90eXBlLnJlbW92ZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUpe3QucmVtb3ZlQXR0cmlidXRlKGUpfSxlLnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGVOUz1mdW5jdGlvbih0LGUsbil7dC5yZW1vdmVBdHRyaWJ1dGVOUyhlLG4pfSxlLnByb3RvdHlwZS50ZW1wbGF0ZUF3YXJlUm9vdD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pc1RlbXBsYXRlRWxlbWVudCh0KT90aGlzLmNvbnRlbnQodCk6dH0sZS5wcm90b3R5cGUuY3JlYXRlSHRtbERvY3VtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiZmFrZVRpdGxlIil9LGUucHJvdG90eXBlLmdldERlZmF1bHREb2N1bWVudD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudH0sZS5wcm90b3R5cGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0PWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChlKXtyZXR1cm57dG9wOjAsYm90dG9tOjAsbGVmdDowLHJpZ2h0OjAsd2lkdGg6MCxoZWlnaHQ6MH19fSxlLnByb3RvdHlwZS5nZXRUaXRsZT1mdW5jdGlvbih0KXtyZXR1cm4gdC50aXRsZX0sZS5wcm90b3R5cGUuc2V0VGl0bGU9ZnVuY3Rpb24odCxlKXt0LnRpdGxlPWV8fCIifSxlLnByb3RvdHlwZS5lbGVtZW50TWF0Y2hlcz1mdW5jdGlvbih0LGUpe3JldHVybiEhdGhpcy5pc0VsZW1lbnROb2RlKHQpJiYodC5tYXRjaGVzJiZ0Lm1hdGNoZXMoZSl8fHQubXNNYXRjaGVzU2VsZWN0b3ImJnQubXNNYXRjaGVzU2VsZWN0b3IoZSl8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yJiZ0LndlYmtpdE1hdGNoZXNTZWxlY3RvcihlKSl9LGUucHJvdG90eXBlLmlzVGVtcGxhdGVFbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmlzRWxlbWVudE5vZGUodCkmJiJURU1QTEFURSI9PT10Lm5vZGVOYW1lfSxlLnByb3RvdHlwZS5pc1RleHROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVUeXBlPT09Tm9kZS5URVhUX05PREV9LGUucHJvdG90eXBlLmlzQ29tbWVudE5vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQubm9kZVR5cGU9PT1Ob2RlLkNPTU1FTlRfTk9ERX0sZS5wcm90b3R5cGUuaXNFbGVtZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFfSxlLnByb3RvdHlwZS5oYXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10LnNoYWRvd1Jvb3QmJnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH0sZS5wcm90b3R5cGUuaXNTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudH0sZS5wcm90b3R5cGUuaW1wb3J0SW50b0RvYz1mdW5jdGlvbih0KXtyZXR1cm4gZG9jdW1lbnQuaW1wb3J0Tm9kZSh0aGlzLnRlbXBsYXRlQXdhcmVSb290KHQpLCEwKX0sZS5wcm90b3R5cGUuYWRvcHROb2RlPWZ1bmN0aW9uKHQpe3JldHVybiBkb2N1bWVudC5hZG9wdE5vZGUodCl9LGUucHJvdG90eXBlLmdldEhyZWY9ZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0QXR0cmlidXRlKCJocmVmIil9LGUucHJvdG90eXBlLmdldEV2ZW50S2V5PWZ1bmN0aW9uKHQpe3ZhciBlPXQua2V5O2lmKG51bGw9PWUpe2lmKG51bGw9PShlPXQua2V5SWRlbnRpZmllcikpcmV0dXJuIlVuaWRlbnRpZmllZCI7ZS5zdGFydHNXaXRoKCJVKyIpJiYoZT1TdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGUuc3Vic3RyaW5nKDIpLDE2KSksMz09PXQubG9jYXRpb24mJkFsLmhhc093blByb3BlcnR5KGUpJiYoZT1BbFtlXSkpfXJldHVybiBrbFtlXXx8ZX0sZS5wcm90b3R5cGUuZ2V0R2xvYmFsRXZlbnRUYXJnZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4id2luZG93Ij09PWU/d2luZG93OiJkb2N1bWVudCI9PT1lP3Q6ImJvZHkiPT09ZT90LmJvZHk6bnVsbH0sZS5wcm90b3R5cGUuZ2V0SGlzdG9yeT1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuaGlzdG9yeX0sZS5wcm90b3R5cGUuZ2V0TG9jYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmxvY2F0aW9ufSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZj1mdW5jdGlvbih0KXt2YXIgZSxuPU1sfHwoTWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYmFzZSIpKT9NbC5nZXRBdHRyaWJ1dGUoImhyZWYiKTpudWxsO3JldHVybiBudWxsPT1uP251bGw6KGU9bixPbHx8KE9sPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksT2wuc2V0QXR0cmlidXRlKCJocmVmIixlKSwiLyI9PT1PbC5wYXRobmFtZS5jaGFyQXQoMCk/T2wucGF0aG5hbWU6Ii8iK09sLnBhdGhuYW1lKX0sZS5wcm90b3R5cGUucmVzZXRCYXNlRWxlbWVudD1mdW5jdGlvbigpe01sPW51bGx9LGUucHJvdG90eXBlLmdldFVzZXJBZ2VudD1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudH0sZS5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0LGUsbil7dGhpcy5zZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2Usbil9LGUucHJvdG90eXBlLmdldERhdGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUodCwiZGF0YS0iK2UpfSxlLnByb3RvdHlwZS5nZXRDb21wdXRlZFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBnZXRDb21wdXRlZFN0eWxlKHQpfSxlLnByb3RvdHlwZS5zdXBwb3J0c1dlYkFuaW1hdGlvbj1mdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBFbGVtZW50LnByb3RvdHlwZS5hbmltYXRlfSxlLnByb3RvdHlwZS5wZXJmb3JtYW5jZU5vdz1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cucGVyZm9ybWFuY2UmJndpbmRvdy5wZXJmb3JtYW5jZS5ub3c/d2luZG93LnBlcmZvcm1hbmNlLm5vdygpOihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxlLnByb3RvdHlwZS5zdXBwb3J0c0Nvb2tpZXM9ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuZ2V0Q29va2llPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUpe3ZhciBuLG87ZT1lbmNvZGVVUklDb21wb25lbnQoZSk7dHJ5e2Zvcih2YXIgaT1PYmplY3Qoci5fX3ZhbHVlcykodC5zcGxpdCgiOyIpKSxhPWkubmV4dCgpOyFhLmRvbmU7YT1pLm5leHQoKSl7dmFyIHU9YS52YWx1ZSxsPXUuaW5kZXhPZigiPSIpLHM9T2JqZWN0KHIuX19yZWFkKSgtMT09bD9bdSwiIl06W3Uuc2xpY2UoMCxsKSx1LnNsaWNlKGwrMSldLDIpLGM9c1sxXTtpZihzWzBdLnRyaW0oKT09PWUpcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChjKX19Y2F0Y2goZil7bj17ZXJyb3I6Zn19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG89aS5yZXR1cm4pJiZvLmNhbGwoaSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBudWxsfShkb2N1bWVudC5jb29raWUsdCl9LGUucHJvdG90eXBlLnNldENvb2tpZT1mdW5jdGlvbih0LGUpe2RvY3VtZW50LmNvb2tpZT1lbmNvZGVVUklDb21wb25lbnQodCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChlKX0sZX0oVGwpLE1sPW51bGw7ZnVuY3Rpb24gamwoKXtyZXR1cm4hIXdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZX12YXIgTmw9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG4uX2luaXQoKSxufXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUuX2luaXQ9ZnVuY3Rpb24oKXt0aGlzLmxvY2F0aW9uPUVsKCkuZ2V0TG9jYXRpb24oKSx0aGlzLl9oaXN0b3J5PUVsKCkuZ2V0SGlzdG9yeSgpfSxlLnByb3RvdHlwZS5nZXRCYXNlSHJlZkZyb21ET009ZnVuY3Rpb24oKXtyZXR1cm4gRWwoKS5nZXRCYXNlSHJlZih0aGlzLl9kb2MpfSxlLnByb3RvdHlwZS5vblBvcFN0YXRlPWZ1bmN0aW9uKHQpe0VsKCkuZ2V0R2xvYmFsRXZlbnRUYXJnZXQodGhpcy5fZG9jLCJ3aW5kb3ciKS5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsdCwhMSl9LGUucHJvdG90eXBlLm9uSGFzaENoYW5nZT1mdW5jdGlvbih0KXtFbCgpLmdldEdsb2JhbEV2ZW50VGFyZ2V0KHRoaXMuX2RvYywid2luZG93IikuYWRkRXZlbnRMaXN0ZW5lcigiaGFzaGNoYW5nZSIsdCwhMSl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaHJlZiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uLmhyZWZ9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJwcm90b2NvbCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uLnByb3RvY29sfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiaG9zdG5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5ob3N0bmFtZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInBvcnQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wb3J0fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwicGF0aG5hbWUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5wYXRobmFtZX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMubG9jYXRpb24ucGF0aG5hbWU9dH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInNlYXJjaCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uLnNlYXJjaH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImhhc2giLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb2NhdGlvbi5oYXNofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLnB1c2hTdGF0ZT1mdW5jdGlvbih0LGUsbil7amwoKT90aGlzLl9oaXN0b3J5LnB1c2hTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbih0LGUsbil7amwoKT90aGlzLl9oaXN0b3J5LnJlcGxhY2VTdGF0ZSh0LGUsbik6dGhpcy5sb2NhdGlvbi5oYXNoPW59LGUucHJvdG90eXBlLmZvcndhcmQ9ZnVuY3Rpb24oKXt0aGlzLl9oaXN0b3J5LmZvcndhcmQoKX0sZS5wcm90b3R5cGUuYmFjaz1mdW5jdGlvbigpe3RoaXMuX2hpc3RvcnkuYmFjaygpfSxlLnByb3RvdHlwZS5nZXRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9oaXN0b3J5LnN0YXRlfSxlfShsdSksRGw9bmV3IFR0KCJUUkFOU0lUSU9OX0lEIiksVWw9W3twcm92aWRlOmtvLHVzZUZhY3Rvcnk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe24uZ2V0KEFvKS5kb25lUHJvbWlzZS50aGVuKChmdW5jdGlvbigpe3ZhciBuPUVsKCk7QXJyYXkucHJvdG90eXBlLnNsaWNlLmFwcGx5KG4ucXVlcnlTZWxlY3RvckFsbChlLCJzdHlsZVtuZy10cmFuc2l0aW9uXSIpKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBuLmdldEF0dHJpYnV0ZShlLCJuZy10cmFuc2l0aW9uIik9PT10fSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBuLnJlbW92ZSh0KX0pKX0pKX19LGRlcHM6W0RsLEV1LE1lXSxtdWx0aTohMH1dLExsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5pbml0PWZ1bmN0aW9uKCl7dmFyIGU7ZT1uZXcgdCxoaT1lfSx0LnByb3RvdHlwZS5hZGRUb1dpbmRvdz1mdW5jdGlvbih0KXtPdC5nZXRBbmd1bGFyVGVzdGFiaWxpdHk9ZnVuY3Rpb24oZSxuKXt2b2lkIDA9PT1uJiYobj0hMCk7dmFyIHI9dC5maW5kVGVzdGFiaWxpdHlJblRyZWUoZSxuKTtpZihudWxsPT1yKXRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgdGVzdGFiaWxpdHkgZm9yIGVsZW1lbnQuIik7cmV0dXJuIHJ9LE90LmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0QWxsVGVzdGFiaWxpdGllcygpfSxPdC5nZXRBbGxBbmd1bGFyUm9vdEVsZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHQuZ2V0QWxsUm9vdEVsZW1lbnRzKCl9LE90LmZyYW1ld29ya1N0YWJpbGl6ZXJzfHwoT3QuZnJhbWV3b3JrU3RhYmlsaXplcnM9W10pLE90LmZyYW1ld29ya1N0YWJpbGl6ZXJzLnB1c2goKGZ1bmN0aW9uKHQpe3ZhciBlPU90LmdldEFsbEFuZ3VsYXJUZXN0YWJpbGl0aWVzKCksbj1lLmxlbmd0aCxyPSExLG89ZnVuY3Rpb24oZSl7cj1yfHxlLDA9PS0tbiYmdChyKX07ZS5mb3JFYWNoKChmdW5jdGlvbih0KXt0LndoZW5TdGFibGUobyl9KSl9KSl9LHQucHJvdG90eXBlLmZpbmRUZXN0YWJpbGl0eUluVHJlZT1mdW5jdGlvbih0LGUsbil7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIgcj10LmdldFRlc3RhYmlsaXR5KGUpO3JldHVybiBudWxsIT1yP3I6bj9FbCgpLmlzU2hhZG93Um9vdChlKT90aGlzLmZpbmRUZXN0YWJpbGl0eUluVHJlZSh0LEVsKCkuZ2V0SG9zdChlKSwhMCk6dGhpcy5maW5kVGVzdGFiaWxpdHlJblRyZWUodCxFbCgpLnBhcmVudEVsZW1lbnQoZSksITApOm51bGx9LHR9KCk7ZnVuY3Rpb24gVmwodCxlKXsidW5kZWZpbmVkIiE9dHlwZW9mIENPTVBJTEVEJiZDT01QSUxFRHx8KChPdC5uZz1PdC5uZ3x8e30pW3RdPWUpfXZhciBIbD1mdW5jdGlvbigpe3JldHVybntBcHBsaWNhdGlvblJlZjpfaSxOZ1pvbmU6bml9fSgpO2Z1bmN0aW9uIHpsKHQpe3JldHVybiBBaSh0KX12YXIgRmw9bmV3IFR0KCJFdmVudE1hbmFnZXJQbHVnaW5zIiksQmw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIG49dGhpczt0aGlzLl96b25lPWUsdGhpcy5fZXZlbnROYW1lVG9QbHVnaW49bmV3IE1hcCx0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hbmFnZXI9bn0pKSx0aGlzLl9wbHVnaW5zPXQuc2xpY2UoKS5yZXZlcnNlKCl9cmV0dXJuIHQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLl9maW5kUGx1Z2luRm9yKGUpLmFkZEV2ZW50TGlzdGVuZXIodCxlLG4pfSx0LnByb3RvdHlwZS5hZGRHbG9iYWxFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5fZmluZFBsdWdpbkZvcihlKS5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSxuKX0sdC5wcm90b3R5cGUuZ2V0Wm9uZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl96b25lfSx0LnByb3RvdHlwZS5fZmluZFBsdWdpbkZvcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9ldmVudE5hbWVUb1BsdWdpbi5nZXQodCk7aWYoZSlyZXR1cm4gZTtmb3IodmFyIG49dGhpcy5fcGx1Z2lucyxyPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07aWYoby5zdXBwb3J0cyh0KSlyZXR1cm4gdGhpcy5fZXZlbnROYW1lVG9QbHVnaW4uc2V0KHQsbyksb310aHJvdyBuZXcgRXJyb3IoIk5vIGV2ZW50IG1hbmFnZXIgcGx1Z2luIGZvdW5kIGZvciBldmVudCAiK3QpfSx0fSgpLFpsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9kb2M9dH1yZXR1cm4gdC5wcm90b3R5cGUuYWRkR2xvYmFsRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9RWwoKS5nZXRHbG9iYWxFdmVudFRhcmdldCh0aGlzLl9kb2MsdCk7aWYoIXIpdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBldmVudCB0YXJnZXQgIityKyIgZm9yIGV2ZW50ICIrZSk7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyLGUsbil9LHR9KCksR2w9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5fc3R5bGVzU2V0PW5ldyBTZXR9cmV0dXJuIHQucHJvdG90eXBlLmFkZFN0eWxlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49bmV3IFNldDt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2UuX3N0eWxlc1NldC5oYXModCl8fChlLl9zdHlsZXNTZXQuYWRkKHQpLG4uYWRkKHQpKX0pKSx0aGlzLm9uU3R5bGVzQWRkZWQobil9LHQucHJvdG90eXBlLm9uU3R5bGVzQWRkZWQ9ZnVuY3Rpb24odCl7fSx0LnByb3RvdHlwZS5nZXRBbGxTdHlsZXM9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9zdHlsZXNTZXQpfSx0fSgpLHFsPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7dmFyIG49dC5jYWxsKHRoaXMpfHx0aGlzO3JldHVybiBuLl9kb2M9ZSxuLl9ob3N0Tm9kZXM9bmV3IFNldCxuLl9zdHlsZU5vZGVzPW5ldyBTZXQsbi5faG9zdE5vZGVzLmFkZChlLmhlYWQpLG59cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5fYWRkU3R5bGVzVG9Ib3N0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPW4uX2RvYy5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3IudGV4dENvbnRlbnQ9dCxuLl9zdHlsZU5vZGVzLmFkZChlLmFwcGVuZENoaWxkKHIpKX0pKX0sZS5wcm90b3R5cGUuYWRkSG9zdD1mdW5jdGlvbih0KXt0aGlzLl9hZGRTdHlsZXNUb0hvc3QodGhpcy5fc3R5bGVzU2V0LHQpLHRoaXMuX2hvc3ROb2Rlcy5hZGQodCl9LGUucHJvdG90eXBlLnJlbW92ZUhvc3Q9ZnVuY3Rpb24odCl7dGhpcy5faG9zdE5vZGVzLmRlbGV0ZSh0KX0sZS5wcm90b3R5cGUub25TdHlsZXNBZGRlZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3RoaXMuX2hvc3ROb2Rlcy5mb3JFYWNoKChmdW5jdGlvbihuKXtyZXR1cm4gZS5fYWRkU3R5bGVzVG9Ib3N0KHQsbil9KSl9LGUucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5fc3R5bGVOb2Rlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gRWwoKS5yZW1vdmUodCl9KSl9LGV9KEdsKSxXbD17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIseGh0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn0sUWw9LyVDT01QJS9nLEtsPSJfbmdob3N0LSVDT01QJSIsWWw9Il9uZ2NvbnRlbnQtJUNPTVAlIjtmdW5jdGlvbiBKbCh0LGUsbil7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBvPWVbcl07QXJyYXkuaXNBcnJheShvKT9KbCh0LG8sbik6KG89by5yZXBsYWNlKFFsLHQpLG4ucHVzaChvKSl9cmV0dXJuIG59ZnVuY3Rpb24gJGwodCl7cmV0dXJuIGZ1bmN0aW9uKGUpeyExPT09dChlKSYmKGUucHJldmVudERlZmF1bHQoKSxlLnJldHVyblZhbHVlPSExKX19dmFyIFhsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLnNoYXJlZFN0eWxlc0hvc3Q9ZSx0aGlzLmFwcElkPW4sdGhpcy5yZW5kZXJlckJ5Q29tcElkPW5ldyBNYXAsdGhpcy5kZWZhdWx0UmVuZGVyZXI9bmV3IHRzKHQpfXJldHVybiB0LnByb3RvdHlwZS5jcmVhdGVSZW5kZXJlcj1mdW5jdGlvbih0LGUpe2lmKCF0fHwhZSlyZXR1cm4gdGhpcy5kZWZhdWx0UmVuZGVyZXI7c3dpdGNoKGUuZW5jYXBzdWxhdGlvbil7Y2FzZSBadC5FbXVsYXRlZDp2YXIgbj10aGlzLnJlbmRlcmVyQnlDb21wSWQuZ2V0KGUuaWQpO3JldHVybiBufHwobj1uZXcgcnModGhpcy5ldmVudE1hbmFnZXIsdGhpcy5zaGFyZWRTdHlsZXNIb3N0LGUsdGhpcy5hcHBJZCksdGhpcy5yZW5kZXJlckJ5Q29tcElkLnNldChlLmlkLG4pKSxuLmFwcGx5VG9Ib3N0KHQpLG47Y2FzZSBadC5OYXRpdmU6Y2FzZSBadC5TaGFkb3dEb206cmV0dXJuIG5ldyBvcyh0aGlzLmV2ZW50TWFuYWdlcix0aGlzLnNoYXJlZFN0eWxlc0hvc3QsdCxlKTtkZWZhdWx0OmlmKCF0aGlzLnJlbmRlcmVyQnlDb21wSWQuaGFzKGUuaWQpKXt2YXIgcj1KbChlLmlkLGUuc3R5bGVzLFtdKTt0aGlzLnNoYXJlZFN0eWxlc0hvc3QuYWRkU3R5bGVzKHIpLHRoaXMucmVuZGVyZXJCeUNvbXBJZC5zZXQoZS5pZCx0aGlzLmRlZmF1bHRSZW5kZXJlcil9cmV0dXJuIHRoaXMuZGVmYXVsdFJlbmRlcmVyfX0sdC5wcm90b3R5cGUuYmVnaW49ZnVuY3Rpb24oKXt9LHQucHJvdG90eXBlLmVuZD1mdW5jdGlvbigpe30sdH0oKSx0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5ldmVudE1hbmFnZXI9dCx0aGlzLmRhdGE9T2JqZWN0LmNyZWF0ZShudWxsKX1yZXR1cm4gdC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30sdC5wcm90b3R5cGUuYw=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?4?1",
"type": "binary",
"value": "base64:cmVhdGVFbGVtZW50PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFdsW2VdfHxlLHQpOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZUNvbW1lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQodCl9LHQucHJvdG90eXBlLmNyZWF0ZVRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpfSx0LnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbih0LGUpe3QuYXBwZW5kQ2hpbGQoZSl9LHQucHJvdG90eXBlLmluc2VydEJlZm9yZT1mdW5jdGlvbih0LGUsbil7dCYmdC5pbnNlcnRCZWZvcmUoZSxuKX0sdC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24odCxlKXt0JiZ0LnJlbW92ZUNoaWxkKGUpfSx0LnByb3RvdHlwZS5zZWxlY3RSb290RWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPSJzdHJpbmciPT10eXBlb2YgdD9kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpOnQ7aWYoIW4pdGhyb3cgbmV3IEVycm9yKCdUaGUgc2VsZWN0b3IgIicrdCsnIiBkaWQgbm90IG1hdGNoIGFueSBlbGVtZW50cycpO3JldHVybiBlfHwobi50ZXh0Q29udGVudD0iIiksbn0sdC5wcm90b3R5cGUucGFyZW50Tm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5wYXJlbnROb2RlfSx0LnByb3RvdHlwZS5uZXh0U2libGluZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5uZXh0U2libGluZ30sdC5wcm90b3R5cGUuc2V0QXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLHIpe2lmKHIpe2U9cisiOiIrZTt2YXIgbz1XbFtyXTtvP3Quc2V0QXR0cmlidXRlTlMobyxlLG4pOnQuc2V0QXR0cmlidXRlKGUsbil9ZWxzZSB0LnNldEF0dHJpYnV0ZShlLG4pfSx0LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGU9ZnVuY3Rpb24odCxlLG4pe2lmKG4pe3ZhciByPVdsW25dO3I/dC5yZW1vdmVBdHRyaWJ1dGVOUyhyLGUpOnQucmVtb3ZlQXR0cmlidXRlKG4rIjoiK2UpfWVsc2UgdC5yZW1vdmVBdHRyaWJ1dGUoZSl9LHQucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKHQsZSl7dC5jbGFzc0xpc3QuYWRkKGUpfSx0LnByb3RvdHlwZS5yZW1vdmVDbGFzcz1mdW5jdGlvbih0LGUpe3QuY2xhc3NMaXN0LnJlbW92ZShlKX0sdC5wcm90b3R5cGUuc2V0U3R5bGU9ZnVuY3Rpb24odCxlLG4scil7ciZobi5EYXNoQ2FzZT90LnN0eWxlLnNldFByb3BlcnR5KGUsbixyJmhuLkltcG9ydGFudD8iaW1wb3J0YW50IjoiIik6dC5zdHlsZVtlXT1ufSx0LnByb3RvdHlwZS5yZW1vdmVTdHlsZT1mdW5jdGlvbih0LGUsbil7biZobi5EYXNoQ2FzZT90LnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpOnQuc3R5bGVbZV09IiJ9LHQucHJvdG90eXBlLnNldFByb3BlcnR5PWZ1bmN0aW9uKHQsZSxuKXtucyhlLCJwcm9wZXJ0eSIpLHRbZV09bn0sdC5wcm90b3R5cGUuc2V0VmFsdWU9ZnVuY3Rpb24odCxlKXt0Lm5vZGVWYWx1ZT1lfSx0LnByb3RvdHlwZS5saXN0ZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiBucyhlLCJsaXN0ZW5lciIpLCJzdHJpbmciPT10eXBlb2YgdD90aGlzLmV2ZW50TWFuYWdlci5hZGRHbG9iYWxFdmVudExpc3RlbmVyKHQsZSwkbChuKSk6dGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsJGwobikpfSx0fSgpLGVzPWZ1bmN0aW9uKCl7cmV0dXJuIkAiLmNoYXJDb2RlQXQoMCl9KCk7ZnVuY3Rpb24gbnModCxlKXtpZih0LmNoYXJDb2RlQXQoMCk9PT1lcyl0aHJvdyBuZXcgRXJyb3IoIkZvdW5kIHRoZSBzeW50aGV0aWMgIitlKyIgIit0KycuIFBsZWFzZSBpbmNsdWRlIGVpdGhlciAiQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUiIG9yICJOb29wQW5pbWF0aW9uc01vZHVsZSIgaW4geW91ciBhcHBsaWNhdGlvbi4nKX12YXIgcnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlKXx8dGhpcztpLmNvbXBvbmVudD1yO3ZhciBhPUpsKG8rIi0iK3IuaWQsci5zdHlsZXMsW10pO3JldHVybiBuLmFkZFN0eWxlcyhhKSxpLmNvbnRlbnRBdHRyPVlsLnJlcGxhY2UoUWwsbysiLSIrci5pZCksaS5ob3N0QXR0cj1LbC5yZXBsYWNlKFFsLG8rIi0iK3IuaWQpLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5hcHBseVRvSG9zdD1mdW5jdGlvbihlKXt0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLGUsdGhpcy5ob3N0QXR0ciwiIil9LGUucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24oZSxuKXt2YXIgcj10LnByb3RvdHlwZS5jcmVhdGVFbGVtZW50LmNhbGwodGhpcyxlLG4pO3JldHVybiB0LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUuY2FsbCh0aGlzLHIsdGhpcy5jb250ZW50QXR0ciwiIikscn0sZX0odHMpLG9zPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIsbyl7dmFyIGk9dC5jYWxsKHRoaXMsZSl8fHRoaXM7aS5zaGFyZWRTdHlsZXNIb3N0PW4saS5ob3N0RWw9cixpLmNvbXBvbmVudD1vLGkuc2hhZG93Um9vdD1vLmVuY2Fwc3VsYXRpb249PT1adC5TaGFkb3dEb20/ci5hdHRhY2hTaGFkb3coe21vZGU6Im9wZW4ifSk6ci5jcmVhdGVTaGFkb3dSb290KCksaS5zaGFyZWRTdHlsZXNIb3N0LmFkZEhvc3QoaS5zaGFkb3dSb290KTtmb3IodmFyIGE9Smwoby5pZCxvLnN0eWxlcyxbXSksdT0wO3U8YS5sZW5ndGg7dSsrKXt2YXIgbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO2wudGV4dENvbnRlbnQ9YVt1XSxpLnNoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQobCl9cmV0dXJuIGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5ub2RlT3JTaGFkb3dSb290PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09dGhpcy5ob3N0RWw/dGhpcy5zaGFkb3dSb290OnR9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnNoYXJlZFN0eWxlc0hvc3QucmVtb3ZlSG9zdCh0aGlzLnNoYWRvd1Jvb3QpfSxlLnByb3RvdHlwZS5hcHBlbmRDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3RvdHlwZS5hcHBlbmRDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4pfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSxuLHIpe3JldHVybiB0LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUuY2FsbCh0aGlzLHRoaXMubm9kZU9yU2hhZG93Um9vdChlKSxuLHIpfSxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZD1mdW5jdGlvbihlLG4pe3JldHVybiB0LnByb3RvdHlwZS5yZW1vdmVDaGlsZC5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpLG4pfSxlLnByb3RvdHlwZS5wYXJlbnROb2RlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm5vZGVPclNoYWRvd1Jvb3QodC5wcm90b3R5cGUucGFyZW50Tm9kZS5jYWxsKHRoaXMsdGhpcy5ub2RlT3JTaGFkb3dSb290KGUpKSl9LGV9KHRzKSxpcz1mdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgWm9uZSYmWm9uZS5fX3N5bWJvbF9ffHxmdW5jdGlvbih0KXtyZXR1cm4iX196b25lX3N5bWJvbF9fIit0fX0oKSxhcz1pcygiYWRkRXZlbnRMaXN0ZW5lciIpLHVzPWlzKCJyZW1vdmVFdmVudExpc3RlbmVyIiksbHM9e30sc3M9Il9fem9uZV9zeW1ib2xfX3Byb3BhZ2F0aW9uU3RvcHBlZCIsY3M9ZnVuY3Rpb24oKXt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIFpvbmUmJlpvbmVbaXMoIkJMQUNLX0xJU1RFRF9FVkVOVFMiKV07aWYodCl7dmFyIGU9e307cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLGV9fSgpLGZzPWZ1bmN0aW9uKHQpe3JldHVybiEhY3MmJmNzLmhhc093blByb3BlcnR5KHQpfSxocz1mdW5jdGlvbih0KXt2YXIgZT1sc1t0LnR5cGVdO2lmKGUpe3ZhciBuPXRoaXNbZV07aWYobil7dmFyIHI9W3RdO2lmKDE9PT1uLmxlbmd0aClyZXR1cm4oYT1uWzBdKS56b25lIT09Wm9uZS5jdXJyZW50P2Euem9uZS5ydW4oYS5oYW5kbGVyLHRoaXMscik6YS5oYW5kbGVyLmFwcGx5KHRoaXMscik7Zm9yKHZhciBvPW4uc2xpY2UoKSxpPTA7aTxvLmxlbmd0aCYmITAhPT10W3NzXTtpKyspe3ZhciBhOyhhPW9baV0pLnpvbmUhPT1ab25lLmN1cnJlbnQ/YS56b25lLnJ1bihhLmhhbmRsZXIsdGhpcyxyKTphLmhhbmRsZXIuYXBwbHkodGhpcyxyKX19fX0scHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSl8fHRoaXM7cmV0dXJuIG8ubmdab25lPW4sciYmZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1PdX0ocil8fG8ucGF0Y2hFdmVudCgpLG99cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5wYXRjaEV2ZW50PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBFdmVudCYmRXZlbnQmJkV2ZW50LnByb3RvdHlwZSYmIUV2ZW50LnByb3RvdHlwZS5fX3pvbmVfc3ltYm9sX19zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24pe3ZhciB0PUV2ZW50LnByb3RvdHlwZS5fX3pvbmVfc3ltYm9sX19zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb249RXZlbnQucHJvdG90eXBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjtFdmVudC5wcm90b3R5cGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcyYmKHRoaXNbc3NdPSEwKSx0JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hMH0sZS5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcyxvPW47aWYoIXRbYXNdfHxuaS5pc0luQW5ndWxhclpvbmUoKSYmIWZzKGUpKXQuYWRkRXZlbnRMaXN0ZW5lcihlLG8sITEpO2Vsc2V7dmFyIGk9bHNbZV07aXx8KGk9bHNbZV09aXMoIkFOR1VMQVIiK2UrIkZBTFNFIikpO3ZhciBhPXRbaV0sdT1hJiZhLmxlbmd0aD4wO2F8fChhPXRbaV09W10pO3ZhciBsPWZzKGUpP1pvbmUucm9vdDpab25lLmN1cnJlbnQ7aWYoMD09PWEubGVuZ3RoKWEucHVzaCh7em9uZTpsLGhhbmRsZXI6b30pO2Vsc2V7Zm9yKHZhciBzPSExLGM9MDtjPGEubGVuZ3RoO2MrKylpZihhW2NdLmhhbmRsZXI9PT1vKXtzPSEwO2JyZWFrfXN8fGEucHVzaCh7em9uZTpsLGhhbmRsZXI6b30pfXV8fHRbYXNdKGUsaHMsITEpfXJldHVybiBmdW5jdGlvbigpe3JldHVybiByLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlLG8pfX0sZS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dFt1c107aWYoIXIpcmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseSh0LFtlLG4sITFdKTt2YXIgbz1sc1tlXSxpPW8mJnRbb107aWYoIWkpcmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseSh0LFtlLG4sITFdKTtmb3IodmFyIGE9ITEsdT0wO3U8aS5sZW5ndGg7dSsrKWlmKGlbdV0uaGFuZGxlcj09PW4pe2E9ITAsaS5zcGxpY2UodSwxKTticmVha31hPzA9PT1pLmxlbmd0aCYmci5hcHBseSh0LFtlLGhzLCExXSk6dC5yZW1vdmVFdmVudExpc3RlbmVyLmFwcGx5KHQsW2UsbiwhMV0pfSxlfShabCksZHM9e3BhbjohMCxwYW5zdGFydDohMCxwYW5tb3ZlOiEwLHBhbmVuZDohMCxwYW5jYW5jZWw6ITAscGFubGVmdDohMCxwYW5yaWdodDohMCxwYW51cDohMCxwYW5kb3duOiEwLHBpbmNoOiEwLHBpbmNoc3RhcnQ6ITAscGluY2htb3ZlOiEwLHBpbmNoZW5kOiEwLHBpbmNoY2FuY2VsOiEwLHBpbmNoaW46ITAscGluY2hvdXQ6ITAscHJlc3M6ITAscHJlc3N1cDohMCxyb3RhdGU6ITAscm90YXRlc3RhcnQ6ITAscm90YXRlbW92ZTohMCxyb3RhdGVlbmQ6ITAscm90YXRlY2FuY2VsOiEwLHN3aXBlOiEwLHN3aXBlbGVmdDohMCxzd2lwZXJpZ2h0OiEwLHN3aXBldXA6ITAsc3dpcGVkb3duOiEwLHRhcDohMH0sZ3M9bmV3IFR0KCJIYW1tZXJHZXN0dXJlQ29uZmlnIiksdnM9bmV3IFR0KCJIYW1tZXJMb2FkZXIiKSx5cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmV2ZW50cz1bXSx0aGlzLm92ZXJyaWRlcz17fX1yZXR1cm4gdC5wcm90b3R5cGUuYnVpbGRIYW1tZXI9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEhhbW1lcih0LHRoaXMub3B0aW9ucyk7Zm9yKHZhciBuIGluIGUuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSksZS5nZXQoInJvdGF0ZSIpLnNldCh7ZW5hYmxlOiEwfSksdGhpcy5vdmVycmlkZXMpZS5nZXQobikuc2V0KHRoaXMub3ZlcnJpZGVzW25dKTtyZXR1cm4gZX0sdH0oKSxtcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUpfHx0aGlzO3JldHVybiBpLl9jb25maWc9bixpLmNvbnNvbGU9cixpLmxvYWRlcj1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5zdXBwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4hKCFkcy5oYXNPd25Qcm9wZXJ0eSh0LnRvTG93ZXJDYXNlKCkpJiYhdGhpcy5pc0N1c3RvbUV2ZW50KHQpfHwhd2luZG93LkhhbW1lciYmIXRoaXMubG9hZGVyJiYodGhpcy5jb25zb2xlLndhcm4oJ1RoZSAiJyt0KyciIGV2ZW50IGNhbm5vdCBiZSBib3VuZCBiZWNhdXNlIEhhbW1lci5KUyBpcyBub3QgbG9hZGVkIGFuZCBubyBjdXN0b20gbG9hZGVyIGhhcyBiZWVuIHNwZWNpZmllZC4nKSwxKSl9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz10aGlzLm1hbmFnZXIuZ2V0Wm9uZSgpO2lmKGU9ZS50b0xvd2VyQ2FzZSgpLCF3aW5kb3cuSGFtbWVyJiZ0aGlzLmxvYWRlcil7dmFyIGk9ITEsYT1mdW5jdGlvbigpe2k9ITB9O3JldHVybiB0aGlzLmxvYWRlcigpLnRoZW4oKGZ1bmN0aW9uKCl7aWYoIXdpbmRvdy5IYW1tZXIpcmV0dXJuIHIuY29uc29sZS53YXJuKCJUaGUgY3VzdG9tIEhBTU1FUl9MT0FERVIgY29tcGxldGVkLCBidXQgSGFtbWVyLkpTIGlzIG5vdCBwcmVzZW50LiIpLHZvaWQoYT1mdW5jdGlvbigpe30pO2l8fChhPXIuYWRkRXZlbnRMaXN0ZW5lcih0LGUsbikpfSkpLmNhdGNoKChmdW5jdGlvbigpe3IuY29uc29sZS53YXJuKCdUaGUgIicrZSsnIiBldmVudCBjYW5ub3QgYmUgYm91bmQgYmVjYXVzZSB0aGUgY3VzdG9tIEhhbW1lci5KUyBsb2FkZXIgZmFpbGVkLicpLGE9ZnVuY3Rpb24oKXt9fSkpLGZ1bmN0aW9uKCl7YSgpfX1yZXR1cm4gby5ydW5PdXRzaWRlQW5ndWxhcigoZnVuY3Rpb24oKXt2YXIgaT1yLl9jb25maWcuYnVpbGRIYW1tZXIodCksYT1mdW5jdGlvbih0KXtvLnJ1bkd1YXJkZWQoKGZ1bmN0aW9uKCl7bih0KX0pKX07cmV0dXJuIGkub24oZSxhKSxmdW5jdGlvbigpe2kub2ZmKGUsYSksImZ1bmN0aW9uIj09dHlwZW9mIGkuZGVzdHJveSYmaS5kZXN0cm95KCl9fSkpfSxlLnByb3RvdHlwZS5pc0N1c3RvbUV2ZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jb25maWcuZXZlbnRzLmluZGV4T2YodCk+LTF9LGV9KFpsKSxfcz1bImFsdCIsImNvbnRyb2wiLCJtZXRhIiwic2hpZnQiXSx3cz17YWx0OmZ1bmN0aW9uKHQpe3JldHVybiB0LmFsdEtleX0sY29udHJvbDpmdW5jdGlvbih0KXtyZXR1cm4gdC5jdHJsS2V5fSxtZXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0Lm1ldGFLZXl9LHNoaWZ0OmZ1bmN0aW9uKHQpe3JldHVybiB0LnNoaWZ0S2V5fX0sYnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXtyZXR1cm4gdC5jYWxsKHRoaXMsZSl8fHRoaXN9dmFyIG47cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxuPWUsZS5wcm90b3R5cGUuc3VwcG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPW4ucGFyc2VFdmVudE5hbWUodCl9LGUucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLHIpe3ZhciBvPW4ucGFyc2VFdmVudE5hbWUoZSksaT1uLmV2ZW50Q2FsbGJhY2soby5mdWxsS2V5LHIsdGhpcy5tYW5hZ2VyLmdldFpvbmUoKSk7cmV0dXJuIHRoaXMubWFuYWdlci5nZXRab25lKCkucnVuT3V0c2lkZUFuZ3VsYXIoKGZ1bmN0aW9uKCl7cmV0dXJuIEVsKCkub25BbmRDYW5jZWwodCxvLmRvbUV2ZW50TmFtZSxpKX0pKX0sZS5wYXJzZUV2ZW50TmFtZT1mdW5jdGlvbih0KXt2YXIgZT10LnRvTG93ZXJDYXNlKCkuc3BsaXQoIi4iKSxyPWUuc2hpZnQoKTtpZigwPT09ZS5sZW5ndGh8fCJrZXlkb3duIiE9PXImJiJrZXl1cCIhPT1yKXJldHVybiBudWxsO3ZhciBvPW4uX25vcm1hbGl6ZUtleShlLnBvcCgpKSxpPSIiO2lmKF9zLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuaW5kZXhPZih0KTtuPi0xJiYoZS5zcGxpY2UobiwxKSxpKz10KyIuIil9KSksaSs9bywwIT1lLmxlbmd0aHx8MD09PW8ubGVuZ3RoKXJldHVybiBudWxsO3ZhciBhPXt9O3JldHVybiBhLmRvbUV2ZW50TmFtZT1yLGEuZnVsbEtleT1pLGF9LGUuZ2V0RXZlbnRGdWxsS2V5PWZ1bmN0aW9uKHQpe3ZhciBlPSIiLG49RWwoKS5nZXRFdmVudEtleSh0KTtyZXR1cm4iICI9PT0obj1uLnRvTG93ZXJDYXNlKCkpP249InNwYWNlIjoiLiI9PT1uJiYobj0iZG90IiksX3MuZm9yRWFjaCgoZnVuY3Rpb24ocil7ciE9biYmKDAsd3Nbcl0pKHQpJiYoZSs9cisiLiIpfSkpLGUrPW59LGUuZXZlbnRDYWxsYmFjaz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKG8pe24uZ2V0RXZlbnRGdWxsS2V5KG8pPT09dCYmci5ydW5HdWFyZGVkKChmdW5jdGlvbigpe3JldHVybiBlKG8pfSkpfX0sZS5fbm9ybWFsaXplS2V5PWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlImVzYyI6cmV0dXJuImVzY2FwZSI7ZGVmYXVsdDpyZXR1cm4gdH19LGV9KFpsKSx4cz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksQ3M9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlKXt2YXIgbj10LmNhbGwodGhpcyl8fHRoaXM7cmV0dXJuIG4uX2RvYz1lLG59cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5zYW5pdGl6ZT1mdW5jdGlvbih0LGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7c3dpdGNoKHQpe2Nhc2UgQ2UuTk9ORTpyZXR1cm4gZTtjYXNlIENlLkhUTUw6cmV0dXJuIGUgaW5zdGFuY2VvZiBFcz9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiSFRNTCIpLGZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbDt0cnl7bGU9bGV8fG5ldyBuZSh0KTt2YXIgcj1lP1N0cmluZyhlKToiIjtuPWxlLmdldEluZXJ0Qm9keUVsZW1lbnQocik7dmFyIG89NSxpPXI7ZG97aWYoMD09PW8pdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gc2FuaXRpemUgaHRtbCBiZWNhdXNlIHRoZSBpbnB1dCBpcyB1bnN0YWJsZSIpO28tLSxyPWksaT1uLmlubmVySFRNTCxuPWxlLmdldEluZXJ0Qm9keUVsZW1lbnQocil9d2hpbGUociE9PWkpO3ZhciBhPW5ldyBtZSx1PWEuc2FuaXRpemVDaGlsZHJlbih4ZShuKXx8bik7cmV0dXJuIGVlKCkmJmEuc2FuaXRpemVkU29tZXRoaW5nJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgSFRNTCBzdHJpcHBlZCBzb21lIGNvbnRlbnQsIHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MiKSx1fWZpbmFsbHl7aWYobilmb3IodmFyIGw9eGUobil8fG47bC5maXJzdENoaWxkOylsLnJlbW92ZUNoaWxkKGwuZmlyc3RDaGlsZCl9fSh0aGlzLl9kb2MsU3RyaW5nKGUpKSk7Y2FzZSBDZS5TVFlMRTpyZXR1cm4gZSBpbnN0YW5jZW9mIE9zP2UuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eToodGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJTdHlsZSIpLGZ1bmN0aW9uKHQpe2lmKCEodD1TdHJpbmcodCkudHJpbSgpKSlyZXR1cm4iIjt2YXIgZT10Lm1hdGNoKE9lKTtyZXR1cm4gZSYmaWUoZVsxXSk9PT1lWzFdfHx0Lm1hdGNoKEVlKSYmZnVuY3Rpb24odCl7Zm9yKHZhciBlPSEwLG49ITAscj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10LmNoYXJBdChyKTsiJyI9PT1vJiZuP2U9IWU6JyInPT09byYmZSYmKG49IW4pfXJldHVybiBlJiZufSh0KT90OihlZSgpJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHNhbml0aXppbmcgdW5zYWZlIHN0eWxlIHZhbHVlICIrdCsiIChzZWUgaHR0cDovL2cuY28vbmcvc2VjdXJpdHkjeHNzKS4iKSwidW5zYWZlIil9KGUpKTtjYXNlIENlLlNDUklQVDppZihlIGluc3RhbmNlb2YgVHMpcmV0dXJuIGUuY2hhbmdpbmdUaGlzQnJlYWtzQXBwbGljYXRpb25TZWN1cml0eTt0aHJvdyB0aGlzLmNoZWNrTm90U2FmZVZhbHVlKGUsIlNjcmlwdCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSBzY3JpcHQgY29udGV4dCIpO2Nhc2UgQ2UuVVJMOnJldHVybiBlIGluc3RhbmNlb2Yga3N8fGUgaW5zdGFuY2VvZiBQcz9lLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk6KHRoaXMuY2hlY2tOb3RTYWZlVmFsdWUoZSwiVVJMIiksaWUoU3RyaW5nKGUpKSk7Y2FzZSBDZS5SRVNPVVJDRV9VUkw6aWYoZSBpbnN0YW5jZW9mIGtzKXJldHVybiBlLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk7dGhyb3cgdGhpcy5jaGVja05vdFNhZmVWYWx1ZShlLCJSZXNvdXJjZVVSTCIpLG5ldyBFcnJvcigidW5zYWZlIHZhbHVlIHVzZWQgaW4gYSByZXNvdXJjZSBVUkwgY29udGV4dCAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCBTZWN1cml0eUNvbnRleHQgIit0KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIil9fSxlLnByb3RvdHlwZS5jaGVja05vdFNhZmVWYWx1ZT1mdW5jdGlvbih0LGUpe2lmKHQgaW5zdGFuY2VvZiBTcyl0aHJvdyBuZXcgRXJyb3IoIlJlcXVpcmVkIGEgc2FmZSAiK2UrIiwgZ290IGEgIit0LmdldFR5cGVOYW1lKCkrIiAoc2VlIGh0dHA6Ly9nLmNvL25nL3NlY3VyaXR5I3hzcykiKX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBFcyh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgT3ModCl9LGUucHJvdG90eXBlLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTY3JpcHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBUcyh0KX0sZS5wcm90b3R5cGUuYnlwYXNzU2VjdXJpdHlUcnVzdFVybD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFBzKHQpfSxlLnByb3RvdHlwZS5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmw9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBrcyh0KX0sZX0oeHMpLFNzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmNoYW5naW5nVGhpc0JyZWFrc0FwcGxpY2F0aW9uU2VjdXJpdHk9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iU2FmZVZhbHVlIG11c3QgdXNlIFtwcm9wZXJ0eV09YmluZGluZzogIit0aGlzLmNoYW5naW4="
}
]
},
{
"type": 12,
"id": "EviHmaf3ow8BQEbdnj4rmCBdUM5LB3KMbokvezBS4r9W",
"fee": 8900000,
"feeAssetId": null,
"timestamp": 1575393737775,
"version": 1,
"sender": "3N2rk3yzChsJp4wCS5VLo5Q3ifLmDChfbzQ",
"senderPublicKey": "BdACbbxkapMbmbtG7UxdPQ5Y8grEhk9cNxLNGAF5znme",
"proofs": [
"72ReoZxuuJFcErgAxZpqm2yShCD83iRr2MSyPXXq5vWvhXJZvncMpkxNS5sBcKJNmTMqSvX3rGXRFR91mHk7Rzb"
],
"data": [
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?0?2",
"type": "binary",
"value": "base64:Z1RoaXNCcmVha3NBcHBsaWNhdGlvblNlY3VyaXR5KyIgKHNlZSBodHRwOi8vZy5jby9uZy9zZWN1cml0eSN4c3MpIn0sdH0oKSxFcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIkhUTUwifSxlfShTcyksT3M9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3JldHVybiBudWxsIT09dCYmdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fHRoaXN9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS5nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybiJTdHlsZSJ9LGV9KFNzKSxUcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlNjcmlwdCJ9LGV9KFNzKSxQcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlVSTCJ9LGV9KFNzKSxrcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7cmV0dXJuIG51bGwhPT10JiZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLmdldFR5cGVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc291cmNlVVJMIn0sZX0oU3MpLEFzPWdpKFJpLCJicm93c2VyIixbe3Byb3ZpZGU6Tm8sdXNlVmFsdWU6ImJyb3dzZXIifSx7cHJvdmlkZTpqbyx1c2VWYWx1ZTpmdW5jdGlvbigpe1JsLm1ha2VDdXJyZW50KCksTGwuaW5pdCgpfSxtdWx0aTohMH0se3Byb3ZpZGU6bHUsdXNlQ2xhc3M6TmwsZGVwczpbRXVdfSx7cHJvdmlkZTpFdSx1c2VGYWN0b3J5OmZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50fSxkZXBzOltdfV0pO2Z1bmN0aW9uIElzKCl7cmV0dXJuIG5ldyAkdH12YXIgUnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2lmKHQpdGhyb3cgbmV3IEVycm9yKCJCcm93c2VyTW9kdWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLiBJZiB5b3UgbmVlZCBhY2Nlc3MgdG8gY29tbW9uIGRpcmVjdGl2ZXMgc3VjaCBhcyBOZ0lmIGFuZCBOZ0ZvciBmcm9tIGEgbGF6eSBsb2FkZWQgbW9kdWxlLCBpbXBvcnQgQ29tbW9uTW9kdWxlIGluc3RlYWQuIil9dmFyIGU7cmV0dXJuIGU9dCx0LndpdGhTZXJ2ZXJUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybntuZ01vZHVsZTplLHByb3ZpZGVyczpbe3Byb3ZpZGU6SW8sdXNlVmFsdWU6dC5hcHBJZH0se3Byb3ZpZGU6RGwsdXNlRXhpc3Rpbmc6SW99LFVsXX19LHR9KCk7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdzt2YXIgTXM9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxlKXt0aGlzLmlkPXQsdGhpcy51cmw9ZX19KCksanM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2b2lkIDA9PT1yJiYocj0iaW1wZXJhdGl2ZSIpLHZvaWQgMD09PW8mJihvPW51bGwpO3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkubmF2aWdhdGlvblRyaWdnZXI9cixpLnJlc3RvcmVkU3RhdGU9byxpfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iTmF2aWdhdGlvblN0YXJ0KGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJykifSxlfShNcyksTnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scil7dmFyIG89dC5jYWxsKHRoaXMsZSxuKXx8dGhpcztyZXR1cm4gby51cmxBZnRlclJlZGlyZWN0cz1yLG99cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJOYXZpZ2F0aW9uRW5kKGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICciK3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHMrIicpIn0sZX0oTXMpLERzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuLHIpe3ZhciBvPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIG8ucmVhc29uPXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIk5hdmlnYXRpb25DYW5jZWwoaWQ6ICIrdGhpcy5pZCsiLCB1cmw6ICciK3RoaXMudXJsKyInKSJ9LGV9KE1zKSxVcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyKXt2YXIgbz10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBvLmVycm9yPXIsb31yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIk5hdmlnYXRpb25FcnJvcihpZDogIit0aGlzLmlkKyIsIHVybDogJyIrdGhpcy51cmwrIicsIGVycm9yOiAiK3RoaXMuZXJyb3IrIikifSxlfShNcyksTHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLnVybEFmdGVyUmVkaXJlY3RzPXIsaS5zdGF0ZT1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSb3V0ZXNSZWNvZ25pemVkKGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICciK3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHMrIicsIHN0YXRlOiAiK3RoaXMuc3RhdGUrIikifSxlfShNcyksVnM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLnVybEFmdGVyUmVkaXJlY3RzPXIsaS5zdGF0ZT1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJHdWFyZHNDaGVja1N0YXJ0KGlkOiAiK3RoaXMuaWQrIiwgdXJsOiAnIit0aGlzLnVybCsiJywgdXJsQWZ0ZXJSZWRpcmVjdHM6ICciK3RoaXMudXJsQWZ0ZXJSZWRpcmVjdHMrIicsIHN0YXRlOiAiK3RoaXMuc3RhdGUrIikifSxlfShNcyksSHM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvLGkpe3ZhciBhPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGEudXJsQWZ0ZXJSZWRpcmVjdHM9cixhLnN0YXRlPW8sYS5zaG91bGRBY3RpdmF0ZT1pLGF9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJHdWFyZHNDaGVja0VuZChpZDogIit0aGlzLmlkKyIsIHVybDogJyIrdGhpcy51cmwrIicsIHVybEFmdGVyUmVkaXJlY3RzOiAnIit0aGlzLnVybEFmdGVyUmVkaXJlY3RzKyInLCBzdGF0ZTogIit0aGlzLnN0YXRlKyIsIHNob3VsZEFjdGl2YXRlOiAiK3RoaXMuc2hvdWxkQWN0aXZhdGUrIikifSxlfShNcyksenM9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLG4scixvKXt2YXIgaT10LmNhbGwodGhpcyxlLG4pfHx0aGlzO3JldHVybiBpLnVybEFmdGVyUmVkaXJlY3RzPXIsaS5zdGF0ZT1vLGl9cmV0dXJuIE9iamVjdChyLl9fZXh0ZW5kcykoZSx0KSxlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSZXNvbHZlU3RhcnQoaWQ6ICIrdGhpcy5pZCsiLCB1cmw6ICciK3RoaXMudXJsKyInLCB1cmxBZnRlclJlZGlyZWN0czogJyIrdGhpcy51cmxBZnRlclJlZGlyZWN0cysiJywgc3RhdGU6ICIrdGhpcy5zdGF0ZSsiKSJ9LGV9KE1zKSxGcz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixyLG8pe3ZhciBpPXQuY2FsbCh0aGlzLGUsbil8fHRoaXM7cmV0dXJuIGkudXJsQWZ0ZXJSZWRpcmVjdHM9cixpLnN0YXRlPW8saX1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJlc29sdmVFbmQoaWQ6ICIrdGhpcy5pZCsiLCB1cmw6ICciK3RoaXMudXJsKyInLCB1cmxBZnRlclJlZGlyZWN0czogJyIrdGhpcy51cmxBZnRlclJlZGlyZWN0cysiJywgc3RhdGU6ICIrdGhpcy5zdGF0ZSsiKSJ9LGV9KE1zKSxCcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5yb3V0ZT10fXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJSb3V0ZUNvbmZpZ0xvYWRTdGFydChwYXRoOiAiK3RoaXMucm91dGUucGF0aCsiKSJ9LHR9KCksWnM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMucm91dGU9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iUm91dGVDb25maWdMb2FkRW5kKHBhdGg6ICIrdGhpcy5yb3V0ZS5wYXRoKyIpIn0sdH0oKSxHcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5zbmFwc2hvdD10fXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDaGlsZEFjdGl2YXRpb25TdGFydChwYXRoOiAnIisodGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZyYmdGhpcy5zbmFwc2hvdC5yb3V0ZUNvbmZpZy5wYXRofHwiIikrIicpIn0sdH0oKSxxcz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5zbmFwc2hvdD10fXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDaGlsZEFjdGl2YXRpb25FbmQocGF0aDogJyIrKHRoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiIpKyInKSJ9LHR9KCksV3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuc25hcHNob3Q9dH1yZXR1cm4gdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iQWN0aXZhdGlvblN0YXJ0KHBhdGg6ICciKyh0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnJiZ0aGlzLnNuYXBzaG90LnJvdXRlQ29uZmlnLnBhdGh8fCIiKSsiJykifSx0fSgpLFFzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnNuYXBzaG90PXR9cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkFjdGl2YXRpb25FbmQocGF0aDogJyIrKHRoaXMuc25hcHNob3Qucm91dGVDb25maWcmJnRoaXMuc25hcHNob3Qucm91dGVDb25maWcucGF0aHx8IiIpKyInKSJ9LHR9KCksS3M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0aGlzLnJvdXRlckV2ZW50PXQsdGhpcy5wb3NpdGlvbj1lLHRoaXMuYW5jaG9yPW59cmV0dXJuIHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlNjcm9sbChhbmNob3I6ICciK3RoaXMuYW5jaG9yKyInLCBwb3NpdGlvbjogJyIrKHRoaXMucG9zaXRpb24/dGhpcy5wb3NpdGlvblswXSsiLCAiK3RoaXMucG9zaXRpb25bMV06bnVsbCkrIicpIn0sdH0oKSxZcz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksSnM9InByaW1hcnkiLCRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnBhcmFtcz10fHx7fX1yZXR1cm4gdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnBhcmFtcy5oYXNPd25Qcm9wZXJ0eSh0KX0sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe2lmKHRoaXMuaGFzKHQpKXt2YXIgZT10aGlzLnBhcmFtc1t0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lWzBdOmV9cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbih0KXtpZih0aGlzLmhhcyh0KSl7dmFyIGU9dGhpcy5wYXJhbXNbdF07cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZTpbZV19cmV0dXJuW119LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwia2V5cyIse2dldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdH0oKTtmdW5jdGlvbiBYcyh0KXtyZXR1cm4gbmV3ICRzKHQpfXZhciB0Yz0ibmdOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3IiO2Z1bmN0aW9uIGVjKHQpe3ZhciBlPUVycm9yKCJOYXZpZ2F0aW9uQ2FuY2VsaW5nRXJyb3I6ICIrdCk7cmV0dXJuIGVbdGNdPSEwLGV9ZnVuY3Rpb24gbmModCxlLG4pe3ZhciByPW4ucGF0aC5zcGxpdCgiLyIpO2lmKHIubGVuZ3RoPnQubGVuZ3RoKXJldHVybiBudWxsO2lmKCJmdWxsIj09PW4ucGF0aE1hdGNoJiYoZS5oYXNDaGlsZHJlbigpfHxyLmxlbmd0aDx0Lmxlbmd0aCkpcmV0dXJuIG51bGw7Zm9yKHZhciBvPXt9LGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIGE9cltpXSx1PXRbaV07aWYoYS5zdGFydHNXaXRoKCI6Iikpb1thLnN1YnN0cmluZygxKV09dTtlbHNlIGlmKGEhPT11LnBhdGgpcmV0dXJuIG51bGx9cmV0dXJue2NvbnN1bWVkOnQuc2xpY2UoMCxyLmxlbmd0aCkscG9zUGFyYW1zOm99fXZhciByYz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3RoaXMucm91dGVzPXQsdGhpcy5tb2R1bGU9ZX19KCk7ZnVuY3Rpb24gb2ModCxlKXt2b2lkIDA9PT1lJiYoZT0iIik7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07aWMocixhYyhlLHIpKX19ZnVuY3Rpb24gaWModCxlKXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlxuICAgICAgSW52YWxpZCBjb25maWd1cmF0aW9uIG9mIHJvdXRlICciK2UrIic6IEVuY291bnRlcmVkIHVuZGVmaW5lZCByb3V0ZS5cbiAgICAgIFRoZSByZWFzb24gbWlnaHQgYmUgYW4gZXh0cmEgY29tbWEuXG5cbiAgICAgIEV4YW1wbGU6XG4gICAgICBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICAgICAgeyBwYXRoOiAnJywgcmVkaXJlY3RUbzogJy9kYXNoYm9hcmQnLCBwYXRoTWF0Y2g6ICdmdWxsJyB9LFxuICAgICAgICB7IHBhdGg6ICdkYXNoYm9hcmQnLCAgY29tcG9uZW50OiBEYXNoYm9hcmRDb21wb25lbnQgfSwsIDw8IHR3byBjb21tYXNcbiAgICAgICAgeyBwYXRoOiAnZGV0YWlsLzppZCcsIGNvbXBvbmVudDogSGVyb0RldGFpbENvbXBvbmVudCB9XG4gICAgICBdO1xuICAgICIpO2lmKEFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogQXJyYXkgY2Fubm90IGJlIHNwZWNpZmllZCIpO2lmKCF0LmNvbXBvbmVudCYmIXQuY2hpbGRyZW4mJiF0LmxvYWRDaGlsZHJlbiYmdC5vdXRsZXQmJnQub3V0bGV0IT09SnMpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogYSBjb21wb25lbnRsZXNzIHJvdXRlIHdpdGhvdXQgY2hpbGRyZW4gb3IgbG9hZENoaWxkcmVuIGNhbm5vdCBoYXZlIGEgbmFtZWQgb3V0bGV0IHNldCIpO2lmKHQucmVkaXJlY3RUbyYmdC5jaGlsZHJlbil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29uZmlndXJhdGlvbiBvZiByb3V0ZSAnIitlKyInOiByZWRpcmVjdFRvIGFuZCBjaGlsZHJlbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpO2lmKHQucmVkaXJlY3RUbyYmdC5sb2FkQ2hpbGRyZW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcmVkaXJlY3RUbyBhbmQgbG9hZENoaWxkcmVuIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7aWYodC5jaGlsZHJlbiYmdC5sb2FkQ2hpbGRyZW4pdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogY2hpbGRyZW4gYW5kIGxvYWRDaGlsZHJlbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpO2lmKHQucmVkaXJlY3RUbyYmdC5jb21wb25lbnQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcmVkaXJlY3RUbyBhbmQgY29tcG9uZW50IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIik7aWYodC5wYXRoJiZ0Lm1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcGF0aCBhbmQgbWF0Y2hlciBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIpO2lmKHZvaWQgMD09PXQucmVkaXJlY3RUbyYmIXQuY29tcG9uZW50JiYhdC5jaGlsZHJlbiYmIXQubG9hZENoaWxkcmVuKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb25maWd1cmF0aW9uIG9mIHJvdXRlICciK2UrIicuIE9uZSBvZiB0aGUgZm9sbG93aW5nIG11c3QgYmUgcHJvdmlkZWQ6IGNvbXBvbmVudCwgcmVkaXJlY3RUbywgY2hpbGRyZW4gb3IgbG9hZENoaWxkcmVuIik7aWYodm9pZCAwPT09dC5wYXRoJiZ2b2lkIDA9PT10Lm1hdGNoZXIpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcm91dGVzIG11c3QgaGF2ZSBlaXRoZXIgYSBwYXRoIG9yIGEgbWF0Y2hlciBzcGVjaWZpZWQiKTtpZigic3RyaW5nIj09dHlwZW9mIHQucGF0aCYmIi8iPT09dC5wYXRoLmNoYXJBdCgwKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29uZmlndXJhdGlvbiBvZiByb3V0ZSAnIitlKyInOiBwYXRoIGNhbm5vdCBzdGFydCB3aXRoIGEgc2xhc2giKTtpZigiIj09PXQucGF0aCYmdm9pZCAwIT09dC5yZWRpcmVjdFRvJiZ2b2lkIDA9PT10LnBhdGhNYXRjaCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29uZmlndXJhdGlvbiBvZiByb3V0ZSAne3BhdGg6IFwiIitlKyciLCByZWRpcmVjdFRvOiAiJyt0LnJlZGlyZWN0VG8rIlwifSc6IHBsZWFzZSBwcm92aWRlICdwYXRoTWF0Y2gnLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAncGF0aE1hdGNoJyBpcyAncHJlZml4JywgYnV0IG9mdGVuIHRoZSBpbnRlbnQgaXMgdG8gdXNlICdmdWxsJy4iKTtpZih2b2lkIDAhPT10LnBhdGhNYXRjaCYmImZ1bGwiIT09dC5wYXRoTWF0Y2gmJiJwcmVmaXgiIT09dC5wYXRoTWF0Y2gpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gb2Ygcm91dGUgJyIrZSsiJzogcGF0aE1hdGNoIGNhbiBvbmx5IGJlIHNldCB0byAncHJlZml4JyBvciAnZnVsbCciKTt0LmNoaWxkcmVuJiZvYyh0LmNoaWxkcmVuLGUpfWZ1bmN0aW9uIGFjKHQsZSl7cmV0dXJuIGU/dHx8ZS5wYXRoP3QmJiFlLnBhdGg/dCsiLyI6IXQmJmUucGF0aD9lLnBhdGg6dCsiLyIrZS5wYXRoOiIiOnR9ZnVuY3Rpb24gdWModCl7dmFyIGU9dC5jaGlsZHJlbiYmdC5jaGlsZHJlbi5tYXAodWMpLG49ZT9PYmplY3Qoci5fX2Fzc2lnbikoe30sdCx7Y2hpbGRyZW46ZX0pOk9iamVjdChyLl9fYXNzaWduKSh7fSx0KTtyZXR1cm4hbi5jb21wb25lbnQmJihlfHxuLmxvYWRDaGlsZHJlbikmJm4ub3V0bGV0JiZuLm91dGxldCE9PUpzJiYobi5jb21wb25lbnQ9WXMpLG59ZnVuY3Rpb24gbGModCxlKXt2YXIgbixyPU9iamVjdC5rZXlzKHQpLG89T2JqZWN0LmtleXMoZSk7aWYoIXJ8fCFvfHxyLmxlbmd0aCE9by5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspaWYodFtuPXJbaV1dIT09ZVtuXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBzYyh0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx0KX1mdW5jdGlvbiBjYyh0KXtyZXR1cm4gdC5sZW5ndGg+MD90W3QubGVuZ3RoLTFdOm51bGx9ZnVuY3Rpb24gZmModCxlKXtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZlKHRbbl0sbil9ZnVuY3Rpb24gaGModCl7cmV0dXJuIFllKHQpP3Q6S2UodCk/VyhQcm9taXNlLnJlc29sdmUodCkpOlJ1KHQpfWZ1bmN0aW9uIHBjKHQsZSxuKXtyZXR1cm4gbj9mdW5jdGlvbih0LGUpe3JldHVybiBsYyh0LGUpfSh0LnF1ZXJ5UGFyYW1zLGUucXVlcnlQYXJhbXMpJiZmdW5jdGlvbiB0KGUsbil7aWYoIXljKGUuc2VnbWVudHMsbi5zZWdtZW50cykpcmV0dXJuITE7aWYoZS5udW1iZXJPZkNoaWxkcmVuIT09bi5udW1iZXJPZkNoaWxkcmVuKXJldHVybiExO2Zvcih2YXIgciBpbiBuLmNoaWxkcmVuKXtpZighZS5jaGlsZHJlbltyXSlyZXR1cm4hMTtpZighdChlLmNoaWxkcmVuW3JdLG4uY2hpbGRyZW5bcl0pKXJldHVybiExfXJldHVybiEwfSh0LnJvb3QsZS5yb290KTpmdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3Qua2V5cyhlKS5sZW5ndGg8PU9iamVjdC5rZXlzKHQpLmxlbmd0aCYmT2JqZWN0LmtleXMoZSkuZXZlcnkoKGZ1bmN0aW9uKG4pe3JldHVybiBlW25dPT09dFtuXX0pKX0odC5xdWVyeVBhcmFtcyxlLnF1ZXJ5UGFyYW1zKSYmZnVuY3Rpb24gdChlLG4pe3JldHVybiBmdW5jdGlvbiBlKG4scixvKXtpZihuLnNlZ21lbnRzLmxlbmd0aD5vLmxlbmd0aClyZXR1cm4hIXljKGE9bi5zZWdtZW50cy5zbGljZSgwLG8ubGVuZ3RoKSxvKSYmIXIuaGFzQ2hpbGRyZW4oKTtpZihuLnNlZ21lbnRzLmxlbmd0aD09PW8ubGVuZ3RoKXtpZigheWMobi5zZWdtZW50cyxvKSlyZXR1cm4hMTtmb3IodmFyIGkgaW4gci5jaGlsZHJlbil7aWYoIW4uY2hpbGRyZW5baV0pcmV0dXJuITE7aWYoIXQobi5jaGlsZHJlbltpXSxyLmNoaWxkcmVuW2ldKSlyZXR1cm4hMX1yZXR1cm4hMH12YXIgYT1vLnNsaWNlKDAsbi5zZWdtZW50cy5sZW5ndGgpLHU9by5zbGljZShuLnNlZ21lbnRzLmxlbmd0aCk7cmV0dXJuISF5YyhuLnNlZ21lbnRzLGEpJiYhIW4uY2hpbGRyZW5bSnNdJiZlKG4uY2hpbGRyZW5bSnNdLHIsdSl9KGUsbixuLnNlZ21lbnRzKX0odC5yb290LGUucm9vdCl9dmFyIGRjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbil7dGhpcy5yb290PXQsdGhpcy5xdWVyeVBhcmFtcz1lLHRoaXMuZnJhZ21lbnQ9bn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJxdWVyeVBhcmFtTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1NYXB8fCh0aGlzLl9xdWVyeVBhcmFtTWFwPVhzKHRoaXMucXVlcnlQYXJhbXMpKSx0aGlzLl9xdWVyeVBhcmFtTWFwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGJjLnNlcmlhbGl6ZSh0aGlzKX0sdH0oKSxnYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt2YXIgbj10aGlzO3RoaXMuc2VnbWVudHM9dCx0aGlzLmNoaWxkcmVuPWUsdGhpcy5wYXJlbnQ9bnVsbCxmYyhlLChmdW5jdGlvbih0LGUpe3JldHVybiB0LnBhcmVudD1ufSkpfXJldHVybiB0LnByb3RvdHlwZS5oYXNDaGlsZHJlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm51bWJlck9mQ2hpbGRyZW4+MH0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJudW1iZXJPZkNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hpbGRyZW4pLmxlbmd0aH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB4Yyh0aGlzKX0sdH0oKSx2Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnBhdGg9dCx0aGlzLnBhcmFtZXRlcnM9ZX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJhbWV0ZXJNYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFyYW1ldGVyTWFwfHwodGhpcy5fcGFyYW1ldGVyTWFwPVhzKHRoaXMucGFyYW1ldGVycykpLHRoaXMuX3BhcmFtZXRlck1hcH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBQYyh0aGlzKX0sdH0oKTtmdW5jdGlvbiB5Yyh0LGUpe3JldHVybiB0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KChmdW5jdGlvbih0LG4pe3JldHVybiB0LnBhdGg9PT1lW25dLnBhdGh9KSl9ZnVuY3Rpb24gbWModCxlKXt2YXIgbj1bXTtyZXR1cm4gZmModC5jaGlsZHJlbiwoZnVuY3Rpb24odCxyKXtyPT09SnMmJihuPW4uY29uY2F0KGUodCxyKSkpfSkpLGZjKHQuY2hpbGRyZW4sKGZ1bmN0aW9uKHQscil7ciE9PUpzJiYobj1uLmNvbmNhdChlKHQscikpKX0pKSxufXZhciBfYz1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksd2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXt2YXIgZT1uZXcgTWModCk7cmV0dXJuIG5ldyBkYyhlLnBhcnNlUm9vdFNlZ21lbnQoKSxlLnBhcnNlUXVlcnlQYXJhbXMoKSxlLnBhcnNlRnJhZ21lbnQoKSl9LHQucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiIvIitmdW5jdGlvbiB0KGUsbil7aWYoIWUuaGFzQ2hpbGRyZW4oKSlyZXR1cm4geGMoZSk7aWYobil7dmFyIHI9ZS5jaGlsZHJlbltKc10/dChlLmNoaWxkcmVuW0pzXSwhMSk6IiIsbz1bXTtyZXR1cm4gZmMoZS5jaGlsZHJlbiwoZnVuY3Rpb24oZSxuKXtuIT09SnMmJm8ucHVzaChuKyI6Iit0KGUsITEpKX0pKSxvLmxlbmd0aD4wP3IrIigiK28uam9pbigiLy8iKSsiKSI6cn12YXIgaT1tYyhlLChmdW5jdGlvbihuLHIpe3JldHVybiByPT09SnM/W3QoZS5jaGlsZHJlbltKc10sITEpXTpbcisiOiIrdChuLCExKV19KSk7cmV0dXJuIHhjKGUpKyIvKCIraS5qb2luKCIvLyIpKyIpIn0odC5yb290LCEwKSsoZT10LnF1ZXJ5UGFyYW1zLChuPU9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24odCl7dmFyIG49ZVt0XTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT9uLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIFNjKHQpKyI9IitTYyhlKX0pKS5qb2luKCImIik6U2ModCkrIj0iK1NjKG4pfSkpKS5sZW5ndGg/Ij8iK24uam9pbigiJiIpOiIiKSsoInN0cmluZyI9PXR5cGVvZiB0LmZyYWdtZW50PyIjIitlbmNvZGVVUkkodC5mcmFnbWVudCk6IiIpfSx0fSgpLGJjPW5ldyB3YztmdW5jdGlvbiB4Yyh0KXtyZXR1cm4gdC5zZWdtZW50cy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBQYyh0KX0pKS5qb2luKCIvIil9ZnVuY3Rpb24gQ2ModCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKC8lNDAvZywiQCIpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIil9ZnVuY3Rpb24gU2ModCl7cmV0dXJuIENjKHQpLnJlcGxhY2UoLyUzQi9naSwiOyIpfWZ1bmN0aW9uIEVjKHQpe3JldHVybiBDYyh0KS5yZXBsYWNlKC9cKC9nLCIlMjgiKS5yZXBsYWNlKC9cKS9nLCIlMjkiKS5yZXBsYWNlKC8lMjYvZ2ksIiYiKX1mdW5jdGlvbiBPYyh0KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWZ1bmN0aW9uIFRjKHQpe3JldHVybiBPYyh0LnJlcGxhY2UoL1wrL2csIiUyMCIpKX1mdW5jdGlvbiBQYyh0KXtyZXR1cm4iIitFYyh0LnBhdGgpKyhlPXQucGFyYW1ldGVycyxPYmplY3Qua2V5cyhlKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiI7IitFYyh0KSsiPSIrRWMoZVt0XSl9KSkuam9pbigiIikpO3ZhciBlfXZhciBrYz0vXlteXC8oKT87PSNdKy87ZnVuY3Rpb24gQWModCl7dmFyIGU9dC5tYXRjaChrYyk7cmV0dXJuIGU/ZVswXToiIn12YXIgSWM9L15bXj0/JiNdKy8sUmM9L15bXj8mI10rLyxNYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy51cmw9dCx0aGlzLnJlbWFpbmluZz10fXJldHVybiB0LnByb3RvdHlwZS5wYXJzZVJvb3RTZWdtZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uc3VtZU9wdGlvbmFsKCIvIiksIiI9PT10aGlzLnJlbWFpbmluZ3x8dGhpcy5wZWVrU3RhcnRzV2l0aCgiPyIpfHx0aGlzLnBlZWtTdGFydHNXaXRoKCIjIik/bmV3IGdjKFtdLHt9KTpuZXcgZ2MoW10sdGhpcy5wYXJzZUNoaWxkcmVuKCkpfSx0LnByb3RvdHlwZS5wYXJzZVF1ZXJ5UGFyYW1zPWZ1bmN0aW9uKCl7dmFyIHQ9e307aWYodGhpcy5jb25zdW1lT3B0aW9uYWwoIj8iKSlkb3t0aGlzLnBhcnNlUXVlcnlQYXJhbSh0KX13aGlsZSh0aGlzLmNvbnN1bWVPcHRpb25hbCgiJiIpKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUucGFyc2VGcmFnbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnN1bWVPcHRpb25hbCgiIyIpP2RlY29kZVVSSUNvbXBvbmVudCh0aGlzLnJlbWFpbmluZyk6bnVsbH0sdC5wcm90b3R5cGUucGFyc2VDaGlsZHJlbj1mdW5jdGlvbigpe2lmKCIiPT09dGhpcy5yZW1haW5pbmcpcmV0dXJue307dGhpcy5jb25zdW1lT3B0aW9uYWwoIi8iKTt2YXIgdD1bXTtmb3IodGhpcy5wZWVrU3RhcnRzV2l0aCgiKCIpfHx0LnB1c2godGhpcy5wYXJzZVNlZ21lbnQoKSk7dGhpcy5wZWVrU3RhcnRzV2l0aCgiLyIpJiYhdGhpcy5wZWVrU3RhcnRzV2l0aCgiLy8iKSYmIXRoaXMucGVla1N0YXJ0c1dpdGgoIi8oIik7KXRoaXMuY2FwdHVyZSgiLyIpLHQucHVzaCh0aGlzLnBhcnNlU2VnbWVudCgpKTt2YXIgZT17fTt0aGlzLnBlZWtTdGFydHNXaXRoKCIvKCIpJiYodGhpcy5jYXB0dXJlKCIvIiksZT10aGlzLnBhcnNlUGFyZW5zKCEwKSk7dmFyIG49e307cmV0dXJuIHRoaXMucGVla1N0YXJ0c1dpdGgoIigiKSYmKG49dGhpcy5wYXJzZVBhcmVucyghMSkpLCh0Lmxlbmd0aD4wfHxPYmplY3Qua2V5cyhlKS5sZW5ndGg+MCkmJihuW0pzXT1uZXcgZ2ModCxlKSksbn0sdC5wcm90b3R5cGUucGFyc2VTZWdtZW50PWZ1bmN0aW9uKCl7dmFyIHQ9QWModGhpcy5yZW1haW5pbmcpO2lmKCIiPT09dCYmdGhpcy5wZWVrU3RhcnRzV2l0aCgiOyIpKXRocm93IG5ldyBFcnJvcigiRW1wdHkgcGF0aCB1cmwgc2VnbWVudCBjYW5ub3QgaGF2ZSBwYXJhbWV0ZXJzOiAnIit0aGlzLnJlbWFpbmluZysiJy4iKTtyZXR1cm4gdGhpcy5jYXB0dXJlKHQpLG5ldyB2YyhPYyh0KSx0aGlzLnBhcnNlTWF0cml4UGFyYW1zKCkpfSx0LnByb3RvdHlwZS5wYXJzZU1hdHJpeFBhcmFtcz1mdW5jdGlvbigpe2Zvcih2YXIgdD17fTt0aGlzLmNvbnN1bWVPcHRpb25hbCgiOyIpOyl0aGlzLnBhcnNlUGFyYW0odCk7cmV0dXJuIHR9LHQucHJvdG90eXBlLnBhcnNlUGFyYW09ZnVuY3Rpb24odCl7dmFyIGU9QWModGhpcy5yZW1haW5pbmcpO2lmKGUpe3RoaXMuY2FwdHVyZShlKTt2YXIgbj0iIjtpZih0aGlzLmNvbnN1bWVPcHRpb25hbCgiPSIpKXt2YXIgcj1BYyh0aGlzLnJlbWFpbmluZyk7ciYmdGhpcy5jYXB0dXJlKG49cil9dFtPYyhlKV09T2Mobil9fSx0LnByb3RvdHlwZS5wYXJzZVF1ZXJ5UGFyYW09ZnVuY3Rpb24odCl7dmFyIGUsbj0oZT10aGlzLnJlbWFpbmluZy5tYXRjaChJYykpP2VbMF06IiI7aWYobil7dGhpcy5jYXB0dXJlKG4pO3ZhciByPSIiO2lmKHRoaXMuY29uc3VtZU9wdGlvbmFsKCI9Iikpe3ZhciBvPWZ1bmN0aW9uKHQpe3ZhciBlPXQubWF0Y2goUmMpO3JldHVybiBlP2VbMF06IiJ9KHRoaXMucmVtYWluaW5nKTtvJiZ0aGlzLmNhcHR1cmUocj1vKX12YXIgaT1UYyhuKSxhPVRjKHIpO2lmKHQuaGFzT3duUHJvcGVydHkoaSkpe3ZhciB1PXRbaV07QXJyYXkuaXNBcnJheSh1KXx8KHRbaV09dT1bdV0pLHUucHVzaChhKX1lbHNlIHRbaV09YX19LHQucHJvdG90eXBlLnBhcnNlUGFyZW5zPWZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Zvcih0aGlzLmNhcHR1cmUoIigiKTshdGhpcy5jb25zdW1lT3B0aW9uYWwoIikiKSYmdGhpcy5yZW1haW5pbmcubGVuZ3RoPjA7KXt2YXIgbj1BYyh0aGlzLnJlbWFpbmluZykscj10aGlzLnJlbWFpbmluZ1tuLmxlbmd0aF07aWYoIi8iIT09ciYmIikiIT09ciYmIjsiIT09cil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwYXJzZSB1cmwgJyIrdGhpcy51cmwrIiciKTt2YXIgbz12b2lkIDA7bi5pbmRleE9mKCI6Iik+LTE/KG89bi5zdWJzdHIoMCxuLmluZGV4T2YoIjoiKSksdGhpcy5jYXB0dXJlKG8pLHRoaXMuY2FwdHVyZSgiOiIpKTp0JiYobz1Kcyk7dmFyIGk9dGhpcy5wYXJzZUNoaWxkcmVuKCk7ZVtvXT0xPT09T2JqZWN0LmtleXMoaSkubGVuZ3RoP2lbSnNdOm5ldyBnYyhbXSxpKSx0aGlzLmNvbnN1bWVPcHRpb25hbCgiLy8iKX1yZXR1cm4gZX0sdC5wcm90b3R5cGUucGVla1N0YXJ0c1dpdGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVtYWluaW5nLnN0YXJ0c1dpdGgodCl9LHQucHJvdG90eXBlLmNvbnN1bWVPcHRpb25hbD1mdW5jdGlvbih0KXtyZXR1cm4hIXRoaXMucGVla1N0YXJ0c1dpdGgodCkmJih0aGlzLnJlbWFpbmluZz10aGlzLnJlbWFpbmluZy5zdWJzdHJpbmcodC5sZW5ndGgpLCEwKX0sdC5wcm90b3R5cGUuY2FwdHVyZT1mdW5jdGlvbih0KXtpZighdGhpcy5jb25zdW1lT3B0aW9uYWwodCkpdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCAiJyt0KyciLicpfSx0fSgpLGpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9yb290PXR9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb290LnZhbHVlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLnBhdGhGcm9tUm9vdCh0KTtyZXR1cm4gZS5sZW5ndGg+MT9lW2UubGVuZ3RoLTJdOm51bGx9LHQucHJvdG90eXBlLmNoaWxkcmVuPWZ1bmN0aW9uKHQpe3ZhciBlPU5jKHQsdGhpcy5fcm9vdCk7cmV0dXJuIGU/ZS5jaGlsZHJlbi5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlfSkpOltdfSx0LnByb3RvdHlwZS5maXJzdENoaWxkPWZ1bmN0aW9uKHQpe3ZhciBlPU5jKHQsdGhpcy5fcm9vdCk7cmV0dXJuIGUmJmUuY2hpbGRyZW4ubGVuZ3RoPjA/ZS5jaGlsZHJlblswXS52YWx1ZTpudWxsfSx0LnByb3RvdHlwZS5zaWJsaW5ncz1mdW5jdGlvbih0KXt2YXIgZT1EYyh0LHRoaXMuX3Jvb3QpO3JldHVybiBlLmxlbmd0aDwyP1tdOmVbZS5sZW5ndGgtMl0uY2hpbGRyZW4ubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dH0pKX0sdC5wcm90b3R5cGUucGF0aEZyb21Sb290PWZ1bmN0aW9uKHQpe3JldHVybiBEYyh0LHRoaXMuX3Jvb3QpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWV9KSl9LHR9KCk7ZnVuY3Rpb24gTmModCxlKXt2YXIgbixvO2lmKHQ9PT1lLnZhbHVlKXJldHVybiBlO3RyeXtmb3IodmFyIGk9T2JqZWN0KHIuX192YWx1ZXMpKGUuY2hpbGRyZW4pLGE9aS5uZXh0KCk7IWEuZG9uZTthPWkubmV4dCgpKXt2YXIgdT1OYyh0LGEudmFsdWUpO2lmKHUpcmV0dXJuIHV9fWNhdGNoKGwpe249e2Vycm9yOmx9fWZpbmFsbHl7dHJ5e2EmJiFhLmRvbmUmJihvPWkucmV0dXJuKSYmby5jYWxsKGkpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBEYyh0LGUpe3ZhciBuLG87aWYodD09PWUudmFsdWUpcmV0dXJuW2VdO3RyeXtmb3IodmFyIGk9T2JqZWN0KHIuX192YWx1ZXMpKGUuY2hpbGRyZW4pLGE9aS5uZXh0KCk7IWEuZG9uZTthPWkubmV4dCgpKXt2YXIgdT1EYyh0LGEudmFsdWUpO2lmKHUubGVuZ3RoKXJldHVybiB1LnVuc2hpZnQoZSksdX19Y2F0Y2gobCl7bj17ZXJyb3I6bH19ZmluYWxseXt0cnl7YSYmIWEuZG9uZSYmKG89aS5yZXR1cm4pJiZvLmNhbGwoaSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybltdfXZhciBVYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLnZhbHVlPXQsdGhpcy5jaGlsZHJlbj1lfXJldHVybiB0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJUcmVlTm9kZSgiK3RoaXMudmFsdWUrIikifSx0fSgpO2Z1bmN0aW9uIExjKHQpe3ZhciBlPXt9O3JldHVybiB0JiZ0LmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiBlW3QudmFsdWUub3V0bGV0XT10fSkpLGV9dmFyIFZjPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSxuKXt2YXIgcj10LmNhbGwodGhpcyxlKXx8dGhpcztyZXR1cm4gci5zbmFwc2hvdD1uLEdjKHIsZSkscn1yZXR1cm4gT2JqZWN0KHIuX19leHRlbmRzKShlLHQpLGUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc25hcHNob3QudG9TdHJpbmcoKX0sZX0oamMpO2Z1bmN0aW9uIEhjKHQsZSl7dmFyIG49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgQmMoW10se30se30sIiIse30sSnMsZSxudWxsLHQucm9vdCwtMSx7fSk7cmV0dXJuIG5ldyBaYygiIixuZXcgVWMobixbXSkpfSh0LGUpLHI9bmV3IE11KFtuZXcgdmMoIiIse30pXSksbz1uZXcgTXUoe30pLGk9bmV3IE11KHt9KSxhPW5ldyBNdSh7fSksdT1uZXcgTXUoIiIpLGw9bmV3IHpjKHIsbyxhLHUsaSxKcyxlLG4ucm9vdCk7cmV0dXJuIGwuc25hcHNob3Q9bi5yb290LG5ldyBWYyhuZXcgVWMobCxbXSksbil9dmFyIHpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8saSxhLHUpe3RoaXMudXJsPXQsdGhpcy5wYXJhbXM9ZSx0aGlzLnF1ZXJ5UGFyYW1zPW4sdGhpcy5mcmFnbWVudD1yLHRoaXMuZGF0YT1vLHRoaXMub3V0bGV0PWksdGhpcy5jb21wb25lbnQ9YSx0aGlzLl9mdXR1cmVTbmFwc2hvdD11fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJvdXRlQ29uZmlnIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Z1dHVyZVNuYXBzaG90LnJvdXRlQ29uZmlnfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicm9vdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5yb290fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGFyZW50Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhcmVudCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImZpcnN0Q2hpbGQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUuZmlyc3RDaGlsZCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNoaWxkcmVuIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmNoaWxkcmVuKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicGF0aEZyb21Sb290Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLnBhdGhGcm9tUm9vdCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmFtTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BhcmFtTWFwfHwodGhpcy5fcGFyYW1NYXA9dGhpcy5wYXJhbXMucGlwZShCKChmdW5jdGlvbih0KXtyZXR1cm4gWHModCl9KSkpKSx0aGlzLl9wYXJhbU1hcH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInF1ZXJ5UGFyYW1NYXAiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbU1hcHx8KHRoaXMuX3F1ZXJ5UGFyYW1NYXA9dGhpcy5xdWVyeVBhcmFtcy5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBYcyh0KX0pKSkpLHRoaXMuX3F1ZXJ5UGFyYW1NYXB9LGVudW1lcmFibGU6ITAsYw=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?1?2",
"type": "binary",
"value": "base64:b25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNuYXBzaG90P3RoaXMuc25hcHNob3QudG9TdHJpbmcoKToiRnV0dXJlKCIrdGhpcy5fZnV0dXJlU25hcHNob3QrIikifSx0fSgpO2Z1bmN0aW9uIEZjKHQsZSl7dm9pZCAwPT09ZSYmKGU9ImVtcHR5T25seSIpO3ZhciBuPXQucGF0aEZyb21Sb290LG89MDtpZigiYWx3YXlzIiE9PWUpZm9yKG89bi5sZW5ndGgtMTtvPj0xOyl7dmFyIGk9bltvXSxhPW5bby0xXTtpZihpLnJvdXRlQ29uZmlnJiYiIj09PWkucm91dGVDb25maWcucGF0aClvLS07ZWxzZXtpZihhLmNvbXBvbmVudClicmVhaztvLS19fXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJue3BhcmFtczpPYmplY3Qoci5fX2Fzc2lnbikoe30sdC5wYXJhbXMsZS5wYXJhbXMpLGRhdGE6T2JqZWN0KHIuX19hc3NpZ24pKHt9LHQuZGF0YSxlLmRhdGEpLHJlc29sdmU6T2JqZWN0KHIuX19hc3NpZ24pKHt9LHQucmVzb2x2ZSxlLl9yZXNvbHZlZERhdGEpfX0pLHtwYXJhbXM6e30sZGF0YTp7fSxyZXNvbHZlOnt9fSl9KG4uc2xpY2UobykpfXZhciBCYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGksYSx1LGwscyxjKXt0aGlzLnVybD10LHRoaXMucGFyYW1zPWUsdGhpcy5xdWVyeVBhcmFtcz1uLHRoaXMuZnJhZ21lbnQ9cix0aGlzLmRhdGE9byx0aGlzLm91dGxldD1pLHRoaXMuY29tcG9uZW50PWEsdGhpcy5yb3V0ZUNvbmZpZz11LHRoaXMuX3VybFNlZ21lbnQ9bCx0aGlzLl9sYXN0UGF0aEluZGV4PXMsdGhpcy5fcmVzb2x2ZT1jfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInJvb3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcm91dGVyU3RhdGUucm9vdH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhcmVudCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXJlbnQodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJmaXJzdENoaWxkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JvdXRlclN0YXRlLmZpcnN0Q2hpbGQodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJjaGlsZHJlbiIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5jaGlsZHJlbih0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsInBhdGhGcm9tUm9vdCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yb3V0ZXJTdGF0ZS5wYXRoRnJvbVJvb3QodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwYXJhbU1hcCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9wYXJhbU1hcHx8KHRoaXMuX3BhcmFtTWFwPVhzKHRoaXMucGFyYW1zKSksdGhpcy5fcGFyYW1NYXB9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJxdWVyeVBhcmFtTWFwIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1NYXB8fCh0aGlzLl9xdWVyeVBhcmFtTWFwPVhzKHRoaXMucXVlcnlQYXJhbXMpKSx0aGlzLl9xdWVyeVBhcmFtTWFwfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIlJvdXRlKHVybDonIit0aGlzLnVybC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKCl9KSkuam9pbigiLyIpKyInLCBwYXRoOiciKyh0aGlzLnJvdXRlQ29uZmlnP3RoaXMucm91dGVDb25maWcucGF0aDoiIikrIicpIn0sdH0oKSxaYz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbil7dmFyIHI9dC5jYWxsKHRoaXMsbil8fHRoaXM7cmV0dXJuIHIudXJsPWUsR2MocixuKSxyfXJldHVybiBPYmplY3Qoci5fX2V4dGVuZHMpKGUsdCksZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gcWModGhpcy5fcm9vdCl9LGV9KGpjKTtmdW5jdGlvbiBHYyh0LGUpe2UudmFsdWUuX3JvdXRlclN0YXRlPXQsZS5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gR2ModCxlKX0pKX1mdW5jdGlvbiBxYyh0KXt2YXIgZT10LmNoaWxkcmVuLmxlbmd0aD4wPyIgeyAiK3QuY2hpbGRyZW4ubWFwKHFjKS5qb2luKCIsICIpKyIgfSAiOiIiO3JldHVybiIiK3QudmFsdWUrZX1mdW5jdGlvbiBXYyh0KXtpZih0LnNuYXBzaG90KXt2YXIgZT10LnNuYXBzaG90LG49dC5fZnV0dXJlU25hcHNob3Q7dC5zbmFwc2hvdD1uLGxjKGUucXVlcnlQYXJhbXMsbi5xdWVyeVBhcmFtcyl8fHQucXVlcnlQYXJhbXMubmV4dChuLnF1ZXJ5UGFyYW1zKSxlLmZyYWdtZW50IT09bi5mcmFnbWVudCYmdC5mcmFnbWVudC5uZXh0KG4uZnJhZ21lbnQpLGxjKGUucGFyYW1zLG4ucGFyYW1zKXx8dC5wYXJhbXMubmV4dChuLnBhcmFtcyksZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7KytuKWlmKCFsYyh0W25dLGVbbl0pKXJldHVybiExO3JldHVybiEwfShlLnVybCxuLnVybCl8fHQudXJsLm5leHQobi51cmwpLGxjKGUuZGF0YSxuLmRhdGEpfHx0LmRhdGEubmV4dChuLmRhdGEpfWVsc2UgdC5zbmFwc2hvdD10Ll9mdXR1cmVTbmFwc2hvdCx0LmRhdGEubmV4dCh0Ll9mdXR1cmVTbmFwc2hvdC5kYXRhKX1mdW5jdGlvbiBRYyh0LGUpe3ZhciBuLHI7cmV0dXJuIGxjKHQucGFyYW1zLGUucGFyYW1zKSYmeWMobj10LnVybCxyPWUudXJsKSYmbi5ldmVyeSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gbGModC5wYXJhbWV0ZXJzLHJbZV0ucGFyYW1ldGVycyl9KSkmJiEoIXQucGFyZW50IT0hZS5wYXJlbnQpJiYoIXQucGFyZW50fHxRYyh0LnBhcmVudCxlLnBhcmVudCkpfWZ1bmN0aW9uIEtjKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmbnVsbCE9dCYmIXQub3V0bGV0cyYmIXQuc2VnbWVudFBhdGh9ZnVuY3Rpb24gWWModCxlLG4scixvKXt2YXIgaT17fTtyZXR1cm4gciYmZmMociwoZnVuY3Rpb24odCxlKXtpW2VdPUFycmF5LmlzQXJyYXkodCk/dC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiIiK3R9KSk6IiIrdH0pKSxuZXcgZGMobi5yb290PT09dD9lOmZ1bmN0aW9uIHQoZSxuLHIpe3ZhciBvPXt9O3JldHVybiBmYyhlLmNoaWxkcmVuLChmdW5jdGlvbihlLGkpe29baV09ZT09PW4/cjp0KGUsbixyKX0pKSxuZXcgZ2MoZS5zZWdtZW50cyxvKX0obi5yb290LHQsZSksaSxvKX12YXIgSmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXtpZih0aGlzLmlzQWJzb2x1dGU9dCx0aGlzLm51bWJlck9mRG91YmxlRG90cz1lLHRoaXMuY29tbWFuZHM9bix0JiZuLmxlbmd0aD4wJiZLYyhuWzBdKSl0aHJvdyBuZXcgRXJyb3IoIlJvb3Qgc2VnbWVudCBjYW5ub3QgaGF2ZSBtYXRyaXggcGFyYW1ldGVycyIpO3ZhciByPW4uZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10JiZ0Lm91dGxldHN9KSk7aWYociYmciE9PWNjKG4pKXRocm93IG5ldyBFcnJvcigie291dGxldHM6e319IGhhcyB0byBiZSB0aGUgbGFzdCBjb21tYW5kIil9cmV0dXJuIHQucHJvdG90eXBlLnRvUm9vdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzQWJzb2x1dGUmJjE9PT10aGlzLmNvbW1hbmRzLmxlbmd0aCYmIi8iPT10aGlzLmNvbW1hbmRzWzBdfSx0fSgpLCRjPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXt0aGlzLnNlZ21lbnRHcm91cD10LHRoaXMucHJvY2Vzc0NoaWxkcmVuPWUsdGhpcy5pbmRleD1ufX0oKTtmdW5jdGlvbiBYYyh0KXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPXQmJnQub3V0bGV0cz90Lm91dGxldHNbSnNdOiIiK3R9ZnVuY3Rpb24gdGYodCxlLG4pe2lmKHR8fCh0PW5ldyBnYyhbXSx7fSkpLDA9PT10LnNlZ21lbnRzLmxlbmd0aCYmdC5oYXNDaGlsZHJlbigpKXJldHVybiBlZih0LGUsbik7dmFyIHI9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgcj0wLG89ZSxpPXttYXRjaDohMSxwYXRoSW5kZXg6MCxjb21tYW5kSW5kZXg6MH07bzx0LnNlZ21lbnRzLmxlbmd0aDspe2lmKHI+PW4ubGVuZ3RoKXJldHVybiBpO3ZhciBhPXQuc2VnbWVudHNbb10sdT1YYyhuW3JdKSxsPXI8bi5sZW5ndGgtMT9uW3IrMV06bnVsbDtpZihvPjAmJnZvaWQgMD09PXUpYnJlYWs7aWYodSYmbCYmIm9iamVjdCI9PXR5cGVvZiBsJiZ2b2lkIDA9PT1sLm91dGxldHMpe2lmKCFhZih1LGwsYSkpcmV0dXJuIGk7cis9Mn1lbHNle2lmKCFhZih1LHt9LGEpKXJldHVybiBpO3IrK31vKyt9cmV0dXJue21hdGNoOiEwLHBhdGhJbmRleDpvLGNvbW1hbmRJbmRleDpyfX0odCxlLG4pLG89bi5zbGljZShyLmNvbW1hbmRJbmRleCk7aWYoci5tYXRjaCYmci5wYXRoSW5kZXg8dC5zZWdtZW50cy5sZW5ndGgpe3ZhciBpPW5ldyBnYyh0LnNlZ21lbnRzLnNsaWNlKDAsci5wYXRoSW5kZXgpLHt9KTtyZXR1cm4gaS5jaGlsZHJlbltKc109bmV3IGdjKHQuc2VnbWVudHMuc2xpY2Uoci5wYXRoSW5kZXgpLHQuY2hpbGRyZW4pLGVmKGksMCxvKX1yZXR1cm4gci5tYXRjaCYmMD09PW8ubGVuZ3RoP25ldyBnYyh0LnNlZ21lbnRzLHt9KTpyLm1hdGNoJiYhdC5oYXNDaGlsZHJlbigpP25mKHQsZSxuKTpyLm1hdGNoP2VmKHQsMCxvKTpuZih0LGUsbil9ZnVuY3Rpb24gZWYodCxlLG4pe2lmKDA9PT1uLmxlbmd0aClyZXR1cm4gbmV3IGdjKHQuc2VnbWVudHMse30pO3ZhciByPWZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIm9iamVjdCIhPXR5cGVvZiB0WzBdPygoZT17fSlbSnNdPXQsZSk6dm9pZCAwPT09dFswXS5vdXRsZXRzPygobj17fSlbSnNdPXQsbik6dFswXS5vdXRsZXRzfShuKSxvPXt9O3JldHVybiBmYyhyLChmdW5jdGlvbihuLHIpe251bGwhPT1uJiYob1tyXT10Zih0LmNoaWxkcmVuW3JdLGUsbikpfSkpLGZjKHQuY2hpbGRyZW4sKGZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09cltlXSYmKG9bZV09dCl9KSksbmV3IGdjKHQuc2VnbWVudHMsbyl9ZnVuY3Rpb24gbmYodCxlLG4pe2Zvcih2YXIgcj10LnNlZ21lbnRzLnNsaWNlKDAsZSksbz0wO288bi5sZW5ndGg7KXtpZigib2JqZWN0Ij09dHlwZW9mIG5bb10mJnZvaWQgMCE9PW5bb10ub3V0bGV0cyl7dmFyIGk9cmYobltvXS5vdXRsZXRzKTtyZXR1cm4gbmV3IGdjKHIsaSl9aWYoMD09PW8mJktjKG5bMF0pKXIucHVzaChuZXcgdmModC5zZWdtZW50c1tlXS5wYXRoLG5bMF0pKSxvKys7ZWxzZXt2YXIgYT1YYyhuW29dKSx1PW88bi5sZW5ndGgtMT9uW28rMV06bnVsbDthJiZ1JiZLYyh1KT8oci5wdXNoKG5ldyB2YyhhLG9mKHUpKSksbys9Mik6KHIucHVzaChuZXcgdmMoYSx7fSkpLG8rKyl9fXJldHVybiBuZXcgZ2Mocix7fSl9ZnVuY3Rpb24gcmYodCl7dmFyIGU9e307cmV0dXJuIGZjKHQsKGZ1bmN0aW9uKHQsbil7bnVsbCE9PXQmJihlW25dPW5mKG5ldyBnYyhbXSx7fSksMCx0KSl9KSksZX1mdW5jdGlvbiBvZih0KXt2YXIgZT17fTtyZXR1cm4gZmModCwoZnVuY3Rpb24odCxuKXtyZXR1cm4gZVtuXT0iIit0fSkpLGV9ZnVuY3Rpb24gYWYodCxlLG4pe3JldHVybiB0PT1uLnBhdGgmJmxjKGUsbi5wYXJhbWV0ZXJzKX12YXIgdWY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuLHIpe3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5PXQsdGhpcy5mdXR1cmVTdGF0ZT1lLHRoaXMuY3VyclN0YXRlPW4sdGhpcy5mb3J3YXJkRXZlbnQ9cn1yZXR1cm4gdC5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5mdXR1cmVTdGF0ZS5fcm9vdCxuPXRoaXMuY3VyclN0YXRlP3RoaXMuY3VyclN0YXRlLl9yb290Om51bGw7dGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXMoZSxuLHQpLFdjKHRoaXMuZnV0dXJlU3RhdGUucm9vdCksdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKGUsbix0KX0sdC5wcm90b3R5cGUuZGVhY3RpdmF0ZUNoaWxkUm91dGVzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLG89TGMoZSk7dC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnZhbHVlLm91dGxldDtyLmRlYWN0aXZhdGVSb3V0ZXModCxvW2VdLG4pLGRlbGV0ZSBvW2VdfSkpLGZjKG8sKGZ1bmN0aW9uKHQsZSl7ci5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih0LG4pfSkpfSx0LnByb3RvdHlwZS5kZWFjdGl2YXRlUm91dGVzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10LnZhbHVlLG89ZT9lLnZhbHVlOm51bGw7aWYocj09PW8paWYoci5jb21wb25lbnQpe3ZhciBpPW4uZ2V0Q29udGV4dChyLm91dGxldCk7aSYmdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXModCxlLGkuY2hpbGRyZW4pfWVsc2UgdGhpcy5kZWFjdGl2YXRlQ2hpbGRSb3V0ZXModCxlLG4pO2Vsc2UgbyYmdGhpcy5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbihlLG4pfSx0LnByb3RvdHlwZS5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnNob3VsZERldGFjaCh0LnZhbHVlLnNuYXBzaG90KT90aGlzLmRldGFjaEFuZFN0b3JlUm91dGVTdWJ0cmVlKHQsZSk6dGhpcy5kZWFjdGl2YXRlUm91dGVBbmRPdXRsZXQodCxlKX0sdC5wcm90b3R5cGUuZGV0YWNoQW5kU3RvcmVSb3V0ZVN1YnRyZWU9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmdldENvbnRleHQodC52YWx1ZS5vdXRsZXQpO2lmKG4mJm4ub3V0bGV0KXt2YXIgcj1uLm91dGxldC5kZXRhY2goKSxvPW4uY2hpbGRyZW4ub25PdXRsZXREZWFjdGl2YXRlZCgpO3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnN0b3JlKHQudmFsdWUuc25hcHNob3Qse2NvbXBvbmVudFJlZjpyLHJvdXRlOnQsY29udGV4dHM6b30pfX0sdC5wcm90b3R5cGUuZGVhY3RpdmF0ZVJvdXRlQW5kT3V0bGV0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxyPWUuZ2V0Q29udGV4dCh0LnZhbHVlLm91dGxldCk7aWYocil7dmFyIG89TGModCksaT10LnZhbHVlLmNvbXBvbmVudD9yLmNoaWxkcmVuOmU7ZmMobywoZnVuY3Rpb24odCxlKXtyZXR1cm4gbi5kZWFjdGl2YXRlUm91dGVBbmRJdHNDaGlsZHJlbih0LGkpfSkpLHIub3V0bGV0JiYoci5vdXRsZXQuZGVhY3RpdmF0ZSgpLHIuY2hpbGRyZW4ub25PdXRsZXREZWFjdGl2YXRlZCgpKX19LHQucHJvdG90eXBlLmFjdGl2YXRlQ2hpbGRSb3V0ZXM9ZnVuY3Rpb24odCxlLG4pe3ZhciByPXRoaXMsbz1MYyhlKTt0LmNoaWxkcmVuLmZvckVhY2goKGZ1bmN0aW9uKHQpe3IuYWN0aXZhdGVSb3V0ZXModCxvW3QudmFsdWUub3V0bGV0XSxuKSxyLmZvcndhcmRFdmVudChuZXcgUXModC52YWx1ZS5zbmFwc2hvdCkpfSkpLHQuY2hpbGRyZW4ubGVuZ3RoJiZ0aGlzLmZvcndhcmRFdmVudChuZXcgcXModC52YWx1ZS5zbmFwc2hvdCkpfSx0LnByb3RvdHlwZS5hY3RpdmF0ZVJvdXRlcz1mdW5jdGlvbih0LGUsbil7dmFyIHI9dC52YWx1ZSxvPWU/ZS52YWx1ZTpudWxsO2lmKFdjKHIpLHI9PT1vKWlmKHIuY29tcG9uZW50KXt2YXIgaT1uLmdldE9yQ3JlYXRlQ29udGV4dChyLm91dGxldCk7dGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKHQsZSxpLmNoaWxkcmVuKX1lbHNlIHRoaXMuYWN0aXZhdGVDaGlsZFJvdXRlcyh0LGUsbik7ZWxzZSBpZihyLmNvbXBvbmVudClpZihpPW4uZ2V0T3JDcmVhdGVDb250ZXh0KHIub3V0bGV0KSx0aGlzLnJvdXRlUmV1c2VTdHJhdGVneS5zaG91bGRBdHRhY2goci5zbmFwc2hvdCkpe3ZhciBhPXRoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnJldHJpZXZlKHIuc25hcHNob3QpO3RoaXMucm91dGVSZXVzZVN0cmF0ZWd5LnN0b3JlKHIuc25hcHNob3QsbnVsbCksaS5jaGlsZHJlbi5vbk91dGxldFJlQXR0YWNoZWQoYS5jb250ZXh0cyksaS5hdHRhY2hSZWY9YS5jb21wb25lbnRSZWYsaS5yb3V0ZT1hLnJvdXRlLnZhbHVlLGkub3V0bGV0JiZpLm91dGxldC5hdHRhY2goYS5jb21wb25lbnRSZWYsYS5yb3V0ZS52YWx1ZSksbGYoYS5yb3V0ZSl9ZWxzZXt2YXIgdT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5wYXJlbnQ7ZTtlPWUucGFyZW50KXt2YXIgbj1lLnJvdXRlQ29uZmlnO2lmKG4mJm4uX2xvYWRlZENvbmZpZylyZXR1cm4gbi5fbG9hZGVkQ29uZmlnO2lmKG4mJm4uY29tcG9uZW50KXJldHVybiBudWxsfXJldHVybiBudWxsfShyLnNuYXBzaG90KSxsPXU/dS5tb2R1bGUuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOm51bGw7aS5hdHRhY2hSZWY9bnVsbCxpLnJvdXRlPXIsaS5yZXNvbHZlcj1sLGkub3V0bGV0JiZpLm91dGxldC5hY3RpdmF0ZVdpdGgocixsKSx0aGlzLmFjdGl2YXRlQ2hpbGRSb3V0ZXModCxudWxsLGkuY2hpbGRyZW4pfWVsc2UgdGhpcy5hY3RpdmF0ZUNoaWxkUm91dGVzKHQsbnVsbCxuKX0sdH0oKTtmdW5jdGlvbiBsZih0KXtXYyh0LnZhbHVlKSx0LmNoaWxkcmVuLmZvckVhY2gobGYpfWZ1bmN0aW9uIHNmKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGNmKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZGN9dmFyIGZmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMuc2VnbWVudEdyb3VwPXR8fG51bGx9fSgpLGhmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMudXJsVHJlZT10fX0oKTtmdW5jdGlvbiBwZih0KXtyZXR1cm4gbmV3IHgoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmVycm9yKG5ldyBmZih0KSl9KSl9ZnVuY3Rpb24gZGYodCl7cmV0dXJuIG5ldyB4KChmdW5jdGlvbihlKXtyZXR1cm4gZS5lcnJvcihuZXcgaGYodCkpfSkpfWZ1bmN0aW9uIGdmKHQpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IobmV3IEVycm9yKCJPbmx5IGFic29sdXRlIHJlZGlyZWN0cyBjYW4gaGF2ZSBuYW1lZCBvdXRsZXRzLiByZWRpcmVjdFRvOiAnIit0KyInIikpfSkpfXZhciB2Zj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvKXt0aGlzLmNvbmZpZ0xvYWRlcj1lLHRoaXMudXJsU2VyaWFsaXplcj1uLHRoaXMudXJsVHJlZT1yLHRoaXMuY29uZmlnPW8sdGhpcy5hbGxvd1JlZGlyZWN0cz0hMCx0aGlzLm5nTW9kdWxlPXQuZ2V0KEh0KX1yZXR1cm4gdC5wcm90b3R5cGUuYXBwbHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmV4cGFuZFNlZ21lbnRHcm91cCh0aGlzLm5nTW9kdWxlLHRoaXMuY29uZmlnLHRoaXMudXJsVHJlZS5yb290LEpzKS5waXBlKEIoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmNyZWF0ZVVybFRyZWUoZSx0LnVybFRyZWUucXVlcnlQYXJhbXMsdC51cmxUcmVlLmZyYWdtZW50KX0pKSkucGlwZShpbCgoZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIGhmKXJldHVybiB0LmFsbG93UmVkaXJlY3RzPSExLHQubWF0Y2goZS51cmxUcmVlKTtpZihlIGluc3RhbmNlb2YgZmYpdGhyb3cgdC5ub01hdGNoRXJyb3IoZSk7dGhyb3cgZX0pKSl9LHQucHJvdG90eXBlLm1hdGNoPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIHRoaXMuZXhwYW5kU2VnbWVudEdyb3VwKHRoaXMubmdNb2R1bGUsdGhpcy5jb25maWcsdC5yb290LEpzKS5waXBlKEIoKGZ1bmN0aW9uKG4pe3JldHVybiBlLmNyZWF0ZVVybFRyZWUobix0LnF1ZXJ5UGFyYW1zLHQuZnJhZ21lbnQpfSkpKS5waXBlKGlsKChmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgZmYpdGhyb3cgZS5ub01hdGNoRXJyb3IodCk7dGhyb3cgdH0pKSl9LHQucHJvdG90eXBlLm5vTWF0Y2hFcnJvcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IEVycm9yKCJDYW5ub3QgbWF0Y2ggYW55IHJvdXRlcy4gVVJMIFNlZ21lbnQ6ICciK3Quc2VnbWVudEdyb3VwKyInIil9LHQucHJvdG90eXBlLmNyZWF0ZVVybFRyZWU9ZnVuY3Rpb24odCxlLG4pe3ZhciByLG89dC5zZWdtZW50cy5sZW5ndGg+MD9uZXcgZ2MoW10sKChyPXt9KVtKc109dCxyKSk6dDtyZXR1cm4gbmV3IGRjKG8sZSxuKX0sdC5wcm90b3R5cGUuZXhwYW5kU2VnbWVudEdyb3VwPWZ1bmN0aW9uKHQsZSxuLHIpe3JldHVybiAwPT09bi5zZWdtZW50cy5sZW5ndGgmJm4uaGFzQ2hpbGRyZW4oKT90aGlzLmV4cGFuZENoaWxkcmVuKHQsZSxuKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZ2MoW10sdCl9KSkpOnRoaXMuZXhwYW5kU2VnbWVudCh0LG4sZSxuLnNlZ21lbnRzLHIsITApfSx0LnByb3RvdHlwZS5leHBhbmRDaGlsZHJlbj1mdW5jdGlvbih0LGUsbil7dmFyIHI9dGhpcztyZXR1cm4gZnVuY3Rpb24obixvKXtpZigwPT09T2JqZWN0LmtleXMobikubGVuZ3RoKXJldHVybiBSdSh7fSk7dmFyIGk9W10sYT1bXSx1PXt9O3JldHVybiBmYyhuLChmdW5jdGlvbihuLG8pe3ZhciBsLHMsYz0obD1vLHM9bixyLmV4cGFuZFNlZ21lbnRHcm91cCh0LGUscyxsKSkucGlwZShCKChmdW5jdGlvbih0KXtyZXR1cm4gdVtvXT10fSkpKTtvPT09SnM/aS5wdXNoKGMpOmEucHVzaChjKX0pKSxSdS5hcHBseShudWxsLGkuY29uY2F0KGEpKS5waXBlKHp1KCksb2woKSxCKChmdW5jdGlvbigpe3JldHVybiB1fSkpKX0obi5jaGlsZHJlbil9LHQucHJvdG90eXBlLmV4cGFuZFNlZ21lbnQ9ZnVuY3Rpb24odCxlLG4sbyxpLGEpe3ZhciB1PXRoaXM7cmV0dXJuIFJ1LmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkobikpLnBpcGUoQigoZnVuY3Rpb24ocil7cmV0dXJuIHUuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZSh0LGUsbixyLG8saSxhKS5waXBlKGlsKChmdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgZmYpcmV0dXJuIFJ1KG51bGwpO3Rocm93IHR9KSkpfSkpLHp1KCksZmwoKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pKSxpbCgoZnVuY3Rpb24odCxuKXtpZih0IGluc3RhbmNlb2YgTnV8fCJFbXB0eUVycm9yIj09PXQubmFtZSl7aWYodS5ub0xlZnRvdmVyc0luVXJsKGUsbyxpKSlyZXR1cm4gUnUobmV3IGdjKFtdLHt9KSk7dGhyb3cgbmV3IGZmKGUpfXRocm93IHR9KSkpfSx0LnByb3RvdHlwZS5ub0xlZnRvdmVyc0luVXJsPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gMD09PWUubGVuZ3RoJiYhdC5jaGlsZHJlbltuXX0sdC5wcm90b3R5cGUuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZT1mdW5jdGlvbih0LGUsbixyLG8saSxhKXtyZXR1cm4gd2YocikhPT1pP3BmKGUpOnZvaWQgMD09PXIucmVkaXJlY3RUbz90aGlzLm1hdGNoU2VnbWVudEFnYWluc3RSb3V0ZSh0LGUscixvKTphJiZ0aGlzLmFsbG93UmVkaXJlY3RzP3RoaXMuZXhwYW5kU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QodCxlLG4scixvLGkpOnBmKGUpfSx0LnByb3RvdHlwZS5leHBhbmRTZWdtZW50QWdhaW5zdFJvdXRlVXNpbmdSZWRpcmVjdD1mdW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIioqIj09PXIucGF0aD90aGlzLmV4cGFuZFdpbGRDYXJkV2l0aFBhcmFtc0FnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QodCxuLHIsaSk6dGhpcy5leHBhbmRSZWd1bGFyU2VnbWVudEFnYWluc3RSb3V0ZVVzaW5nUmVkaXJlY3QodCxlLG4scixvLGkpfSx0LnByb3RvdHlwZS5leHBhbmRXaWxkQ2FyZFdpdGhQYXJhbXNBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMsaT10aGlzLmFwcGx5UmVkaXJlY3RDb21tYW5kcyhbXSxuLnJlZGlyZWN0VG8se30pO3JldHVybiBuLnJlZGlyZWN0VG8uc3RhcnRzV2l0aCgiLyIpP2RmKGkpOnRoaXMubGluZXJhbGl6ZVNlZ21lbnRzKG4saSkucGlwZShRKChmdW5jdGlvbihuKXt2YXIgaT1uZXcgZ2Mobix7fSk7cmV0dXJuIG8uZXhwYW5kU2VnbWVudCh0LGksZSxuLHIsITEpfSkpKX0sdC5wcm90b3R5cGUuZXhwYW5kUmVndWxhclNlZ21lbnRBZ2FpbnN0Um91dGVVc2luZ1JlZGlyZWN0PWZ1bmN0aW9uKHQsZSxuLHIsbyxpKXt2YXIgYT10aGlzLHU9eWYoZSxyLG8pLGw9dS5jb25zdW1lZFNlZ21lbnRzLHM9dS5sYXN0Q2hpbGQsYz11LnBvc2l0aW9uYWxQYXJhbVNlZ21lbnRzO2lmKCF1Lm1hdGNoZWQpcmV0dXJuIHBmKGUpO3ZhciBmPXRoaXMuYXBwbHlSZWRpcmVjdENvbW1hbmRzKGwsci5yZWRpcmVjdFRvLGMpO3JldHVybiByLnJlZGlyZWN0VG8uc3RhcnRzV2l0aCgiLyIpP2RmKGYpOnRoaXMubGluZXJhbGl6ZVNlZ21lbnRzKHIsZikucGlwZShRKChmdW5jdGlvbihyKXtyZXR1cm4gYS5leHBhbmRTZWdtZW50KHQsZSxuLHIuY29uY2F0KG8uc2xpY2UocykpLGksITEpfSkpKX0sdC5wcm90b3R5cGUubWF0Y2hTZWdtZW50QWdhaW5zdFJvdXRlPWZ1bmN0aW9uKHQsZSxuLG8pe3ZhciBpPXRoaXM7aWYoIioqIj09PW4ucGF0aClyZXR1cm4gbi5sb2FkQ2hpbGRyZW4/dGhpcy5jb25maWdMb2FkZXIubG9hZCh0LmluamVjdG9yLG4pLnBpcGUoQigoZnVuY3Rpb24odCl7cmV0dXJuIG4uX2xvYWRlZENvbmZpZz10LG5ldyBnYyhvLHt9KX0pKSk6UnUobmV3IGdjKG8se30pKTt2YXIgYT15ZihlLG4sbyksdT1hLmNvbnN1bWVkU2VnbWVudHMsbD1hLmxhc3RDaGlsZDtpZighYS5tYXRjaGVkKXJldHVybiBwZihlKTt2YXIgcz1vLnNsaWNlKGwpO3JldHVybiB0aGlzLmdldENoaWxkQ29uZmlnKHQsbixvKS5waXBlKFEoKGZ1bmN0aW9uKHQpe3ZhciBuPXQubW9kdWxlLG89dC5yb3V0ZXMsYT1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gbi5sZW5ndGg+MCYmZnVuY3Rpb24odCxlLG4pe3JldHVybiBuLnNvbWUoKGZ1bmN0aW9uKG4pe3JldHVybiBfZih0LGUsbikmJndmKG4pIT09SnN9KSl9KHQsbixvKT97c2VnbWVudEdyb3VwOm1mKG5ldyBnYyhlLGZ1bmN0aW9uKHQsZSl7dmFyIG4sbyxpPXt9O2lbSnNdPWU7dHJ5e2Zvcih2YXIgYT1PYmplY3Qoci5fX3ZhbHVlcykodCksdT1hLm5leHQoKTshdS5kb25lO3U9YS5uZXh0KCkpe3ZhciBsPXUudmFsdWU7IiI9PT1sLnBhdGgmJndmKGwpIT09SnMmJihpW3dmKGwpXT1uZXcgZ2MoW10se30pKX19Y2F0Y2gocyl7bj17ZXJyb3I6c319ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKG89YS5yZXR1cm4pJiZvLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBpfShvLG5ldyBnYyhuLHQuY2hpbGRyZW4pKSkpLHNsaWNlZFNlZ21lbnRzOltdfTowPT09bi5sZW5ndGgmJmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5zb21lKChmdW5jdGlvbihuKXtyZXR1cm4gX2YodCxlLG4pfSkpfSh0LG4sbyk/e3NlZ21lbnRHcm91cDptZihuZXcgZ2ModC5zZWdtZW50cyxmdW5jdGlvbih0LGUsbixvKXt2YXIgaSxhLHU9e307dHJ5e2Zvcih2YXIgbD1PYmplY3Qoci5fX3ZhbHVlcykobikscz1sLm5leHQoKTshcy5kb25lO3M9bC5uZXh0KCkpe3ZhciBjPXMudmFsdWU7X2YodCxlLGMpJiYhb1t3ZihjKV0mJih1W3dmKGMpXT1uZXcgZ2MoW10se30pKX19Y2F0Y2goZil7aT17ZXJyb3I6Zn19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKGE9bC5yZXR1cm4pJiZhLmNhbGwobCl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30sbyx1KX0odCxuLG8sdC5jaGlsZHJlbikpKSxzbGljZWRTZWdtZW50czpufTp7c2VnbWVudEdyb3VwOnQsc2xpY2VkU2VnbWVudHM6bn19KGUsdSxzLG8pLGw9YS5zZWdtZW50R3JvdXAsYz1hLnNsaWNlZFNlZ21lbnRzO3JldHVybiAwPT09Yy5sZW5ndGgmJmwuaGFzQ2hpbGRyZW4oKT9pLmV4cGFuZENoaWxkcmVuKG4sbyxsKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgZ2ModSx0KX0pKSk6MD09PW8ubGVuZ3RoJiYwPT09Yy5sZW5ndGg/UnUobmV3IGdjKHUse30pKTppLmV4cGFuZFNlZ21lbnQobixsLG8sYyxKcywhMCkucGlwZShCKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IGdjKHUuY29uY2F0KHQuc2VnbWVudHMpLHQuY2hpbGRyZW4pfSkpKX0pKSl9LHQucHJvdG90eXBlLmdldENoaWxkQ29uZmlnPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzO3JldHVybiBlLmNoaWxkcmVuP1J1KG5ldyByYyhlLmNoaWxkcmVuLHQpKTplLmxvYWRDaGlsZHJlbj92b2lkIDAhPT1lLl9sb2FkZWRDb25maWc/UnUoZS5fbG9hZGVkQ29uZmlnKTpmdW5jdGlvbih0LGUsbil7dmFyIHIsbz1lLmNhbkxvYWQ7cmV0dXJuIG8mJjAhPT1vLmxlbmd0aD9XKG8pLnBpcGUoQigoZnVuY3Rpb24ocil7dmFyIG8saT10LmdldChyKTtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCYmc2YodC5jYW5Mb2FkKX0oaSkpbz1pLmNhbkxvYWQoZSxuKTtlbHNle2lmKCFzZihpKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgQ2FuTG9hZCBndWFyZCIpO289aShlLG4pfXJldHVybiBoYyhvKX0pKSkucGlwZSh6dSgpLChyPWZ1bmN0aW9uKHQpe3JldHVybiEwPT09dH0sZnVuY3Rpb24odCl7cmV0dXJuIHQubGlmdChuZXcgaGwocix2b2lkIDAsdCkpfSkpOlJ1KCEwKX0odC5pbmplY3RvcixlLG4pLnBpcGUoUSgoZnVuY3Rpb24obil7cmV0dXJuIG4/ci5jb25maWdMb2FkZXIubG9hZCh0LmluamVjdG9yLGUpLnBpcGUoQigoZnVuY3Rpb24odCl7cmV0dXJuIGUuX2xvYWRlZENvbmZpZz10LHR9KSkpOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZXJyb3IoZWMoIkNhbm5vdCBsb2FkIGNoaWxkcmVuIGJlY2F1c2UgdGhlIGd1YXJkIG9mIHRoZSByb3V0ZSBcInBhdGg6ICciK3QucGF0aCsiJ1wiIHJldHVybmVkIGZhbHNlIikpfSkpfShlKX0pKSk6UnUobmV3IHJjKFtdLHQpKX0sdC5wcm90b3R5cGUubGluZXJhbGl6ZVNlZ21lbnRzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLHI9ZS5yb290Ozspe2lmKG49bi5jb25jYXQoci5zZWdtZW50cyksMD09PXIubnVtYmVyT2ZDaGlsZHJlbilyZXR1cm4gUnUobik7aWYoci5udW1iZXJPZkNoaWxkcmVuPjF8fCFyLmNoaWxkcmVuW0pzXSlyZXR1cm4gZ2YodC5yZWRpcmVjdFRvKTtyPXIuY2hpbGRyZW5bSnNdfX0sdC5wcm90b3R5cGUuYXBwbHlSZWRpcmVjdENvbW1hbmRzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5hcHBseVJlZGlyZWN0Q3JlYXRyZVVybFRyZWUoZSx0aGlzLnVybFNlcmlhbGl6ZXIucGFyc2UoZSksdCxuKX0sdC5wcm90b3R5cGUuYXBwbHlSZWRpcmVjdENyZWF0cmVVcmxUcmVlPWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPXRoaXMuY3JlYXRlU2VnbWVudEdyb3VwKHQsZS5yb290LG4scik7cmV0dXJuIG5ldyBkYyhvLHRoaXMuY3JlYXRlUXVlcnlQYXJhbXMoZS5xdWVyeVBhcmFtcyx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpLGUuZnJhZ21lbnQpfSx0LnByb3RvdHlwZS5jcmVhdGVRdWVyeVBhcmFtcz1mdW5jdGlvbih0LGUpe3ZhciBuPXt9O3JldHVybiBmYyh0LChmdW5jdGlvbih0LHIpe2lmKCJzdHJpbmciPT10eXBlb2YgdCYmdC5zdGFydHNXaXRoKCI6Iikpe3ZhciBvPXQuc3Vic3RyaW5nKDEpO25bcl09ZVtvXX1lbHNlIG5bcl09dH0pKSxufSx0LnByb3RvdHlwZS5jcmVhdGVTZWdtZW50R3JvdXA9ZnVuY3Rpb24odCxlLG4scil7dmFyIG89dGhpcyxpPXRoaXMuY3JlYXRlU2VnbWVudHModCxlLnNlZ21lbnRzLG4sciksYT17fTtyZXR1cm4gZmMoZS5jaGlsZHJlbiwoZnVuY3Rpb24oZSxpKXthW2ldPW8uY3JlYXRlU2VnbWVudEdyb3VwKHQsZSxuLHIpfSkpLG5ldyBnYyhpLGEpfSx0LnByb3RvdHlwZS5jcmVhdGVTZWdtZW50cz1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10aGlzO3JldHVybiBlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGF0aC5zdGFydHNXaXRoKCI6Iik/by5maW5kUG9zUGFyYW0odCxlLHIpOm8uZmluZE9yUmV0dXJuKGUsbil9KSl9LHQucHJvdG90eXBlLmZpbmRQb3NQYXJhbT1mdW5jdGlvbih0LGUsbil7dmFyIHI9bltlLnBhdGguc3Vic3RyaW5nKDEpXTtpZighcil0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRpcmVjdCB0byAnIit0KyInLiBDYW5ub3QgZmluZCAnIitlLnBhdGgrIicuIik7cmV0dXJuIHJ9LHQucHJvdG90eXBlLmZpbmRPclJldHVybj1mdW5jdGlvbih0LGUpe3ZhciBuLG8saT0wO3RyeXtmb3IodmFyIGE9T2JqZWN0KHIuX192YWx1ZXMpKGUpLHU9YS5uZXh0KCk7IXUuZG9uZTt1PWEubmV4dCgpKXt2YXIgbD11LnZhbHVlO2lmKGwucGF0aD09PXQucGF0aClyZXR1cm4gZS5zcGxpY2UoaSksbDtpKyt9fWNhdGNoKHMpe249e2Vycm9yOnN9fWZpbmFsbHl7dHJ5e3UmJiF1LmRvbmUmJihvPWEucmV0dXJuKSYmby5jYWxsKGEpfWZpbmFsbHl7aWYobil0aHJvdyBuLmVycm9yfX1yZXR1cm4gdH0sdH0oKTtmdW5jdGlvbiB5Zih0LGUsbil7aWYoIiI9PT1lLnBhdGgpcmV0dXJuImZ1bGwiPT09ZS5wYXRoTWF0Y2gmJih0Lmhhc0NoaWxkcmVuKCl8fG4ubGVuZ3RoPjApP3ttYXRjaGVkOiExLGNvbnN1bWVkU2VnbWVudHM6W10sbGFzdENoaWxkOjAscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319OnttYXRjaGVkOiEwLGNvbnN1bWVkU2VnbWVudHM6W10sbGFzdENoaWxkOjAscG9zaXRpb25hbFBhcmFtU2VnbWVudHM6e319O3ZhciByPShlLm1hdGNoZXJ8fG5jKShuLHQsZSk7cmV0dXJuIHI/e21hdGNoZWQ6ITAsY29uc3VtZWRTZWdtZW50czpyLmNvbnN1bWVkLGxhc3RDaGlsZDpyLmNvbnN1bWVkLmxlbmd0aCxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czpyLnBvc1BhcmFtc306e21hdGNoZWQ6ITEsY29uc3VtZWRTZWdtZW50czpbXSxsYXN0Q2hpbGQ6MCxwb3NpdGlvbmFsUGFyYW1TZWdtZW50czp7fX19ZnVuY3Rpb24gbWYodCl7aWYoMT09PXQubnVtYmVyT2ZDaGlsZHJlbiYmdC5jaGlsZHJlbltKc10pe3ZhciBlPXQuY2hpbGRyZW5bSnNdO3JldHVybiBuZXcgZ2ModC5zZWdtZW50cy5jb25jYXQoZS5zZWdtZW50cyksZS5jaGlsZHJlbil9cmV0dXJuIHR9ZnVuY3Rpb24gX2YodCxlLG4pe3JldHVybighKHQuaGFzQ2hpbGRyZW4oKXx8ZS5sZW5ndGg+MCl8fCJmdWxsIiE9PW4ucGF0aE1hdGNoKSYmIiI9PT1uLnBhdGgmJnZvaWQgMCE9PW4ucmVkaXJlY3RUb31mdW5jdGlvbiB3Zih0KXtyZXR1cm4gdC5vdXRsZXR8fEpzfXZhciBiZj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXt0aGlzLnBhdGg9dCx0aGlzLnJvdXRlPXRoaXMucGF0aFt0aGlzLnBhdGgubGVuZ3RoLTFdfX0oKSx4Zj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LGUpe3RoaXMuY29tcG9uZW50PXQsdGhpcy5yb3V0ZT1lfX0oKTtmdW5jdGlvbiBDZih0LGUsbil7dmFyIHI9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIG51bGw7Zm9yKHZhciBlPXQucGFyZW50O2U7ZT1lLnBhcmVudCl7dmFyIG49ZS5yb3V0ZUNvbmZpZztpZihuJiZuLl9sb2FkZWRDb25maWcpcmV0dXJuIG4uX2xvYWRlZENvbmZpZ31yZXR1cm4gbnVsbH0oZSk7cmV0dXJuKHI/ci5tb2R1bGUuaW5qZWN0b3I6bikuZ2V0KHQpfWZ1bmN0aW9uIFNmKHQsZSxuLHIsbyl7dm9pZCAwPT09byYmKG89e2NhbkRlYWN0aXZhdGVDaGVja3M6W10sY2FuQWN0aXZhdGVDaGVja3M6W119KTt2YXIgaT1MYyhlKTtyZXR1cm4gdC5jaGlsZHJlbi5mb3JFYWNoKChmdW5jdGlvbih0KXshZnVuY3Rpb24odCxlLG4scixvKXt2b2lkIDA9PT1vJiYobz17Y2FuRGVhY3RpdmF0ZUNoZWNrczpbXSxjYW5BY3RpdmF0ZUNoZWNrczpbXX0pO3ZhciBpPXQudmFsdWUsYT1lP2UudmFsdWU6bnVsbCx1PW4/bi5nZXRDb250ZXh0KHQudmFsdWUub3V0bGV0KTpudWxsO2lmKGEmJmkucm91dGVDb25maWc9PT1hLnJvdXRlQ29uZmlnKXt2YXIgbD1mdW5jdGlvbih0LGUsbil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIG4odCxlKTtzd2l0Y2gobil7Y2FzZSJwYXRoUGFyYW1zQ2hhbmdlIjpyZXR1cm4heWModC51cmwsZS51cmwpO2Nhc2UicGF0aFBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiF5Yyh0LnVybCxlLnVybCl8fCFsYyh0LnF1ZXJ5UGFyYW1zLGUucXVlcnlQYXJhbXMpO2Nhc2UiYWx3YXlzIjpyZXR1cm4hMDtjYXNlInBhcmFtc09yUXVlcnlQYXJhbXNDaGFuZ2UiOnJldHVybiFRYyh0LGUpfHwhbGModC5xdWVyeVBhcmFtcyxlLnF1ZXJ5UGFyYW1zKTtjYXNlInBhcmFtc0NoYW5nZSI6ZGVmYXVsdDpyZXR1cm4hUWModCxlKX19KGEsaSxpLnJvdXRlQ29uZmlnLnJ1bkd1YXJkc0FuZFJlc29sdmVycyk7bD9vLmNhbkFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IGJmKHIpKTooaS5kYXRhPWEuZGF0YSxpLl9yZXNvbHZlZERhdGE9YS5fcmVzb2x2ZWREYXRhKSxTZih0LGUsaS5jb21wb25lbnQ/dT91LmNoaWxkcmVuOm51bGw6bixyLG8pLGwmJm8uY2FuRGVhY3RpdmF0ZUNoZWNrcy5wdXNoKG5ldyB4Zih1JiZ1Lm91dGxldCYmdS5vdXRsZXQuY29tcG9uZW50fHxudWxsLGEpKX1lbHNlIGEmJkVmKGUsdSxvKSxvLmNhbkFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IGJmKHIpKSxTZih0LG51bGwsaS5jb21wb25lbnQ/dT91LmNoaWxkcmVuOm51bGw6bixyLG8pfSh0LGlbdC52YWx1ZS5vdXRsZXRdLG4sci5jb25jYXQoW3QudmFsdWVdKSxvKSxkZWxldGUgaVt0LnZhbHVlLm91dGxldF19KSksZmMoaSwoZnVuY3Rpb24odCxlKXtyZXR1cm4gRWYodCxuLmdldENvbnRleHQoZSksbyl9KSksb31mdW5jdGlvbiBFZih0LGUsbil7dmFyIHI9TGModCksbz10LnZhbHVlO2ZjKHIsKGZ1bmN0aW9uKHQscil7RWYodCxvLmNvbXBvbmVudD9lP2UuY2hpbGRyZW4uZ2V0Q29udGV4dChyKTpudWxsOmUsbil9KSksbi5jYW5EZWFjdGl2YXRlQ2hlY2tzLnB1c2gobmV3IHhmKG8uY29tcG9uZW50JiZlJiZlLm91dGxldCYmZS5vdXRsZXQuaXNBY3RpdmF0ZWQ/ZS5vdXRsZXQuY29tcG9uZW50Om51bGwsbykpfXZhciBPZj1TeW1ib2woIklOSVRJQUxfVkFMVUUiKTtmdW5jdGlvbiBUZigpe3JldHVybiBkbCgoZnVuY3Rpb24odCl7cmV0dXJuIFV1LmFwcGx5KHZvaWQgMCxPYmplY3Qoci5fX3NwcmVhZCkodC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBpcGUobGwoMSksZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT0wO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspdFtlXT1hcmd1bWVudHNbZV07cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPXRbdC5sZW5ndGgtMV07QShuKT90LnBvcCgpOm49bnVsbDt2YXIgcj10Lmxlbmd0aDtyZXR1cm4geWwoMSE9PXJ8fG4/cj4wP3EodCxuKTpBdShuKTpJdSh0WzBdKSxlKX19KE9mKSl9KSkpKS5waXBlKG1sKChmdW5jdGlvbih0LGUpe3ZhciBuPSExO3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24odCxyLG8pe2lmKHQhPT1PZilyZXR1cm4gdDtpZihyPT09T2YmJihuPSEwKSwhbil7aWYoITE9PT1yKXJldHVybiByO2lmKG89PT1lLmxlbmd0aC0xfHxjZihyKSlyZXR1cm4gcn1yZXR1cm4gdH0pLHQpfSksT2YpLEZ1KChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PU9mfSkpLEIoKGZ1bmN0aW9uKHQpe3JldHVybiBjZih0KT90OiEwPT09dH0pKSxsbCgxKSl9KSl9ZnVuY3Rpb24gUGYodCxlKXtyZXR1cm4gbnVsbCE9PXQmJmUmJmUobmV3IFdzKHQpKSxSdSghMCl9ZnVuY3Rpb24ga2YodCxlKXtyZXR1cm4gbnVsbCE9PXQmJmUmJmUobmV3IEdzKHQpKSxSdSghMCl9ZnVuY3Rpb24gQWYodCxlLG4pe3ZhciByPWUucm91dGVDb25maWc/ZS5yb3V0ZUNvbmZpZy5jYW5BY3RpdmF0ZTpudWxsO3JldHVybiByJiYwIT09ci5sZW5ndGg/UnUoci5tYXAoKGZ1bmN0aW9uKHIpe3JldHVybiBIdSgoZnVuY3Rpb24oKXt2YXIgbyxpPUNmKHIsZSxuKTtpZihmdW5jdGlvbih0KQ=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?2?2",
"type": "binary",
"value": "base64:e3JldHVybiB0JiZzZih0LmNhbkFjdGl2YXRlKX0oaSkpbz1oYyhpLmNhbkFjdGl2YXRlKGUsdCkpO2Vsc2V7aWYoIXNmKGkpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDYW5BY3RpdmF0ZSBndWFyZCIpO289aGMoaShlLHQpKX1yZXR1cm4gby5waXBlKGZsKCkpfSkpfSkpKS5waXBlKFRmKCkpOlJ1KCEwKX1mdW5jdGlvbiBJZih0LGUsbil7dmFyIHI9ZVtlLmxlbmd0aC0xXSxvPWUuc2xpY2UoMCxlLmxlbmd0aC0xKS5yZXZlcnNlKCkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGU9dC5yb3V0ZUNvbmZpZz90LnJvdXRlQ29uZmlnLmNhbkFjdGl2YXRlQ2hpbGQ6bnVsbDtyZXR1cm4gZSYmMCE9PWUubGVuZ3RoP3tub2RlOnQsZ3VhcmRzOmV9Om51bGx9KHQpfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPT10fSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIEh1KChmdW5jdGlvbigpe3JldHVybiBSdShlLmd1YXJkcy5tYXAoKGZ1bmN0aW9uKG8pe3ZhciBpLGE9Q2YobyxlLm5vZGUsbik7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQmJnNmKHQuY2FuQWN0aXZhdGVDaGlsZCl9KGEpKWk9aGMoYS5jYW5BY3RpdmF0ZUNoaWxkKHIsdCkpO2Vsc2V7aWYoIXNmKGEpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBDYW5BY3RpdmF0ZUNoaWxkIGd1YXJkIik7aT1oYyhhKHIsdCkpfXJldHVybiBpLnBpcGUoZmwoKSl9KSkpLnBpcGUoVGYoKSl9KSl9KSk7cmV0dXJuIFJ1KG8pLnBpcGUoVGYoKSl9dmFyIFJmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxNZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGkpe3RoaXMucm9vdENvbXBvbmVudFR5cGU9dCx0aGlzLmNvbmZpZz1lLHRoaXMudXJsVHJlZT1uLHRoaXMudXJsPXIsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PW8sdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uPWl9cmV0dXJuIHQucHJvdG90eXBlLnJlY29nbml6ZT1mdW5jdGlvbigpe3RyeXt2YXIgdD1EZih0aGlzLnVybFRyZWUucm9vdCxbXSxbXSx0aGlzLmNvbmZpZyx0aGlzLnJlbGF0aXZlTGlua1Jlc29sdXRpb24pLnNlZ21lbnRHcm91cCxlPXRoaXMucHJvY2Vzc1NlZ21lbnRHcm91cCh0aGlzLmNvbmZpZyx0LEpzKSxuPW5ldyBCYyhbXSxPYmplY3QuZnJlZXplKHt9KSxPYmplY3QuZnJlZXplKE9iamVjdChyLl9fYXNzaWduKSh7fSx0aGlzLnVybFRyZWUucXVlcnlQYXJhbXMpKSx0aGlzLnVybFRyZWUuZnJhZ21lbnQse30sSnMsdGhpcy5yb290Q29tcG9uZW50VHlwZSxudWxsLHRoaXMudXJsVHJlZS5yb290LC0xLHt9KSxvPW5ldyBVYyhuLGUpLGk9bmV3IFpjKHRoaXMudXJsLG8pO3JldHVybiB0aGlzLmluaGVyaXRQYXJhbXNBbmREYXRhKGkuX3Jvb3QpLFJ1KGkpfWNhdGNoKGEpe3JldHVybiBuZXcgeCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuZXJyb3IoYSl9KSl9fSx0LnByb3RvdHlwZS5pbmhlcml0UGFyYW1zQW5kRGF0YT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dC52YWx1ZSxyPUZjKG4sdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5KTtuLnBhcmFtcz1PYmplY3QuZnJlZXplKHIucGFyYW1zKSxuLmRhdGE9T2JqZWN0LmZyZWV6ZShyLmRhdGEpLHQuY2hpbGRyZW4uZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuaW5oZXJpdFBhcmFtc0FuZERhdGEodCl9KSl9LHQucHJvdG90eXBlLnByb2Nlc3NTZWdtZW50R3JvdXA9ZnVuY3Rpb24odCxlLG4pe3JldHVybiAwPT09ZS5zZWdtZW50cy5sZW5ndGgmJmUuaGFzQ2hpbGRyZW4oKT90aGlzLnByb2Nlc3NDaGlsZHJlbih0LGUpOnRoaXMucHJvY2Vzc1NlZ21lbnQodCxlLGUuc2VnbWVudHMsbil9LHQucHJvdG90eXBlLnByb2Nlc3NDaGlsZHJlbj1mdW5jdGlvbih0LGUpe3ZhciBuLHI9dGhpcyxvPW1jKGUsKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHIucHJvY2Vzc1NlZ21lbnRHcm91cCh0LGUsbil9KSk7cmV0dXJuIG49e30sby5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uW3QudmFsdWUub3V0bGV0XTtpZihlKXt2YXIgcj1lLnVybC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKCl9KSkuam9pbigiLyIpLG89dC52YWx1ZS51cmwubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC50b1N0cmluZygpfSkpLmpvaW4oIi8iKTt0aHJvdyBuZXcgRXJyb3IoIlR3byBzZWdtZW50cyBjYW5ub3QgaGF2ZSB0aGUgc2FtZSBvdXRsZXQgbmFtZTogJyIrcisiJyBhbmQgJyIrbysiJy4iKX1uW3QudmFsdWUub3V0bGV0XT10LnZhbHVlfSkpLG8uc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC52YWx1ZS5vdXRsZXQ9PT1Kcz8tMTplLnZhbHVlLm91dGxldD09PUpzPzE6dC52YWx1ZS5vdXRsZXQubG9jYWxlQ29tcGFyZShlLnZhbHVlLm91dGxldCl9KSksb30sdC5wcm90b3R5cGUucHJvY2Vzc1NlZ21lbnQ9ZnVuY3Rpb24odCxlLG4sbyl7dmFyIGksYTt0cnl7Zm9yKHZhciB1PU9iamVjdChyLl9fdmFsdWVzKSh0KSxsPXUubmV4dCgpOyFsLmRvbmU7bD11Lm5leHQoKSl7dmFyIHM9bC52YWx1ZTt0cnl7cmV0dXJuIHRoaXMucHJvY2Vzc1NlZ21lbnRBZ2FpbnN0Um91dGUocyxlLG4sbyl9Y2F0Y2goYyl7aWYoIShjIGluc3RhbmNlb2YgUmYpKXRocm93IGN9fX1jYXRjaChmKXtpPXtlcnJvcjpmfX1maW5hbGx5e3RyeXtsJiYhbC5kb25lJiYoYT11LnJldHVybikmJmEuY2FsbCh1KX1maW5hbGx5e2lmKGkpdGhyb3cgaS5lcnJvcn19aWYodGhpcy5ub0xlZnRvdmVyc0luVXJsKGUsbixvKSlyZXR1cm5bXTt0aHJvdyBuZXcgUmZ9LHQucHJvdG90eXBlLm5vTGVmdG92ZXJzSW5Vcmw9ZnVuY3Rpb24odCxlLG4pe3JldHVybiAwPT09ZS5sZW5ndGgmJiF0LmNoaWxkcmVuW25dfSx0LnByb3RvdHlwZS5wcm9jZXNzU2VnbWVudEFnYWluc3RSb3V0ZT1mdW5jdGlvbih0LGUsbixvKXtpZih0LnJlZGlyZWN0VG8pdGhyb3cgbmV3IFJmO2lmKCh0Lm91dGxldHx8SnMpIT09byl0aHJvdyBuZXcgUmY7dmFyIGksYT1bXSx1PVtdO2lmKCIqKiI9PT10LnBhdGgpe3ZhciBsPW4ubGVuZ3RoPjA/Y2MobikucGFyYW1ldGVyczp7fTtpPW5ldyBCYyhuLGwsT2JqZWN0LmZyZWV6ZShPYmplY3Qoci5fX2Fzc2lnbikoe30sdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSksdGhpcy51cmxUcmVlLmZyYWdtZW50LFZmKHQpLG8sdC5jb21wb25lbnQsdCxqZihlKSxOZihlKStuLmxlbmd0aCxIZih0KSl9ZWxzZXt2YXIgcz1mdW5jdGlvbih0LGUsbil7aWYoIiI9PT1lLnBhdGgpe2lmKCJmdWxsIj09PWUucGF0aE1hdGNoJiYodC5oYXNDaGlsZHJlbigpfHxuLmxlbmd0aD4wKSl0aHJvdyBuZXcgUmY7cmV0dXJue2NvbnN1bWVkU2VnbWVudHM6W10sbGFzdENoaWxkOjAscGFyYW1ldGVyczp7fX19dmFyIG89KGUubWF0Y2hlcnx8bmMpKG4sdCxlKTtpZighbyl0aHJvdyBuZXcgUmY7dmFyIGk9e307ZmMoby5wb3NQYXJhbXMsKGZ1bmN0aW9uKHQsZSl7aVtlXT10LnBhdGh9KSk7dmFyIGE9by5jb25zdW1lZC5sZW5ndGg+MD9PYmplY3Qoci5fX2Fzc2lnbikoe30saSxvLmNvbnN1bWVkW28uY29uc3VtZWQubGVuZ3RoLTFdLnBhcmFtZXRlcnMpOmk7cmV0dXJue2NvbnN1bWVkU2VnbWVudHM6by5jb25zdW1lZCxsYXN0Q2hpbGQ6by5jb25zdW1lZC5sZW5ndGgscGFyYW1ldGVyczphfX0oZSx0LG4pO2E9cy5jb25zdW1lZFNlZ21lbnRzLHU9bi5zbGljZShzLmxhc3RDaGlsZCksaT1uZXcgQmMoYSxzLnBhcmFtZXRlcnMsT2JqZWN0LmZyZWV6ZShPYmplY3Qoci5fX2Fzc2lnbikoe30sdGhpcy51cmxUcmVlLnF1ZXJ5UGFyYW1zKSksdGhpcy51cmxUcmVlLmZyYWdtZW50LFZmKHQpLG8sdC5jb21wb25lbnQsdCxqZihlKSxOZihlKSthLmxlbmd0aCxIZih0KSl9dmFyIGM9ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hpbGRyZW4/dC5jaGlsZHJlbjp0LmxvYWRDaGlsZHJlbj90Ll9sb2FkZWRDb25maWcucm91dGVzOltdfSh0KSxmPURmKGUsYSx1LGMsdGhpcy5yZWxhdGl2ZUxpbmtSZXNvbHV0aW9uKSxoPWYuc2VnbWVudEdyb3VwLHA9Zi5zbGljZWRTZWdtZW50cztpZigwPT09cC5sZW5ndGgmJmguaGFzQ2hpbGRyZW4oKSl7dmFyIGQ9dGhpcy5wcm9jZXNzQ2hpbGRyZW4oYyxoKTtyZXR1cm5bbmV3IFVjKGksZCldfWlmKDA9PT1jLmxlbmd0aCYmMD09PXAubGVuZ3RoKXJldHVybltuZXcgVWMoaSxbXSldO3ZhciBnPXRoaXMucHJvY2Vzc1NlZ21lbnQoYyxoLHAsSnMpO3JldHVybltuZXcgVWMoaSxnKV19LHR9KCk7ZnVuY3Rpb24gamYodCl7Zm9yKHZhciBlPXQ7ZS5fc291cmNlU2VnbWVudDspZT1lLl9zb3VyY2VTZWdtZW50O3JldHVybiBlfWZ1bmN0aW9uIE5mKHQpe2Zvcih2YXIgZT10LG49ZS5fc2VnbWVudEluZGV4U2hpZnQ/ZS5fc2VnbWVudEluZGV4U2hpZnQ6MDtlLl9zb3VyY2VTZWdtZW50OyluKz0oZT1lLl9zb3VyY2VTZWdtZW50KS5fc2VnbWVudEluZGV4U2hpZnQ/ZS5fc2VnbWVudEluZGV4U2hpZnQ6MDtyZXR1cm4gbi0xfWZ1bmN0aW9uIERmKHQsZSxuLG8saSl7aWYobi5sZW5ndGg+MCYmZnVuY3Rpb24odCxlLG4pe3JldHVybiBuLnNvbWUoKGZ1bmN0aW9uKG4pe3JldHVybiBVZih0LGUsbikmJkxmKG4pIT09SnN9KSl9KHQsbixvKSl7dmFyIGE9bmV3IGdjKGUsZnVuY3Rpb24odCxlLG4sbyl7dmFyIGksYSx1PXt9O3VbSnNdPW8sby5fc291cmNlU2VnbWVudD10LG8uX3NlZ21lbnRJbmRleFNoaWZ0PWUubGVuZ3RoO3RyeXtmb3IodmFyIGw9T2JqZWN0KHIuX192YWx1ZXMpKG4pLHM9bC5uZXh0KCk7IXMuZG9uZTtzPWwubmV4dCgpKXt2YXIgYz1zLnZhbHVlO2lmKCIiPT09Yy5wYXRoJiZMZihjKSE9PUpzKXt2YXIgZj1uZXcgZ2MoW10se30pO2YuX3NvdXJjZVNlZ21lbnQ9dCxmLl9zZWdtZW50SW5kZXhTaGlmdD1lLmxlbmd0aCx1W0xmKGMpXT1mfX19Y2F0Y2goaCl7aT17ZXJyb3I6aH19ZmluYWxseXt0cnl7cyYmIXMuZG9uZSYmKGE9bC5yZXR1cm4pJiZhLmNhbGwobCl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiB1fSh0LGUsbyxuZXcgZ2Mobix0LmNoaWxkcmVuKSkpO3JldHVybiBhLl9zb3VyY2VTZWdtZW50PXQsYS5fc2VnbWVudEluZGV4U2hpZnQ9ZS5sZW5ndGgse3NlZ21lbnRHcm91cDphLHNsaWNlZFNlZ21lbnRzOltdfX1pZigwPT09bi5sZW5ndGgmJmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbi5zb21lKChmdW5jdGlvbihuKXtyZXR1cm4gVWYodCxlLG4pfSkpfSh0LG4sbykpe3ZhciB1PW5ldyBnYyh0LnNlZ21lbnRzLGZ1bmN0aW9uKHQsZSxuLG8saSxhKXt2YXIgdSxsLHM9e307dHJ5e2Zvcih2YXIgYz1PYmplY3Qoci5fX3ZhbHVlcykobyksZj1jLm5leHQoKTshZi5kb25lO2Y9Yy5uZXh0KCkpe3ZhciBoPWYudmFsdWU7aWYoVWYodCxuLGgpJiYhaVtMZihoKV0pe3ZhciBwPW5ldyBnYyhbXSx7fSk7cC5fc291cmNlU2VnbWVudD10LHAuX3NlZ21lbnRJbmRleFNoaWZ0PSJsZWdhY3kiPT09YT90LnNlZ21lbnRzLmxlbmd0aDplLmxlbmd0aCxzW0xmKGgpXT1wfX19Y2F0Y2goZCl7dT17ZXJyb3I6ZH19ZmluYWxseXt0cnl7ZiYmIWYuZG9uZSYmKGw9Yy5yZXR1cm4pJiZsLmNhbGwoYyl9ZmluYWxseXtpZih1KXRocm93IHUuZXJyb3J9fXJldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30saSxzKX0odCxlLG4sbyx0LmNoaWxkcmVuLGkpKTtyZXR1cm4gdS5fc291cmNlU2VnbWVudD10LHUuX3NlZ21lbnRJbmRleFNoaWZ0PWUubGVuZ3RoLHtzZWdtZW50R3JvdXA6dSxzbGljZWRTZWdtZW50czpufX12YXIgbD1uZXcgZ2ModC5zZWdtZW50cyx0LmNoaWxkcmVuKTtyZXR1cm4gbC5fc291cmNlU2VnbWVudD10LGwuX3NlZ21lbnRJbmRleFNoaWZ0PWUubGVuZ3RoLHtzZWdtZW50R3JvdXA6bCxzbGljZWRTZWdtZW50czpufX1mdW5jdGlvbiBVZih0LGUsbil7cmV0dXJuKCEodC5oYXNDaGlsZHJlbigpfHxlLmxlbmd0aD4wKXx8ImZ1bGwiIT09bi5wYXRoTWF0Y2gpJiYiIj09PW4ucGF0aCYmdm9pZCAwPT09bi5yZWRpcmVjdFRvfWZ1bmN0aW9uIExmKHQpe3JldHVybiB0Lm91dGxldHx8SnN9ZnVuY3Rpb24gVmYodCl7cmV0dXJuIHQuZGF0YXx8e319ZnVuY3Rpb24gSGYodCl7cmV0dXJuIHQucmVzb2x2ZXx8e319ZnVuY3Rpb24gemYodCxlLG4scil7dmFyIG89Q2YodCxlLHIpO3JldHVybiBoYyhvLnJlc29sdmU/by5yZXNvbHZlKGUsbik6byhlLG4pKX1mdW5jdGlvbiBGZih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucGlwZShkbCgoZnVuY3Rpb24oZSl7dmFyIG49dChlKTtyZXR1cm4gbj9XKG4pLnBpcGUoQigoZnVuY3Rpb24oKXtyZXR1cm4gZX0pKSk6VyhbZV0pfSkpKX19dmFyIEJmPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7fX0oKSxaZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLnNob3VsZERldGFjaD1mdW5jdGlvbih0KXtyZXR1cm4hMX0sdC5wcm90b3R5cGUuc3RvcmU9ZnVuY3Rpb24odCxlKXt9LHQucHJvdG90eXBlLnNob3VsZEF0dGFjaD1mdW5jdGlvbih0KXtyZXR1cm4hMX0sdC5wcm90b3R5cGUucmV0cmlldmU9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGx9LHQucHJvdG90eXBlLnNob3VsZFJldXNlUm91dGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5yb3V0ZUNvbmZpZz09PWUucm91dGVDb25maWd9LHR9KCksR2Y9bmV3IFR0KCJST1VURVMiKSxxZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scil7dGhpcy5sb2FkZXI9dCx0aGlzLmNvbXBpbGVyPWUsdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyPW4sdGhpcy5vbkxvYWRFbmRMaXN0ZW5lcj1yfXJldHVybiB0LnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5vbkxvYWRTdGFydExpc3RlbmVyJiZ0aGlzLm9uTG9hZFN0YXJ0TGlzdGVuZXIoZSksdGhpcy5sb2FkTW9kdWxlRmFjdG9yeShlLmxvYWRDaGlsZHJlbikucGlwZShCKChmdW5jdGlvbihyKXtuLm9uTG9hZEVuZExpc3RlbmVyJiZuLm9uTG9hZEVuZExpc3RlbmVyKGUpO3ZhciBvPXIuY3JlYXRlKHQpO3JldHVybiBuZXcgcmMoc2Moby5pbmplY3Rvci5nZXQoR2YpKS5tYXAodWMpLG8pfSkpKX0sdC5wcm90b3R5cGUubG9hZE1vZHVsZUZhY3Rvcnk9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/Vyh0aGlzLmxvYWRlci5sb2FkKHQpKTpoYyh0KCkpLnBpcGUoUSgoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB6dD9SdSh0KTpXKGUuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKHQpKX0pKSl9LHR9KCksV2Y9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXt9fSgpLFFmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuc2hvdWxkUHJvY2Vzc1VybD1mdW5jdGlvbih0KXtyZXR1cm4hMH0sdC5wcm90b3R5cGUuZXh0cmFjdD1mdW5jdGlvbih0KXtyZXR1cm4gdH0sdC5wcm90b3R5cGUubWVyZ2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0sdH0oKTtmdW5jdGlvbiBLZih0KXt0aHJvdyB0fWZ1bmN0aW9uIFlmKHQsZSxuKXtyZXR1cm4gZS5wYXJzZSgiLyIpfWZ1bmN0aW9uIEpmKHQsZSl7cmV0dXJuIFJ1KG51bGwpfXZhciAkZj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4scixvLGksYSx1KXt2YXIgbD10aGlzO3RoaXMucm9vdENvbXBvbmVudFR5cGU9dCx0aGlzLnVybFNlcmlhbGl6ZXI9ZSx0aGlzLnJvb3RDb250ZXh0cz1uLHRoaXMubG9jYXRpb249cix0aGlzLmNvbmZpZz11LHRoaXMubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uPW51bGwsdGhpcy5jdXJyZW50TmF2aWdhdGlvbj1udWxsLHRoaXMubmF2aWdhdGlvbklkPTAsdGhpcy5pc05nWm9uZUVuYWJsZWQ9ITEsdGhpcy5ldmVudHM9bmV3IFAsdGhpcy5lcnJvckhhbmRsZXI9S2YsdGhpcy5tYWxmb3JtZWRVcmlFcnJvckhhbmRsZXI9WWYsdGhpcy5uYXZpZ2F0ZWQ9ITEsdGhpcy5sYXN0U3VjY2Vzc2Z1bElkPS0xLHRoaXMuaG9va3M9e2JlZm9yZVByZWFjdGl2YXRpb246SmYsYWZ0ZXJQcmVhY3RpdmF0aW9uOkpmfSx0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3k9bmV3IFFmLHRoaXMucm91dGVSZXVzZVN0cmF0ZWd5PW5ldyBaZix0aGlzLm9uU2FtZVVybE5hdmlnYXRpb249Imlnbm9yZSIsdGhpcy5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5PSJlbXB0eU9ubHkiLHRoaXMudXJsVXBkYXRlU3RyYXRlZ3k9ImRlZmVycmVkIix0aGlzLnJlbGF0aXZlTGlua1Jlc29sdXRpb249ImxlZ2FjeSIsdGhpcy5uZ01vZHVsZT1vLmdldChIdCksdGhpcy5jb25zb2xlPW8uZ2V0KFVvKTt2YXIgcz1vLmdldChuaSk7dGhpcy5pc05nWm9uZUVuYWJsZWQ9cyBpbnN0YW5jZW9mIG5pLHRoaXMucmVzZXRDb25maWcodSksdGhpcy5jdXJyZW50VXJsVHJlZT1uZXcgZGMobmV3IGdjKFtdLHt9KSx7fSxudWxsKSx0aGlzLnJhd1VybFRyZWU9dGhpcy5jdXJyZW50VXJsVHJlZSx0aGlzLmJyb3dzZXJVcmxUcmVlPXRoaXMuY3VycmVudFVybFRyZWUsdGhpcy5jb25maWdMb2FkZXI9bmV3IHFmKGksYSwoZnVuY3Rpb24odCl7cmV0dXJuIGwudHJpZ2dlckV2ZW50KG5ldyBCcyh0KSl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGwudHJpZ2dlckV2ZW50KG5ldyBacyh0KSl9KSksdGhpcy5yb3V0ZXJTdGF0ZT1IYyh0aGlzLmN1cnJlbnRVcmxUcmVlLHRoaXMucm9vdENvbXBvbmVudFR5cGUpLHRoaXMudHJhbnNpdGlvbnM9bmV3IE11KHtpZDowLGN1cnJlbnRVcmxUcmVlOnRoaXMuY3VycmVudFVybFRyZWUsY3VycmVudFJhd1VybDp0aGlzLmN1cnJlbnRVcmxUcmVlLGV4dHJhY3RlZFVybDp0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0aGlzLmN1cnJlbnRVcmxUcmVlKSx1cmxBZnRlclJlZGlyZWN0czp0aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0aGlzLmN1cnJlbnRVcmxUcmVlKSxyYXdVcmw6dGhpcy5jdXJyZW50VXJsVHJlZSxleHRyYXM6e30scmVzb2x2ZTpudWxsLHJlamVjdDpudWxsLHByb21pc2U6UHJvbWlzZS5yZXNvbHZlKCEwKSxzb3VyY2U6ImltcGVyYXRpdmUiLHJlc3RvcmVkU3RhdGU6bnVsbCxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCx0YXJnZXRTbmFwc2hvdDpudWxsLGN1cnJlbnRSb3V0ZXJTdGF0ZTp0aGlzLnJvdXRlclN0YXRlLHRhcmdldFJvdXRlclN0YXRlOm51bGwsZ3VhcmRzOntjYW5BY3RpdmF0ZUNoZWNrczpbXSxjYW5EZWFjdGl2YXRlQ2hlY2tzOltdfSxndWFyZHNSZXN1bHQ6bnVsbH0pLHRoaXMubmF2aWdhdGlvbnM9dGhpcy5zZXR1cE5hdmlnYXRpb25zKHRoaXMudHJhbnNpdGlvbnMpLHRoaXMucHJvY2Vzc05hdmlnYXRpb25zKCl9cmV0dXJuIHQucHJvdG90eXBlLnNldHVwTmF2aWdhdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPXRoaXMuZXZlbnRzO3JldHVybiB0LnBpcGUoRnUoKGZ1bmN0aW9uKHQpe3JldHVybiAwIT09dC5pZH0pKSxCKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIuX19hc3NpZ24pKHt9LHQse2V4dHJhY3RlZFVybDplLnVybEhhbmRsaW5nU3RyYXRlZ3kuZXh0cmFjdCh0LnJhd1VybCl9KX0pKSxkbCgoZnVuY3Rpb24odCl7dmFyIG8saSxhLHUsbD0hMSxzPSExO3JldHVybiBSdSh0KS5waXBlKFl1KChmdW5jdGlvbih0KXtlLmN1cnJlbnROYXZpZ2F0aW9uPXtpZDp0LmlkLGluaXRpYWxVcmw6dC5jdXJyZW50UmF3VXJsLGV4dHJhY3RlZFVybDp0LmV4dHJhY3RlZFVybCx0cmlnZ2VyOnQuc291cmNlLGV4dHJhczp0LmV4dHJhcyxwcmV2aW91c05hdmlnYXRpb246ZS5sYXN0U3VjY2Vzc2Z1bE5hdmlnYXRpb24/T2JqZWN0KHIuX19hc3NpZ24pKHt9LGUubGFzdFN1Y2Nlc3NmdWxOYXZpZ2F0aW9uLHtwcmV2aW91c05hdmlnYXRpb246bnVsbH0pOm51bGx9fSkpLGRsKChmdW5jdGlvbih0KXt2YXIgbyxpLGEsdSxsPSFlLm5hdmlnYXRlZHx8dC5leHRyYWN0ZWRVcmwudG9TdHJpbmcoKSE9PWUuYnJvd3NlclVybFRyZWUudG9TdHJpbmcoKTtpZigoInJlbG9hZCI9PT1lLm9uU2FtZVVybE5hdmlnYXRpb258fGwpJiZlLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybCh0LnJhd1VybCkpcmV0dXJuIFJ1KHQpLnBpcGUoZGwoKGZ1bmN0aW9uKHQpe3ZhciByPWUudHJhbnNpdGlvbnMuZ2V0VmFsdWUoKTtyZXR1cm4gbi5uZXh0KG5ldyBqcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSx0LnNvdXJjZSx0LnJlc3RvcmVkU3RhdGUpKSxyIT09ZS50cmFuc2l0aW9ucy5nZXRWYWx1ZSgpP2t1Olt0XX0pKSxkbCgoZnVuY3Rpb24odCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0KX0pKSwobz1lLm5nTW9kdWxlLmluamVjdG9yLGk9ZS5jb25maWdMb2FkZXIsYT1lLnVybFNlcmlhbGl6ZXIsdT1lLmNvbmZpZyxmdW5jdGlvbih0KXtyZXR1cm4gdC5waXBlKGRsKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvKXtyZXR1cm4gbmV3IHZmKHQsZSxuLHIsbykuYXBwbHkoKX0obyxpLGEsdC5leHRyYWN0ZWRVcmwsdSkucGlwZShCKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0KHIuX19hc3NpZ24pKHt9LHQse3VybEFmdGVyUmVkaXJlY3RzOmV9KX0pKSl9KSkpfSksWXUoKGZ1bmN0aW9uKHQpe2UuY3VycmVudE5hdmlnYXRpb249T2JqZWN0KHIuX19hc3NpZ24pKHt9LGUuY3VycmVudE5hdmlnYXRpb24se2ZpbmFsVXJsOnQudXJsQWZ0ZXJSZWRpcmVjdHN9KX0pKSxmdW5jdGlvbih0LG4sbyxpLGEpe3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gby5waXBlKFEoKGZ1bmN0aW9uKG8pe3JldHVybiBmdW5jdGlvbih0LGUsbixyLG8saSl7cmV0dXJuIHZvaWQgMD09PW8mJihvPSJlbXB0eU9ubHkiKSx2b2lkIDA9PT1pJiYoaT0ibGVnYWN5IiksbmV3IE1mKHQsZSxuLHIsbyxpKS5yZWNvZ25pemUoKX0odCxuLG8udXJsQWZ0ZXJSZWRpcmVjdHMsKHU9by51cmxBZnRlclJlZGlyZWN0cyxlLnNlcmlhbGl6ZVVybCh1KSksaSxhKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30sbyx7dGFyZ2V0U25hcHNob3Q6dH0pfSkpKTt2YXIgdX0pKSl9fShlLnJvb3RDb21wb25lbnRUeXBlLGUuY29uZmlnLDAsZS5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LGUucmVsYXRpdmVMaW5rUmVzb2x1dGlvbiksWXUoKGZ1bmN0aW9uKHQpeyJlYWdlciI9PT1lLnVybFVwZGF0ZVN0cmF0ZWd5JiYodC5leHRyYXMuc2tpcExvY2F0aW9uQ2hhbmdlfHxlLnNldEJyb3dzZXJVcmwodC51cmxBZnRlclJlZGlyZWN0cywhIXQuZXh0cmFzLnJlcGxhY2VVcmwsdC5pZCx0LmV4dHJhcy5zdGF0ZSksZS5icm93c2VyVXJsVHJlZT10LnVybEFmdGVyUmVkaXJlY3RzKX0pKSxZdSgoZnVuY3Rpb24odCl7dmFyIHI9bmV3IExzKHQuaWQsZS5zZXJpYWxpemVVcmwodC5leHRyYWN0ZWRVcmwpLGUuc2VyaWFsaXplVXJsKHQudXJsQWZ0ZXJSZWRpcmVjdHMpLHQudGFyZ2V0U25hcHNob3QpO24ubmV4dChyKX0pKSk7aWYobCYmZS5yYXdVcmxUcmVlJiZlLnVybEhhbmRsaW5nU3RyYXRlZ3kuc2hvdWxkUHJvY2Vzc1VybChlLnJhd1VybFRyZWUpKXt2YXIgcz10LmV4dHJhY3RlZFVybCxjPXQuc291cmNlLGY9dC5yZXN0b3JlZFN0YXRlLGg9dC5leHRyYXMscD1uZXcganModC5pZCxlLnNlcmlhbGl6ZVVybChzKSxjLGYpO24ubmV4dChwKTt2YXIgZD1IYyhzLGUucm9vdENvbXBvbmVudFR5cGUpLnNuYXBzaG90O3JldHVybiBSdShPYmplY3Qoci5fX2Fzc2lnbikoe30sdCx7dGFyZ2V0U25hcHNob3Q6ZCx1cmxBZnRlclJlZGlyZWN0czpzLGV4dHJhczpPYmplY3Qoci5fX2Fzc2lnbikoe30saCx7c2tpcExvY2F0aW9uQ2hhbmdlOiExLHJlcGxhY2VVcmw6ITF9KX0pKX1yZXR1cm4gZS5yYXdVcmxUcmVlPXQucmF3VXJsLGUuYnJvd3NlclVybFRyZWU9dC51cmxBZnRlclJlZGlyZWN0cyx0LnJlc29sdmUobnVsbCksa3V9KSksRmYoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuZXh0cmFzO3JldHVybiBlLmhvb2tzLmJlZm9yZVByZWFjdGl2YXRpb24odC50YXJnZXRTbmFwc2hvdCx7bmF2aWdhdGlvbklkOnQuaWQsYXBwbGllZFVybFRyZWU6dC5leHRyYWN0ZWRVcmwscmF3VXJsVHJlZTp0LnJhd1VybCxza2lwTG9jYXRpb25DaGFuZ2U6ISFuLnNraXBMb2NhdGlvbkNoYW5nZSxyZXBsYWNlVXJsOiEhbi5yZXBsYWNlVXJsfSl9KSksWXUoKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBWcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSxlLnNlcmlhbGl6ZVVybCh0LnVybEFmdGVyUmVkaXJlY3RzKSx0LnRhcmdldFNuYXBzaG90KTtlLnRyaWdnZXJFdmVudChuKX0pKSxCKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIuX19hc3NpZ24pKHt9LHQse2d1YXJkczoobj10LnRhcmdldFNuYXBzaG90LG89dC5jdXJyZW50U25hcHNob3QsaT1lLnJvb3RDb250ZXh0cyxhPW4uX3Jvb3QsU2YoYSxvP28uX3Jvb3Q6bnVsbCxpLFthLnZhbHVlXSkpfSk7dmFyIG4sbyxpLGF9KSksZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG4ucGlwZShRKChmdW5jdGlvbihuKXt2YXIgbz1uLnRhcmdldFNuYXBzaG90LGk9bi5jdXJyZW50U25hcHNob3QsYT1uLmd1YXJkcyx1PWEuY2FuQWN0aXZhdGVDaGVja3MsbD1hLmNhbkRlYWN0aXZhdGVDaGVja3M7cmV0dXJuIDA9PT1sLmxlbmd0aCYmMD09PXUubGVuZ3RoP1J1KE9iamVjdChyLl9fYXNzaWduKSh7fSxuLHtndWFyZHNSZXN1bHQ6ITB9KSk6ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIFcodCkucGlwZShRKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4scixvKXt2YXIgaT1lJiZlLnJvdXRlQ29uZmlnP2Uucm91dGVDb25maWcuY2FuRGVhY3RpdmF0ZTpudWxsO3JldHVybiBpJiYwIT09aS5sZW5ndGg/UnUoaS5tYXAoKGZ1bmN0aW9uKGkpe3ZhciBhLHU9Q2YoaSxlLG8pO2lmKGZ1bmN0aW9uKHQpe3JldHVybiB0JiZzZih0LmNhbkRlYWN0aXZhdGUpfSh1KSlhPWhjKHUuY2FuRGVhY3RpdmF0ZSh0LGUsbixyKSk7ZWxzZXtpZighc2YodSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIENhbkRlYWN0aXZhdGUgZ3VhcmQiKTthPWhjKHUodCxlLG4scikpfXJldHVybiBhLnBpcGUoZmwoKSl9KSkpLnBpcGUoVGYoKSk6UnUoITApfSh0LmNvbXBvbmVudCx0LnJvdXRlLG4sZSxyKX0pKSxmbCgoZnVuY3Rpb24odCl7cmV0dXJuITAhPT10fSksITApKX0obCxvLGksdCkucGlwZShRKChmdW5jdGlvbihuKXtyZXR1cm4gbiYmImJvb2xlYW4iPT10eXBlb2Ygbj9mdW5jdGlvbih0LGUsbixyKXtyZXR1cm4gVyhlKS5waXBlKGJsKChmdW5jdGlvbihlKXtyZXR1cm4gVyhba2YoZS5yb3V0ZS5wYXJlbnQsciksUGYoZS5yb3V0ZSxyKSxJZih0LGUucGF0aCxuKSxBZih0LGUucm91dGUsbildKS5waXBlKHp1KCksZmwoKGZ1bmN0aW9uKHQpe3JldHVybiEwIT09dH0pLCEwKSl9KSksZmwoKGZ1bmN0aW9uKHQpe3JldHVybiEwIT09dH0pLCEwKSl9KG8sdSx0LGUpOlJ1KG4pfSkpLEIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qoci5fX2Fzc2lnbikoe30sbix7Z3VhcmRzUmVzdWx0OnR9KX0pKSl9KSkpfX0oZS5uZ01vZHVsZS5pbmplY3RvciwoZnVuY3Rpb24odCl7cmV0dXJuIGUudHJpZ2dlckV2ZW50KHQpfSkpLFl1KChmdW5jdGlvbih0KXtpZihjZih0Lmd1YXJkc1Jlc3VsdCkpe3ZhciBuPWVjKCdSZWRpcmVjdGluZyB0byAiJytlLnNlcmlhbGl6ZVVybCh0Lmd1YXJkc1Jlc3VsdCkrJyInKTt0aHJvdyBuLnVybD10Lmd1YXJkc1Jlc3VsdCxufX0pKSxZdSgoZnVuY3Rpb24odCl7dmFyIG49bmV3IEhzKHQuaWQsZS5zZXJpYWxpemVVcmwodC5leHRyYWN0ZWRVcmwpLGUuc2VyaWFsaXplVXJsKHQudXJsQWZ0ZXJSZWRpcmVjdHMpLHQudGFyZ2V0U25hcHNob3QsISF0Lmd1YXJkc1Jlc3VsdCk7ZS50cmlnZ2VyRXZlbnQobil9KSksRnUoKGZ1bmN0aW9uKHQpe2lmKCF0Lmd1YXJkc1Jlc3VsdCl7ZS5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKTt2YXIgcj1uZXcgRHModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksIiIpO3JldHVybiBuLm5leHQociksdC5yZXNvbHZlKCExKSwhMX1yZXR1cm4hMH0pKSxGZigoZnVuY3Rpb24odCl7aWYodC5ndWFyZHMuY2FuQWN0aXZhdGVDaGVja3MubGVuZ3RoKXJldHVybiBSdSh0KS5waXBlKFl1KChmdW5jdGlvbih0KXt2YXIgbj1uZXcgenModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksZS5zZXJpYWxpemVVcmwodC51cmxBZnRlclJlZGlyZWN0cyksdC50YXJnZXRTbmFwc2hvdCk7ZS50cmlnZ2VyRXZlbnQobil9KSksKG49ZS5wYXJhbXNJbmhlcml0YW5jZVN0cmF0ZWd5LG89ZS5uZ01vZHVsZS5pbmplY3RvcixmdW5jdGlvbih0KXtyZXR1cm4gdC5waXBlKFEoKGZ1bmN0aW9uKHQpe3ZhciBlPXQudGFyZ2V0U25hcHNob3QsaT10Lmd1YXJkcy5jYW5BY3RpdmF0ZUNoZWNrcztyZXR1cm4gaS5sZW5ndGg/VyhpKS5waXBlKGJsKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvPU9iamVjdC5rZXlzKHQpO2lmKDA9PT1vLmxlbmd0aClyZXR1cm4gUnUoe30pO2lmKDE9PT1vLmxlbmd0aCl7dmFyIGk9b1swXTtyZXR1cm4gemYodFtpXSxlLG4scikucGlwZShCKChmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4oZT17fSlbaV09dCxlfSkpKX12YXIgYT17fTtyZXR1cm4gVyhvKS5waXBlKFEoKGZ1bmN0aW9uKG8pe3JldHVybiB6Zih0W29dLGUsbixyKS5waXBlKEIoKGZ1bmN0aW9uKHQpe3JldHVybiBhW29dPXQsdH0pKSl9KSkpLnBpcGUob2woKSxCKChmdW5jdGlvbigpe3JldHVybiBhfSkpKX0odC5fcmVzb2x2ZSx0LGUsbykucGlwZShCKChmdW5jdGlvbihlKXtyZXR1cm4gdC5fcmVzb2x2ZWREYXRhPWUsdC5kYXRhPU9iamVjdChyLl9fYXNzaWduKSh7fSx0LmRhdGEsRmModCxuKS5yZXNvbHZlKSxudWxsfSkpKX0odC5yb3V0ZSxlLG4sbyl9KSksZnVuY3Rpb24odCxlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD49Mj9mdW5jdGlvbihuKXtyZXR1cm4gdyhtbCh0LGUpLFd1KDEpLGVsKGUpKShuKX06ZnVuY3Rpb24oZSl7cmV0dXJuIHcobWwoKGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdChlLG4scisxKX0pKSxXdSgxKSkoZSl9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdH0pKSxCKChmdW5jdGlvbihlKXtyZXR1cm4gdH0pKSk6UnUodCl9KSkpfSksWXUoKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBGcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSxlLnNlcmlhbGl6ZVVybCh0LnVybEFmdGVyUmVkaXJlY3RzKSx0LnRhcmdldFNuYXBzaG90KTtlLnRyaWdnZXJFdmVudChuKX0pKSk7dmFyIG4sb30pKSxGZigoZnVuY3Rpb24odCl7dmFyIG49dC5leHRyYXM7cmV0dXJuIGUuaG9va3MuYWZ0ZXJQcmVhY3RpdmF0aW9uKHQudGFyZ2V0U25hcHNob3Qse25hdmlnYXRpb25JZDp0LmlkLGFwcGxpZWRVcmxUcmVlOnQuZXh0cmFjdGVkVXJsLHJhd1VybFRyZWU6dC5yYXdVcmwsc2tpcExvY2F0aW9uQ2hhbmdlOiEhbi5za2lwTG9jYXRpb25DaGFuZ2UscmVwbGFjZVVybDohIW4ucmVwbGFjZVVybH0pfSkpLEIoKGZ1bmN0aW9uKHQpe3ZhciBuLG8saSxhPShpPWZ1bmN0aW9uIHQoZSxuLG8pe2lmKG8mJmUuc2hvdWxkUmV1c2VSb3V0ZShuLnZhbHVlLG8udmFsdWUuc25hcHNob3QpKXsocz1vLnZhbHVlKS5fZnV0dXJlU25hcHNob3Q9bi52YWx1ZTt2YXIgaT1mdW5jdGlvbihlLG4sbyl7cmV0dXJuIG4uY2hpbGRyZW4ubWFwKChmdW5jdGlvbihuKXt2YXIgaSxhO3RyeXtmb3IodmFyIHU9T2JqZWN0KHIuX192YWx1ZXMpKG8uY2hpbGRyZW4pLGw9dS5uZXh0KCk7IWwuZG9uZTtsPXUubmV4dCgpKXt2YXIgcz1sLnZhbHVlO2lmKGUuc2hvdWxkUmV1c2VSb3V0ZShzLnZhbHVlLnNuYXBzaG90LG4udmFsdWUpKXJldHVybiB0KGUsbixzKX19Y2F0Y2goYyl7aT17ZXJyb3I6Y319ZmluYWxseXt0cnl7bCYmIWwuZG9uZSYmKGE9dS5yZXR1cm4pJiZhLmNhbGwodSl9ZmluYWxseXtpZihpKXRocm93IGkuZXJyb3J9fXJldHVybiB0KGUsbil9KSl9KGUsbixvKTtyZXR1cm4gbmV3IFVjKHMsaSl9dmFyIGE9ZS5yZXRyaWV2ZShuLnZhbHVlKTtpZihhKXt2YXIgdT1hLnJvdXRlO3JldHVybiBmdW5jdGlvbiB0KGUsbil7aWYoZS52YWx1ZS5yb3V0ZUNvbmZpZyE9PW4udmFsdWUucm91dGVDb25maWcpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVhdHRhY2ggQWN0aXZhdGVkUm91dGVTbmFwc2hvdCBjcmVhdGVkIGZyb20gYSBkaWZmZXJlbnQgcm91dGUiKTtpZihlLmNoaWxkcmVuLmxlbmd0aCE9PW4uY2hpbGRyZW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlYXR0YWNoIEFjdGl2YXRlZFJvdXRlU25hcHNob3Qgd2l0aCBhIGRpZmZlcmVudCBudW1iZXIgb2YgY2hpbGRyZW4iKTtuLnZhbHVlLl9mdXR1cmVTbmFwc2hvdD1lLnZhbHVlO2Zvcih2YXIgcj0wO3I8ZS5jaGlsZHJlbi5sZW5ndGg7KytyKXQoZS5jaGlsZHJlbltyXSxuLmNoaWxkcmVuW3JdKX0obix1KSx1fXZhciBsLHM9bmV3IHpjKG5ldyBNdSgobD1uLnZhbHVlKS51cmwpLG5ldyBNdShsLnBhcmFtcyksbmV3IE11KGwucXVlcnlQYXJhbXMpLG5ldyBNdShsLmZyYWdtZW50KSxuZXcgTXUobC5kYXRhKSxsLm91dGxldCxsLmNvbXBvbmVudCxsKTtyZXR1cm4gaT1uLmNoaWxkcmVuLm1hcCgoZnVuY3Rpb24obil7cmV0dXJuIHQoZSxuKX0pKSxuZXcgVWMocyxpKX0oZS5yb3V0ZVJldXNlU3RyYXRlZ3ksKG49dC50YXJnZXRTbmFwc2hvdCkuX3Jvb3QsKG89dC5jdXJyZW50Um91dGVyU3RhdGUpP28uX3Jvb3Q6dm9pZCAwKSxuZXcgVmMoaSxuKSk7cmV0dXJuIE9iamVjdChyLl9fYXNzaWduKSh7fSx0LHt0YXJnZXRSb3V0ZXJTdGF0ZTphfSl9KSksWXUoKGZ1bmN0aW9uKHQpe2UuY3VycmVudFVybFRyZWU9dC51cmxBZnRlclJlZGlyZWN0cyxlLnJhd1VybFRyZWU9ZS51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKGUuY3VycmVudFVybFRyZWUsdC5yYXdVcmwpLGUucm91dGVyU3RhdGU9dC50YXJnZXRSb3V0ZXJTdGF0ZSwiZGVmZXJyZWQiPT09ZS51cmxVcGRhdGVTdHJhdGVneSYmKHQuZXh0cmFzLnNraXBMb2NhdGlvbkNoYW5nZXx8ZS5zZXRCcm93c2VyVXJsKGUucmF3VXJsVHJlZSwhIXQuZXh0cmFzLnJlcGxhY2VVcmwsdC5pZCx0LmV4dHJhcy5zdGF0ZSksZS5icm93c2VyVXJsVHJlZT10LnVybEFmdGVyUmVkaXJlY3RzKX0pKSwoaT1lLnJvb3RDb250ZXh0cyxhPWUucm91dGVSZXVzZVN0cmF0ZWd5LHU9ZnVuY3Rpb24odCl7cmV0dXJuIGUudHJpZ2dlckV2ZW50KHQpfSxCKChmdW5jdGlvbih0KXtyZXR1cm4gbmV3IHVmKGEsdC50YXJnZXRSb3V0ZXJTdGF0ZSx0LmN1cnJlbnRSb3V0ZXJTdGF0ZSx1KS5hY3RpdmF0ZShpKSx0fSkpKSxZdSh7bmV4dDpmdW5jdGlvbigpe2w9ITB9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7bD0hMH19KSwobz1mdW5jdGlvbigpe2lmKCFsJiYhcyl7ZS5yZXNldFVybFRvQ3VycmVudFVybFRyZWUoKTt2YXIgcj1uZXcgRHModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksIk5hdmlnYXRpb24gSUQgIit0LmlkKyIgaXMgbm90IGVxdWFsIHRvIHRoZSBjdXJyZW50IG5hdmlnYXRpb24gaWQgIitlLm5hdmlnYXRpb25JZCk7bi5uZXh0KHIpLHQucmVzb2x2ZSghMSl9ZS5jdXJyZW50TmF2aWdhdGlvbj1udWxsfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5saWZ0KG5ldyB4bChvKSl9KSxpbCgoZnVuY3Rpb24ocil7aWYocz0hMCwodT1yKSYmdVt0Y10pe3ZhciBvPWNmKHIudXJsKTtvfHwoZS5uYXZpZ2F0ZWQ9ITAsZS5yZXNldFN0YXRlQW5kVXJsKHQuY3VycmVudFJvdXRlclN0YXRlLHQuY3VycmVudFVybFRyZWUsdC5yYXdVcmwpKTt2YXIgaT1uZXcgRHModC5pZCxlLnNlcmlhbGl6ZVVybCh0LmV4dHJhY3RlZFVybCksci5tZXNzYWdlKTtuLm5leHQoaSksdC5yZXNvbHZlKCExKSxvJiZlLm5hdmlnYXRlQnlVcmwoci51cmwpfWVsc2V7ZS5yZXNldFN0YXRlQW5kVXJsKHQuY3VycmVudFJvdXRlclN0YXRlLHQuY3VycmVudFVybFRyZWUsdC5yYXdVcmwpO3ZhciBhPW5ldyBVcyh0LmlkLGUuc2VyaWFsaXplVXJsKHQuZXh0cmFjdGVkVXJsKSxyKTtuLm5leHQoYSk7dHJ5e3QucmVzb2x2ZShlLmVycm9ySGFuZGxlcihyKSl9Y2F0Y2gobCl7dC5yZWplY3QobCl9fXZhciB1O3JldHVybiBrdX0pKSl9KSkpfSx0LnByb3RvdHlwZS5yZXNldFJvb3RDb21wb25lbnRUeXBlPWZ1bmN0aW9uKHQpe3RoaXMucm9vdENvbXBvbmVudFR5cGU9dCx0aGlzLnJvdXRlclN0YXRlLnJvb3QuY29tcG9uZW50PXRoaXMucm9vdENvbXBvbmVudFR5cGV9LHQucHJvdG90eXBlLmdldFRyYW5zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnRyYW5zaXRpb25zLnZhbHVlO3JldHVybiB0LnVybEFmdGVyUmVkaXJlY3RzPXRoaXMuYnJvd3NlclVybFRyZWUsdH0sdC5wcm90b3R5cGUuc2V0VHJhbnNpdGlvbj1mdW5jdGlvbih0KXt0aGlzLnRyYW5zaXRpb25zLm5leHQoT2JqZWN0KHIuX19hc3NpZ24pKHt9LHRoaXMuZ2V0VHJhbnNpdGlvbigpLHQpKX0sdC5wcm90b3R5cGUuaW5pdGlhbE5hdmlnYXRpb249ZnVuY3Rpb24oKXt0aGlzLnNldFVwTG9jYXRpb25DaGFuZ2VMaXN0ZW5lcigpLDA9PT10aGlzLm5hdmlnYXRpb25JZCYmdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMubG9jYXRpb24ucGF0aCghMCkse3JlcGxhY2VVcmw6ITB9KX0sdC5wcm90b3R5cGUuc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9ufHwodGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbj10aGlzLmxvY2F0aW9uLnN1YnNjcmliZSgoZnVuY3Rpb24oZSl7dmFyIG49dC5wYXJzZVVybChlLnVybCkscj0icG9wc3RhdGUiPT09ZS50eXBlPyJwb3BzdGF0ZSI6Imhhc2hjaGFuZ2UiLG89ZS5zdGF0ZSYmZS5zdGF0ZS5uYXZpZ2F0aW9uSWQ/ZS5zdGF0ZTpudWxsO3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5zY2hlZHVsZU5hdmlnYXRpb24obixyLG8se3JlcGxhY2VVcmw6ITB9KX0pLDApfSkpKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJ1cmwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpYWxpemVVcmwodGhpcy5jdXJyZW50VXJsVHJlZSl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdC5wcm90b3R5cGUuZ2V0Q3VycmVudE5hdmlnYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50TmF2aWdhdGlvbn0sdC5wcm90b3R5cGUudHJpZ2dlckV2ZW50PWZ1bmN0aW9uKHQpe3RoaXMuZXZlbnRzLm5leHQodCl9LHQucHJvdG90eXBlLnJlc2V0Q29uZmlnPWZ1bmN0aW9uKHQpe29jKHQpLHRoaXMuY29uZmlnPXQubWFwKHVjKSx0aGlzLm5hdmlnYXRlZD0hMSx0aGlzLmxhc3RTdWNjZXNzZnVsSWQ9LTF9LHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCl9LHQucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLmxvY2F0aW9uU3Vic2NyaXB0aW9uJiYodGhpcy5sb2NhdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMubG9jYXRpb25TdWJzY3JpcHRpb249bnVsbCl9LHQucHJvdG90eXBlLmNyZWF0ZVVybFRyZWU9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIG49ZS5yZWxhdGl2ZVRvLG89ZS5xdWVyeVBhcmFtcyxpPWUuZnJhZ21lbnQsYT1lLnByZXNlcnZlUXVlcnlQYXJhbXMsdT1lLnF1ZXJ5UGFyYW1zSGFuZGxpbmcsbD1lLnByZXNlcnZlRnJhZw=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?3?2",
"type": "binary",
"value": "base64:bWVudDtlZSgpJiZhJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigicHJlc2VydmVRdWVyeVBhcmFtcyBpcyBkZXByZWNhdGVkLCB1c2UgcXVlcnlQYXJhbXNIYW5kbGluZyBpbnN0ZWFkLiIpO3ZhciBzPW58fHRoaXMucm91dGVyU3RhdGUucm9vdCxjPWw/dGhpcy5jdXJyZW50VXJsVHJlZS5mcmFnbWVudDppLGY9bnVsbDtpZih1KXN3aXRjaCh1KXtjYXNlIm1lcmdlIjpmPU9iamVjdChyLl9fYXNzaWduKSh7fSx0aGlzLmN1cnJlbnRVcmxUcmVlLnF1ZXJ5UGFyYW1zLG8pO2JyZWFrO2Nhc2UicHJlc2VydmUiOmY9dGhpcy5jdXJyZW50VXJsVHJlZS5xdWVyeVBhcmFtczticmVhaztkZWZhdWx0OmY9b3x8bnVsbH1lbHNlIGY9YT90aGlzLmN1cnJlbnRVcmxUcmVlLnF1ZXJ5UGFyYW1zOm98fG51bGw7cmV0dXJuIG51bGwhPT1mJiYoZj10aGlzLnJlbW92ZUVtcHR5UHJvcHMoZikpLGZ1bmN0aW9uKHQsZSxuLG8saSl7aWYoMD09PW4ubGVuZ3RoKXJldHVybiBZYyhlLnJvb3QsZS5yb290LGUsbyxpKTt2YXIgYT1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHRbMF0mJjE9PT10Lmxlbmd0aCYmIi8iPT09dFswXSlyZXR1cm4gbmV3IEpjKCEwLDAsdCk7dmFyIGU9MCxuPSExLG89dC5yZWR1Y2UoKGZ1bmN0aW9uKHQsbyxpKXtpZigib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPW8pe2lmKG8ub3V0bGV0cyl7dmFyIGE9e307cmV0dXJuIGZjKG8ub3V0bGV0cywoZnVuY3Rpb24odCxlKXthW2VdPSJzdHJpbmciPT10eXBlb2YgdD90LnNwbGl0KCIvIik6dH0pKSxPYmplY3Qoci5fX3NwcmVhZCkodCxbe291dGxldHM6YX1dKX1pZihvLnNlZ21lbnRQYXRoKXJldHVybiBPYmplY3Qoci5fX3NwcmVhZCkodCxbby5zZWdtZW50UGF0aF0pfXJldHVybiJzdHJpbmciIT10eXBlb2Ygbz9PYmplY3Qoci5fX3NwcmVhZCkodCxbb10pOjA9PT1pPyhvLnNwbGl0KCIvIikuZm9yRWFjaCgoZnVuY3Rpb24ocixvKXswPT1vJiYiLiI9PT1yfHwoMD09byYmIiI9PT1yP249ITA6Ii4uIj09PXI/ZSsrOiIiIT1yJiZ0LnB1c2gocikpfSkpLHQpOk9iamVjdChyLl9fc3ByZWFkKSh0LFtvXSl9KSxbXSk7cmV0dXJuIG5ldyBKYyhuLGUsbyl9KG4pO2lmKGEudG9Sb290KCkpcmV0dXJuIFljKGUucm9vdCxuZXcgZ2MoW10se30pLGUsbyxpKTt2YXIgdT1mdW5jdGlvbih0LGUsbil7aWYodC5pc0Fic29sdXRlKXJldHVybiBuZXcgJGMoZS5yb290LCEwLDApO2lmKC0xPT09bi5zbmFwc2hvdC5fbGFzdFBhdGhJbmRleClyZXR1cm4gbmV3ICRjKG4uc25hcHNob3QuX3VybFNlZ21lbnQsITAsMCk7dmFyIHI9S2ModC5jb21tYW5kc1swXSk/MDoxO3JldHVybiBmdW5jdGlvbih0LGUsbil7Zm9yKHZhciByPXQsbz1lLGk9bjtpPm87KXtpZihpLT1vLCEocj1yLnBhcmVudCkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIG51bWJlciBvZiAnLi4vJyIpO289ci5zZWdtZW50cy5sZW5ndGh9cmV0dXJuIG5ldyAkYyhyLCExLG8taSl9KG4uc25hcHNob3QuX3VybFNlZ21lbnQsbi5zbmFwc2hvdC5fbGFzdFBhdGhJbmRleCtyLHQubnVtYmVyT2ZEb3VibGVEb3RzKX0oYSxlLHQpLGw9dS5wcm9jZXNzQ2hpbGRyZW4/ZWYodS5zZWdtZW50R3JvdXAsdS5pbmRleCxhLmNvbW1hbmRzKTp0Zih1LnNlZ21lbnRHcm91cCx1LmluZGV4LGEuY29tbWFuZHMpO3JldHVybiBZYyh1LnNlZ21lbnRHcm91cCxsLGUsbyxpKX0ocyx0aGlzLmN1cnJlbnRVcmxUcmVlLHQsZixjKX0sdC5wcm90b3R5cGUubmF2aWdhdGVCeVVybD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPXtza2lwTG9jYXRpb25DaGFuZ2U6ITF9KSxlZSgpJiZ0aGlzLmlzTmdab25lRW5hYmxlZCYmIW5pLmlzSW5Bbmd1bGFyWm9uZSgpJiZ0aGlzLmNvbnNvbGUud2FybigiTmF2aWdhdGlvbiB0cmlnZ2VyZWQgb3V0c2lkZSBBbmd1bGFyIHpvbmUsIGRpZCB5b3UgZm9yZ2V0IHRvIGNhbGwgJ25nWm9uZS5ydW4oKSc/Iik7dmFyIG49Y2YodCk/dDp0aGlzLnBhcnNlVXJsKHQpLHI9dGhpcy51cmxIYW5kbGluZ1N0cmF0ZWd5Lm1lcmdlKG4sdGhpcy5yYXdVcmxUcmVlKTtyZXR1cm4gdGhpcy5zY2hlZHVsZU5hdmlnYXRpb24ociwiaW1wZXJhdGl2ZSIsbnVsbCxlKX0sdC5wcm90b3R5cGUubmF2aWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9e3NraXBMb2NhdGlvbkNoYW5nZTohMX0pLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7ZSsrKXt2YXIgbj10W2VdO2lmKG51bGw9PW4pdGhyb3cgbmV3IEVycm9yKCJUaGUgcmVxdWVzdGVkIHBhdGggY29udGFpbnMgIituKyIgc2VnbWVudCBhdCBpbmRleCAiK2UpfX0odCksdGhpcy5uYXZpZ2F0ZUJ5VXJsKHRoaXMuY3JlYXRlVXJsVHJlZSh0LGUpLGUpfSx0LnByb3RvdHlwZS5zZXJpYWxpemVVcmw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudXJsU2VyaWFsaXplci5zZXJpYWxpemUodCl9LHQucHJvdG90eXBlLnBhcnNlVXJsPWZ1bmN0aW9uKHQpe3ZhciBlO3RyeXtlPXRoaXMudXJsU2VyaWFsaXplci5wYXJzZSh0KX1jYXRjaChuKXtlPXRoaXMubWFsZm9ybWVkVXJpRXJyb3JIYW5kbGVyKG4sdGhpcy51cmxTZXJpYWxpemVyLHQpfXJldHVybiBlfSx0LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbih0LGUpe2lmKGNmKHQpKXJldHVybiBwYyh0aGlzLmN1cnJlbnRVcmxUcmVlLHQsZSk7dmFyIG49dGhpcy5wYXJzZVVybCh0KTtyZXR1cm4gcGModGhpcy5jdXJyZW50VXJsVHJlZSxuLGUpfSx0LnByb3RvdHlwZS5yZW1vdmVFbXB0eVByb3BzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cyh0KS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7dmFyIHI9dFtuXTtyZXR1cm4gbnVsbCE9ciYmKGVbbl09ciksZX0pLHt9KX0sdC5wcm90b3R5cGUucHJvY2Vzc05hdmlnYXRpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLm5hdmlnYXRpb25zLnN1YnNjcmliZSgoZnVuY3Rpb24oZSl7dC5uYXZpZ2F0ZWQ9ITAsdC5sYXN0U3VjY2Vzc2Z1bElkPWUuaWQsdC5ldmVudHMubmV4dChuZXcgTnMoZS5pZCx0LnNlcmlhbGl6ZVVybChlLmV4dHJhY3RlZFVybCksdC5zZXJpYWxpemVVcmwodC5jdXJyZW50VXJsVHJlZSkpKSx0Lmxhc3RTdWNjZXNzZnVsTmF2aWdhdGlvbj10LmN1cnJlbnROYXZpZ2F0aW9uLHQuY3VycmVudE5hdmlnYXRpb249bnVsbCxlLnJlc29sdmUoITApfSksKGZ1bmN0aW9uKGUpe3QuY29uc29sZS53YXJuKCJVbmhhbmRsZWQgTmF2aWdhdGlvbiBFcnJvcjogIil9KSl9LHQucHJvdG90eXBlLnNjaGVkdWxlTmF2aWdhdGlvbj1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz10aGlzLmdldFRyYW5zaXRpb24oKTtpZihvJiYiaW1wZXJhdGl2ZSIhPT1lJiYiaW1wZXJhdGl2ZSI9PT1vLnNvdXJjZSYmby5yYXdVcmwudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKTtpZihvJiYiaGFzaGNoYW5nZSI9PWUmJiJwb3BzdGF0ZSI9PT1vLnNvdXJjZSYmby5yYXdVcmwudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKTtpZihvJiYicG9wc3RhdGUiPT1lJiYiaGFzaGNoYW5nZSI9PT1vLnNvdXJjZSYmby5yYXdVcmwudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKTt2YXIgaT1udWxsLGE9bnVsbCx1PW5ldyBQcm9taXNlKChmdW5jdGlvbih0LGUpe2k9dCxhPWV9KSksbD0rK3RoaXMubmF2aWdhdGlvbklkO3JldHVybiB0aGlzLnNldFRyYW5zaXRpb24oe2lkOmwsc291cmNlOmUscmVzdG9yZWRTdGF0ZTpuLGN1cnJlbnRVcmxUcmVlOnRoaXMuY3VycmVudFVybFRyZWUsY3VycmVudFJhd1VybDp0aGlzLnJhd1VybFRyZWUscmF3VXJsOnQsZXh0cmFzOnIscmVzb2x2ZTppLHJlamVjdDphLHByb21pc2U6dSxjdXJyZW50U25hcHNob3Q6dGhpcy5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCxjdXJyZW50Um91dGVyU3RhdGU6dGhpcy5yb3V0ZXJTdGF0ZX0pLHUuY2F0Y2goKGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLnJlamVjdCh0KX0pKX0sdC5wcm90b3R5cGUuc2V0QnJvd3NlclVybD1mdW5jdGlvbih0LGUsbixvKXt2YXIgaT10aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHQpO289b3x8e30sdGhpcy5sb2NhdGlvbi5pc0N1cnJlbnRQYXRoRXF1YWxUbyhpKXx8ZT90aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZShpLCIiLE9iamVjdChyLl9fYXNzaWduKSh7fSxvLHtuYXZpZ2F0aW9uSWQ6bn0pKTp0aGlzLmxvY2F0aW9uLmdvKGksIiIsT2JqZWN0KHIuX19hc3NpZ24pKHt9LG8se25hdmlnYXRpb25JZDpufSkpfSx0LnByb3RvdHlwZS5yZXNldFN0YXRlQW5kVXJsPWZ1bmN0aW9uKHQsZSxuKXt0aGlzLnJvdXRlclN0YXRlPXQsdGhpcy5jdXJyZW50VXJsVHJlZT1lLHRoaXMucmF3VXJsVHJlZT10aGlzLnVybEhhbmRsaW5nU3RyYXRlZ3kubWVyZ2UodGhpcy5jdXJyZW50VXJsVHJlZSxuKSx0aGlzLnJlc2V0VXJsVG9DdXJyZW50VXJsVHJlZSgpfSx0LnByb3RvdHlwZS5yZXNldFVybFRvQ3VycmVudFVybFRyZWU9ZnVuY3Rpb24oKXt0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh0aGlzLnVybFNlcmlhbGl6ZXIuc2VyaWFsaXplKHRoaXMucmF3VXJsVHJlZSksIiIse25hdmlnYXRpb25JZDp0aGlzLmxhc3RTdWNjZXNzZnVsSWR9KX0sdH0oKSxYZj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe3RoaXMub3V0bGV0PW51bGwsdGhpcy5yb3V0ZT1udWxsLHRoaXMucmVzb2x2ZXI9bnVsbCx0aGlzLmNoaWxkcmVuPW5ldyB0aCx0aGlzLmF0dGFjaFJlZj1udWxsfX0oKSx0aD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmNvbnRleHRzPW5ldyBNYXB9cmV0dXJuIHQucHJvdG90eXBlLm9uQ2hpbGRPdXRsZXRDcmVhdGVkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5nZXRPckNyZWF0ZUNvbnRleHQodCk7bi5vdXRsZXQ9ZSx0aGlzLmNvbnRleHRzLnNldCh0LG4pfSx0LnByb3RvdHlwZS5vbkNoaWxkT3V0bGV0RGVzdHJveWVkPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Q29udGV4dCh0KTtlJiYoZS5vdXRsZXQ9bnVsbCl9LHQucHJvdG90eXBlLm9uT3V0bGV0RGVhY3RpdmF0ZWQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHRzO3JldHVybiB0aGlzLmNvbnRleHRzPW5ldyBNYXAsdH0sdC5wcm90b3R5cGUub25PdXRsZXRSZUF0dGFjaGVkPWZ1bmN0aW9uKHQpe3RoaXMuY29udGV4dHM9dH0sdC5wcm90b3R5cGUuZ2V0T3JDcmVhdGVDb250ZXh0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ2V0Q29udGV4dCh0KTtyZXR1cm4gZXx8KGU9bmV3IFhmLHRoaXMuY29udGV4dHMuc2V0KHQsZSkpLGV9LHQucHJvdG90eXBlLmdldENvbnRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29udGV4dHMuZ2V0KHQpfHxudWxsfSx0fSgpLGVoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8pe3RoaXMucGFyZW50Q29udGV4dHM9dCx0aGlzLmxvY2F0aW9uPWUsdGhpcy5yZXNvbHZlcj1uLHRoaXMuY2hhbmdlRGV0ZWN0b3I9byx0aGlzLmFjdGl2YXRlZD1udWxsLHRoaXMuX2FjdGl2YXRlZFJvdXRlPW51bGwsdGhpcy5hY3RpdmF0ZUV2ZW50cz1uZXcgT28sdGhpcy5kZWFjdGl2YXRlRXZlbnRzPW5ldyBPbyx0aGlzLm5hbWU9cnx8SnMsdC5vbkNoaWxkT3V0bGV0Q3JlYXRlZCh0aGlzLm5hbWUsdGhpcyl9cmV0dXJuIHQucHJvdG90eXBlLm5nT25EZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5wYXJlbnRDb250ZXh0cy5vbkNoaWxkT3V0bGV0RGVzdHJveWVkKHRoaXMubmFtZSl9LHQucHJvdG90eXBlLm5nT25Jbml0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuYWN0aXZhdGVkKXt2YXIgdD10aGlzLnBhcmVudENvbnRleHRzLmdldENvbnRleHQodGhpcy5uYW1lKTt0JiZ0LnJvdXRlJiYodC5hdHRhY2hSZWY/dGhpcy5hdHRhY2godC5hdHRhY2hSZWYsdC5yb3V0ZSk6dGhpcy5hY3RpdmF0ZVdpdGgodC5yb3V0ZSx0LnJlc29sdmVyfHxudWxsKSl9fSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImlzQWN0aXZhdGVkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmFjdGl2YXRlZH0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImNvbXBvbmVudCIse2dldDpmdW5jdGlvbigpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgRXJyb3IoIk91dGxldCBpcyBub3QgYWN0aXZhdGVkIik7cmV0dXJuIHRoaXMuYWN0aXZhdGVkLmluc3RhbmNlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwiYWN0aXZhdGVkUm91dGUiLHtnZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5hY3RpdmF0ZWQpdGhyb3cgbmV3IEVycm9yKCJPdXRsZXQgaXMgbm90IGFjdGl2YXRlZCIpO3JldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsImFjdGl2YXRlZFJvdXRlRGF0YSIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZT90aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5kYXRhOnt9fSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbigpe2lmKCF0aGlzLmFjdGl2YXRlZCl0aHJvdyBuZXcgRXJyb3IoIk91dGxldCBpcyBub3QgYWN0aXZhdGVkIik7dGhpcy5sb2NhdGlvbi5kZXRhY2goKTt2YXIgdD10aGlzLmFjdGl2YXRlZDtyZXR1cm4gdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxsLHR9LHQucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbih0LGUpe3RoaXMuYWN0aXZhdGVkPXQsdGhpcy5fYWN0aXZhdGVkUm91dGU9ZSx0aGlzLmxvY2F0aW9uLmluc2VydCh0Lmhvc3RWaWV3KX0sdC5wcm90b3R5cGUuZGVhY3RpdmF0ZT1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZhdGVkKXt2YXIgdD10aGlzLmNvbXBvbmVudDt0aGlzLmFjdGl2YXRlZC5kZXN0cm95KCksdGhpcy5hY3RpdmF0ZWQ9bnVsbCx0aGlzLl9hY3RpdmF0ZWRSb3V0ZT1udWxsLHRoaXMuZGVhY3RpdmF0ZUV2ZW50cy5lbWl0KHQpfX0sdC5wcm90b3R5cGUuYWN0aXZhdGVXaXRoPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5pc0FjdGl2YXRlZCl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhY3RpdmF0ZSBhbiBhbHJlYWR5IGFjdGl2YXRlZCBvdXRsZXQiKTt0aGlzLl9hY3RpdmF0ZWRSb3V0ZT10O3ZhciBuPShlPWV8fHRoaXMucmVzb2x2ZXIpLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHQuX2Z1dHVyZVNuYXBzaG90LnJvdXRlQ29uZmlnLmNvbXBvbmVudCkscj10aGlzLnBhcmVudENvbnRleHRzLmdldE9yQ3JlYXRlQ29udGV4dCh0aGlzLm5hbWUpLmNoaWxkcmVuLG89bmV3IG5oKHQscix0aGlzLmxvY2F0aW9uLmluamVjdG9yKTt0aGlzLmFjdGl2YXRlZD10aGlzLmxvY2F0aW9uLmNyZWF0ZUNvbXBvbmVudChuLHRoaXMubG9jYXRpb24ubGVuZ3RoLG8pLHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCksdGhpcy5hY3RpdmF0ZUV2ZW50cy5lbWl0KHRoaXMuYWN0aXZhdGVkLmluc3RhbmNlKX0sdH0oKSxuaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMucm91dGU9dCx0aGlzLmNoaWxkQ29udGV4dHM9ZSx0aGlzLnBhcmVudD1ufXJldHVybiB0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PXpjP3RoaXMucm91dGU6dD09PXRoP3RoaXMuY2hpbGRDb250ZXh0czp0aGlzLnBhcmVudC5nZXQodCxlKX0sdH0oKSxyaD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319KCksb2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wcmVsb2FkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUoKS5waXBlKGlsKChmdW5jdGlvbigpe3JldHVybiBSdShudWxsKX0pKSl9LHR9KCksaWg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wcmVsb2FkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFJ1KG51bGwpfSx0fSgpLGFoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsbixyLG8pe3RoaXMucm91dGVyPXQsdGhpcy5pbmplY3Rvcj1yLHRoaXMucHJlbG9hZGluZ1N0cmF0ZWd5PW8sdGhpcy5sb2FkZXI9bmV3IHFmKGUsbiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJpZ2dlckV2ZW50KG5ldyBCcyhlKSl9KSwoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJpZ2dlckV2ZW50KG5ldyBacyhlKSl9KSl9cmV0dXJuIHQucHJvdG90eXBlLnNldFVwUHJlbG9hZGluZz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5zdWJzY3JpcHRpb249dGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoRnUoKGZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTnN9KSksYmwoKGZ1bmN0aW9uKCl7cmV0dXJuIHQucHJlbG9hZCgpfSkpKS5zdWJzY3JpYmUoKGZ1bmN0aW9uKCl7fSkpfSx0LnByb3RvdHlwZS5wcmVsb2FkPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5pbmplY3Rvci5nZXQoSHQpO3JldHVybiB0aGlzLnByb2Nlc3NSb3V0ZXModCx0aGlzLnJvdXRlci5jb25maWcpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCl9LHQucHJvdG90eXBlLnByb2Nlc3NSb3V0ZXM9ZnVuY3Rpb24odCxlKXt2YXIgbixvLGk9W107dHJ5e2Zvcih2YXIgYT1PYmplY3Qoci5fX3ZhbHVlcykoZSksdT1hLm5leHQoKTshdS5kb25lO3U9YS5uZXh0KCkpe3ZhciBsPXUudmFsdWU7aWYobC5sb2FkQ2hpbGRyZW4mJiFsLmNhbkxvYWQmJmwuX2xvYWRlZENvbmZpZyl7dmFyIHM9bC5fbG9hZGVkQ29uZmlnO2kucHVzaCh0aGlzLnByb2Nlc3NSb3V0ZXMocy5tb2R1bGUscy5yb3V0ZXMpKX1lbHNlIGwubG9hZENoaWxkcmVuJiYhbC5jYW5Mb2FkP2kucHVzaCh0aGlzLnByZWxvYWRDb25maWcodCxsKSk6bC5jaGlsZHJlbiYmaS5wdXNoKHRoaXMucHJvY2Vzc1JvdXRlcyh0LGwuY2hpbGRyZW4pKX19Y2F0Y2goYyl7bj17ZXJyb3I6Y319ZmluYWxseXt0cnl7dSYmIXUuZG9uZSYmKG89YS5yZXR1cm4pJiZvLmNhbGwoYSl9ZmluYWxseXtpZihuKXRocm93IG4uZXJyb3J9fXJldHVybiBXKGkpLnBpcGUoJCgpLEIoKGZ1bmN0aW9uKHQpe30pKSl9LHQucHJvdG90eXBlLnByZWxvYWRDb25maWc9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLnByZWxvYWRpbmdTdHJhdGVneS5wcmVsb2FkKGUsKGZ1bmN0aW9uKCl7cmV0dXJuIG4ubG9hZGVyLmxvYWQodC5pbmplY3RvcixlKS5waXBlKFEoKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9sb2FkZWRDb25maWc9dCxuLnByb2Nlc3NSb3V0ZXModC5tb2R1bGUsdC5yb3V0ZXMpfSkpKX0pKX0sdH0oKSx1aD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3ZvaWQgMD09PW4mJihuPXt9KSx0aGlzLnJvdXRlcj10LHRoaXMudmlld3BvcnRTY3JvbGxlcj1lLHRoaXMub3B0aW9ucz1uLHRoaXMubGFzdElkPTAsdGhpcy5sYXN0U291cmNlPSJpbXBlcmF0aXZlIix0aGlzLnJlc3RvcmVkSWQ9MCx0aGlzLnN0b3JlPXt9LG4uc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj1uLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb258fCJkaXNhYmxlZCIsbi5hbmNob3JTY3JvbGxpbmc9bi5hbmNob3JTY3JvbGxpbmd8fCJkaXNhYmxlZCJ9cmV0dXJuIHQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXsiZGlzYWJsZWQiIT09dGhpcy5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24mJnRoaXMudmlld3BvcnRTY3JvbGxlci5zZXRIaXN0b3J5U2Nyb2xsUmVzdG9yYXRpb24oIm1hbnVhbCIpLHRoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uPXRoaXMuY3JlYXRlU2Nyb2xsRXZlbnRzKCksdGhpcy5zY3JvbGxFdmVudHNTdWJzY3JpcHRpb249dGhpcy5jb25zdW1lU2Nyb2xsRXZlbnRzKCl9LHQucHJvdG90eXBlLmNyZWF0ZVNjcm9sbEV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGZ1bmN0aW9uKGUpe2UgaW5zdGFuY2VvZiBqcz8odC5zdG9yZVt0Lmxhc3RJZF09dC52aWV3cG9ydFNjcm9sbGVyLmdldFNjcm9sbFBvc2l0aW9uKCksdC5sYXN0U291cmNlPWUubmF2aWdhdGlvblRyaWdnZXIsdC5yZXN0b3JlZElkPWUucmVzdG9yZWRTdGF0ZT9lLnJlc3RvcmVkU3RhdGUubmF2aWdhdGlvbklkOjApOmUgaW5zdGFuY2VvZiBOcyYmKHQubGFzdElkPWUuaWQsdC5zY2hlZHVsZVNjcm9sbEV2ZW50KGUsdC5yb3V0ZXIucGFyc2VVcmwoZS51cmxBZnRlclJlZGlyZWN0cykuZnJhZ21lbnQpKX0pKX0sdC5wcm90b3R5cGUuY29uc3VtZVNjcm9sbEV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGZ1bmN0aW9uKGUpe2UgaW5zdGFuY2VvZiBLcyYmKGUucG9zaXRpb24/InRvcCI9PT10Lm9wdGlvbnMuc2Nyb2xsUG9zaXRpb25SZXN0b3JhdGlvbj90LnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSk6ImVuYWJsZWQiPT09dC5vcHRpb25zLnNjcm9sbFBvc2l0aW9uUmVzdG9yYXRpb24mJnQudmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb1Bvc2l0aW9uKGUucG9zaXRpb24pOmUuYW5jaG9yJiYiZW5hYmxlZCI9PT10Lm9wdGlvbnMuYW5jaG9yU2Nyb2xsaW5nP3Qudmlld3BvcnRTY3JvbGxlci5zY3JvbGxUb0FuY2hvcihlLmFuY2hvcik6ImRpc2FibGVkIiE9PXQub3B0aW9ucy5zY3JvbGxQb3NpdGlvblJlc3RvcmF0aW9uJiZ0LnZpZXdwb3J0U2Nyb2xsZXIuc2Nyb2xsVG9Qb3NpdGlvbihbMCwwXSkpfSkpfSx0LnByb3RvdHlwZS5zY2hlZHVsZVNjcm9sbEV2ZW50PWZ1bmN0aW9uKHQsZSl7dGhpcy5yb3V0ZXIudHJpZ2dlckV2ZW50KG5ldyBLcyh0LCJwb3BzdGF0ZSI9PT10aGlzLmxhc3RTb3VyY2U/dGhpcy5zdG9yZVt0aGlzLnJlc3RvcmVkSWRdOm51bGwsZSkpfSx0LnByb3RvdHlwZS5uZ09uRGVzdHJveT1mdW5jdGlvbigpe3RoaXMucm91dGVyRXZlbnRzU3Vic2NyaXB0aW9uJiZ0aGlzLnJvdXRlckV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpLHRoaXMuc2Nyb2xsRXZlbnRzU3Vic2NyaXB0aW9uJiZ0aGlzLnNjcm9sbEV2ZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpfSx0fSgpLGxoPW5ldyBUdCgiUk9VVEVSX0NPTkZJR1VSQVRJT04iKSxzaD1uZXcgVHQoIlJPVVRFUl9GT1JST09UX0dVQVJEIiksY2g9W2h1LHtwcm92aWRlOl9jLHVzZUNsYXNzOndjfSx7cHJvdmlkZTokZix1c2VGYWN0b3J5OnloLGRlcHM6W19pLF9jLHRoLGh1LE1lLGJpLFdvLEdmLGxoLFtXZixuZXcgc3RdLFtCZixuZXcgc3RdXX0sdGgse3Byb3ZpZGU6emMsdXNlRmFjdG9yeTptaCxkZXBzOlskZl19LHtwcm92aWRlOmJpLHVzZUNsYXNzOlNpfSxhaCxpaCxvaCx7cHJvdmlkZTpsaCx1c2VWYWx1ZTp7ZW5hYmxlVHJhY2luZzohMX19XTtmdW5jdGlvbiBmaCgpe3JldHVybiBuZXcgZGkoIlJvdXRlciIsJGYpfXZhciBoaD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt9dmFyIGU7cmV0dXJuIGU9dCx0LmZvclJvb3Q9ZnVuY3Rpb24odCxuKXtyZXR1cm57bmdNb2R1bGU6ZSxwcm92aWRlcnM6W2NoLHZoKHQpLHtwcm92aWRlOnNoLHVzZUZhY3Rvcnk6Z2gsZGVwczpbWyRmLG5ldyBzdCxuZXcgZnRdXX0se3Byb3ZpZGU6bGgsdXNlVmFsdWU6bnx8e319LHtwcm92aWRlOmN1LHVzZUZhY3Rvcnk6ZGgsZGVwczpbbHUsW25ldyBsdChmdSksbmV3IHN0XSxsaF19LHtwcm92aWRlOnVoLHVzZUZhY3Rvcnk6cGgsZGVwczpbJGYsVHUsbGhdfSx7cHJvdmlkZTpyaCx1c2VFeGlzdGluZzpuJiZuLnByZWxvYWRpbmdTdHJhdGVneT9uLnByZWxvYWRpbmdTdHJhdGVneTppaH0se3Byb3ZpZGU6ZGksbXVsdGk6ITAsdXNlRmFjdG9yeTpmaH0sW19oLHtwcm92aWRlOmtvLG11bHRpOiEwLHVzZUZhY3Rvcnk6d2gsZGVwczpbX2hdfSx7cHJvdmlkZTp4aCx1c2VGYWN0b3J5OmJoLGRlcHM6W19oXX0se3Byb3ZpZGU6RG8sbXVsdGk6ITAsdXNlRXhpc3Rpbmc6eGh9XV19fSx0LmZvckNoaWxkPWZ1bmN0aW9uKHQpe3JldHVybntuZ01vZHVsZTplLHByb3ZpZGVyczpbdmgodCldfX0sdH0oKTtmdW5jdGlvbiBwaCh0LGUsbil7cmV0dXJuIG4uc2Nyb2xsT2Zmc2V0JiZlLnNldE9mZnNldChuLnNjcm9sbE9mZnNldCksbmV3IHVoKHQsZSxuKX1mdW5jdGlvbiBkaCh0LGUsbil7cmV0dXJuIHZvaWQgMD09PW4mJihuPXt9KSxuLnVzZUhhc2g/bmV3IGR1KHQsZSk6bmV3IGd1KHQsZSl9ZnVuY3Rpb24gZ2godCl7aWYodCl0aHJvdyBuZXcgRXJyb3IoIlJvdXRlck1vZHVsZS5mb3JSb290KCkgY2FsbGVkIHR3aWNlLiBMYXp5IGxvYWRlZCBtb2R1bGVzIHNob3VsZCB1c2UgUm91dGVyTW9kdWxlLmZvckNoaWxkKCkgaW5zdGVhZC4iKTtyZXR1cm4iZ3VhcmRlZCJ9ZnVuY3Rpb24gdmgodCl7cmV0dXJuW3twcm92aWRlOnplLG11bHRpOiEwLHVzZVZhbHVlOnR9LHtwcm92aWRlOkdmLG11bHRpOiEwLHVzZVZhbHVlOnR9XX1mdW5jdGlvbiB5aCh0LGUsbixyLG8saSxhLHUsbCxzLGMpe3ZvaWQgMD09PWwmJihsPXt9KTt2YXIgZj1uZXcgJGYobnVsbCxlLG4scixvLGksYSxzYyh1KSk7aWYocyYmKGYudXJsSGFuZGxpbmdTdHJhdGVneT1zKSxjJiYoZi5yb3V0ZVJldXNlU3RyYXRlZ3k9YyksbC5lcnJvckhhbmRsZXImJihmLmVycm9ySGFuZGxlcj1sLmVycm9ySGFuZGxlciksbC5tYWxmb3JtZWRVcmlFcnJvckhhbmRsZXImJihmLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlcj1sLm1hbGZvcm1lZFVyaUVycm9ySGFuZGxlciksbC5lbmFibGVUcmFjaW5nKXt2YXIgaD1FbCgpO2YuZXZlbnRzLnN1YnNjcmliZSgoZnVuY3Rpb24odCl7aC5sb2dHcm91cCgiUm91dGVyIEV2ZW50OiAiK3QuY29uc3RydWN0b3IubmFtZSksaC5sb2codC50b1N0cmluZygpKSxoLmxvZyh0KSxoLmxvZ0dyb3VwRW5kKCl9KSl9cmV0dXJuIGwub25TYW1lVXJsTmF2aWdhdGlvbiYmKGYub25TYW1lVXJsTmF2aWdhdGlvbj1sLm9uU2FtZVVybE5hdmlnYXRpb24pLGwucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneSYmKGYucGFyYW1zSW5oZXJpdGFuY2VTdHJhdGVneT1sLnBhcmFtc0luaGVyaXRhbmNlU3RyYXRlZ3kpLGwudXJsVXBkYXRlU3RyYXRlZ3kmJihmLnVybFVwZGF0ZVN0cmF0ZWd5PWwudXJsVXBkYXRlU3RyYXRlZ3kpLGwucmVsYXRpdmVMaW5rUmVzb2x1dGlvbiYmKGYucmVsYXRpdmVMaW5rUmVzb2x1dGlvbj1sLnJlbGF0aXZlTGlua1Jlc29sdXRpb24pLGZ9ZnVuY3Rpb24gbWgodCl7cmV0dXJuIHQucm91dGVyU3RhdGUucm9vdH12YXIgX2g9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuaW5qZWN0b3I9dCx0aGlzLmluaXROYXZpZ2F0aW9uPSExLHRoaXMucmVzdWx0T2ZQcmVhY3RpdmF0aW9uRG9uZT1uZXcgUH1yZXR1cm4gdC5wcm90b3R5cGUuYXBwSW5pdGlhbGl6ZXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmluamVjdG9yLmdldChzdSxQcm9taXNlLnJlc29sdmUobnVsbCkpLnRoZW4oKGZ1bmN0aW9uKCl7dmFyIGU9bnVsbCxuPW5ldyBQcm9taXNlKChmdW5jdGlvbih0KXtyZXR1cm4gZT10fSkpLHI9dC5pbmplY3Rvci5nZXQoJGYpLG89dC5pbmplY3Rvci5nZXQobGgpO2lmKHQuaXNMZWdhY3lEaXNhYmxlZChvKXx8dC5pc0xlZ2FjeUVuYWJsZWQobykpZSghMCk7ZWxzZSBpZigiZGlzYWJsZWQiPT09by5pbml0aWFsTmF2aWdhdGlvbilyLnNldFVwTG9jYXRpb25DaGFuZ2VMaXN0ZW5lcigpLGUoITApO2Vsc2V7aWYoImVuYWJsZWQiIT09by5pbml0aWFsTmF2aWdhdGlvbil0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgaW5pdGlhbE5hdmlnYXRpb24gb3B0aW9uczogJyIrby5pbml0aWFsTmF2aWdhdGlvbisiJyIpO3IuaG9va3MuYWZ0ZXJQcmVhY3RpdmF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHQuaW5pdE5hdmlnYXRpb24/UnUobnVsbCk6KHQuaW5pdE5hdmlnYXRpb249ITAsZSghMCksdC5yZXN1bHRPZlByZWFjdGl2YXRpb25Eb25lKX0sci5pbml0aWFsTmF2aWdhdGlvbigpfXJldHVybiBufSkpfSx0LnByb3RvdHlwZS5ib290c3RyYXBMaXN0ZW5lcj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmluamVjdG9yLmdldChsaCksbj10aGlzLmluamVjdG9yLmdldChhaCkscj10aGlzLmluamVjdG9yLmdldCh1aCksbz10aGlzLmluamVjdG9yLmdldCgkZiksaT10aGlzLmluamVjdG9yLmdldChfaSk7dD09PWkuY29tcG9uZW50c1swXSYmKHRoaXMuaXNMZWdhY3lFbmFibGVkKGUpP28uaW5pdGlhbE5hdmlnYXRpb24oKTp0aGlzLmlzTGVnYWN5RGlzYWJsZWQoZSkmJm8uc2V0VXBMb2NhdGlvbkNoYW5nZUxpc3RlbmVyKCksbi5zZXRVcFByZWxvYWRpbmcoKSxyLmluaXQoKSxvLnJlc2V0Um9vdENvbXBvbmVudFR5cGUoaS5jb21wb25lbnRUeXBlc1swXSksdGhpcy5yZXN1bHRPZlByZWFjdGl2YXRpb25Eb25lLm5leHQobnVsbCksdGhpcy5yZXN1bHRPZlByZWFjdGl2YXRpb25Eb25lLmNvbXBsZXRlKCkpfSx0LnByb3RvdHlwZS5pc0xlZ2FjeUVuYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuImxlZ2FjeV9lbmFibGVkIj09PXQuaW5pdGlhbE5hdmlnYXRpb258fCEwPT09dC5pbml0aWFsTmF2aWdhdGlvbnx8dm9pZCAwPT09dC5pbml0aWFsTmF2aWdhdGlvbn0sdC5wcm90b3R5cGUuaXNMZWdhY3lEaXNhYmxlZD1mdW5jdGlvbih0KXtyZXR1cm4ibGVnYWN5X2Rpc2FibGVkIj09PXQuaW5pdGlhbE5hdmlnYXRpb258fCExPT09dC5pbml0aWFsTmF2aWdhdGlvbn0sdH0oKTtmdW5jdGlvbiB3aCh0KXtyZXR1cm4gdC5hcHBJbml0aWFsaXplci5iaW5kKHQpfWZ1bmN0aW9uIGJoKHQpe3JldHVybiB0LmJvb3RzdHJhcExpc3RlbmVyLmJpbmQodCl9dmFyIHhoPW5ldyBUdCgiUm91dGVyIEluaXRpYWxpemVyIiksQ2g9Sm4oe2VuY2Fwc3VsYXRpb246MixzdHlsZXM6W10sZGF0YTp7fX0pO2Z1bmN0aW9uIFNoKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwxNjc3NzIxNixudWxsLG51bGwsMSwicm91dGVyLW91dGxldCIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksb28oMSwyMTI5OTIsbnVsbCwwLGVoLFt0aCxNbixybixbOCxudWxsXSxrZV0sbnVsbCxudWxsKV0sKGZ1bmN0aW9uKHQsZSl7dChlLDEsMCl9KSxudWxsKX1mdW5jdGlvbiBFaCh0KXtyZXR1cm4gJGkoMCxbKHQoKSgpLFZpKDAsMCxudWxsLG51bGwsMSwibmctY29tcG9uZW50IixbXSxudWxsLG51bGwsbnVsbCxTaCxDaCkpLG9vKDEsNDkxNTIsbnVsbCwwLFlzLFtdLG51bGwsbnVsbCldLG51bGwsbnVsbCl9dmFyIE9oPWpyKCJuZy1jb21wb25lbnQiLFlzLEVoLHt9LHt9LFtdKSxUaD1Kbih7ZW5jYXBzdWxhdGlvbjowLHN0eWxlczpbJ1tfbmdob3N0LSVDT01QJV0ge1xuICAgIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICJTZWdvZSBVSSIsIFJvYm90bywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiwgIkFwcGxlIENvbG9yIEVtb2ppIiwgIlNlZ29lIFVJIEVtb2ppIiwgIlNlZ29lIFVJIFN5bWJvbCI7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGNvbG9yOiAjMzMzO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxuXG4gIGgxW19uZ2NvbnRlbnQtJUNPTVAlXSwgaDJbX25nY29udGVudC0lQ09NUCVdLCBoM1tfbmdjb250ZW50LSVDT01QJV0sIGg0W19uZ2NvbnRlbnQtJUNPTVAlXSwgaDVbX25nY29udGVudC0lQ09NUCVdLCBoNltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIG1hcmdpbjogOHB4IDA7XG4gIH1cblxuICBwW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLnNwYWNlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGZsZXg6IDE7XG4gIH1cblxuICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGhlaWdodDogNjBweDtcbiAgICBtYXJnaW46IC04cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIH1cblxuICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICBpbWdbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBtYXJnaW46IDAgMTZweDtcbiAgfVxuXG4gIC50b29sYmFyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICN0d2l0dGVyLWxvZ29bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbWFyZ2luOiAwIDE2cHg7XG4gIH1cblxuICAudG9vbGJhcltfbmdjb250ZW50LSVDT01QJV0gICAjdHdpdHRlci1sb2dvW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG5cbiAgLmNvbnRlbnRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogMzJweCBhdXRvO1xuICAgIHBhZGRpbmc6IDAgMTZweDtcbiAgICBtYXgtd2lkdGg6IDk2MHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIHN2Zy5tYXRlcmlhbC1pY29uc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGhlaWdodDogMjRweDtcbiAgICB3aWR0aDogYXV0bztcbiAgfVxuXG4gIHN2Zy5tYXRlcmlhbC1pY29uc1tfbmdjb250ZW50LSVDT01QJV06bm90KDpsYXN0LWNoaWxkKSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cblxuICAuY2FyZFtfbmdjb250ZW50LSVDT01QJV0gICBzdmcubWF0ZXJpYWwtaWNvbnNbX25nY29udGVudC0lQ09NUCVdICAgcGF0aFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGZpbGw6ICM4ODg7XG4gIH1cblxuICAuY2FyZC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAxNnB4O1xuICB9XG5cbiAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmYWZhO1xuICAgIGhlaWdodDogNDBweDtcbiAgICB3aWR0aDogMjAwcHg7XG4gICAgbWFyZ2luOiAwIDhweCAxNnB4O1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZS1pbi1vdXQ7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIH1cblxuICAuY2FyZC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdCg6bGFzdC1jaGlsZCkge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuXG4gIC5jYXJkLmNhcmQtc21hbGxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgd2lkdGg6IDE2OHB4O1xuICB9XG5cbiAgLmNhcmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmhpZ2hsaWdodC1jYXJkKSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG5cbiAgLmNhcmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmhpZ2hsaWdodC1jYXJkKTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE3cHggcmdiYShibGFjaywgMC4zNSk7XG4gIH1cblxuICAuY2FyZC1jb250YWluZXJbX25nY29udGVudC0lQ09NUCVdICAgLmNhcmRbX25nY29udGVudC0lQ09NUCVdOm5vdCguaGlnaGxpZ2h0LWNhcmQpOmhvdmVyICAgLm1hdGVyaWFsLWljb25zW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHBhdGhbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBmaWxsOiByZ2IoMTA1LCAxMDMsIDEwMyk7XG4gIH1cblxuICAuY2FyZC5oaWdobGlnaHQtY2FyZFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTc2ZDI7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1pbi13aWR0aDogMzAlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5jYXJkLmNhcmQuaGlnaGxpZ2h0LWNhcmRbX25nY29udGVudC0lQ09NUCVdICAgc3Bhbltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIG1hcmdpbi1sZWZ0OiA2MHB4O1xuICB9XG5cbiAgc3ZnI3JvY2tldFtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIHdpZHRoOiA4MHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAtMTBweDtcbiAgICB0b3A6IC0yNHB4O1xuICB9XG5cbiAgc3ZnI3JvY2tldC1zbW9rZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGhlaWdodDogMTAwdmg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTBweDtcbiAgICByaWdodDogMTgwcHg7XG4gICAgei1pbmRleDogLTEwO1xuICB9XG5cbiAgYVtfbmdjb250ZW50LSVDT01QJV0sIGFbX25nY29udGVudC0lQ09NUCVdOnZpc2l0ZWQsIGFbX25nY29udGVudC0lQ09NUCVdOmhvdmVyIHtcbiAgICBjb2xvcjogIzE5NzZkMjtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICBhW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gICAgY29sb3I6ICMxMjU2OTk7XG4gIH1cblxuICAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDgwJTtcbiAgICBtYXgtd2lkdGg6IDYwMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nLXRvcDogNDVweDtcbiAgICBtYXJnaW4tdG9wOiA4cHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTUsIDE1LCAxNik7XG4gIH1cblxuICAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICJcXDIwMjIgXFwyMDIyIFxcMjAyMiI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYig1OCwgNTgsIDU4KTtcbiAgICBjb2xvcjogI2MyYzNjNDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IDJyZW07XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgcGFkZGluZzogMTRweCAwO1xuICAgIHRleHQtaW5kZW50OiA0cHg7XG4gIH1cblxuICAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdICAgcHJlW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLENvbnNvbGFzLExpYmVyYXRpb24gTW9ubyxNZW5sbyxtb25vc3BhY2U7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDAgMXJlbSAxcmVtO1xuIA=="
},
{
"key": "qwe?main.e3350ff4d88d534234ef.js?4?4?2",
"type": "binary",
"value": "base64:ICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLmNpcmNsZS1saW5rW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7XG4gICAgbWFyZ2luOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2VlZWVlZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMTIpLCAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjI0KTtcbiAgICB0cmFuc2l0aW9uOiAxcyBlYXNlLW91dDtcbiAgfVxuXG4gIC5jaXJjbGUtbGlua1tfbmdjb250ZW50LSVDT01QJV06aG92ZXIge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC4yNXJlbSk7XG4gICAgYm94LXNoYWRvdzogMHB4IDNweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTtcbiAgfVxuXG4gIGZvb3Rlcltfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIH1cblxuICBmb290ZXJbX25nY29udGVudC0lQ09NUCVdICAgYVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxuXG4gIC5naXRodWItc3Rhci1iYWRnZVtfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIGNvbG9yOiAjMjQyOTJlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgcGFkZGluZzogM3B4IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNywzMSwzNSwuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtMTgwZGVnLCNmYWZiZmMsI2VmZjNmNiA5MCUpO1xuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsQXBwbGUgQ29sb3IgRW1vamksU2Vnb2UgVUkgRW1vamksU2Vnb2UgVUkgU3ltYm9sO1xuICB9XG5cbiAgLmdpdGh1Yi1zdGFyLWJhZGdlW19uZ2NvbnRlbnQtJUNPTVAlXTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KC0xODBkZWcsI2YwZjNmNiwjZTZlYmYxIDkwJSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI3LDMxLDM1LC4zNSk7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLS41ZW07XG4gIH1cblxuICAuZ2l0aHViLXN0YXItYmFkZ2VbX25nY29udGVudC0lQ09NUCVdICAgLm1hdGVyaWFsLWljb25zW19uZ2NvbnRlbnQtJUNPTVAlXSB7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIG1hcmdpbi1yaWdodDogNHB4O1xuICB9XG5cbiAgc3ZnI2Nsb3Vkc1tfbmdjb250ZW50LSVDT01QJV0ge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBib3R0b206IC0xNjBweDtcbiAgICBsZWZ0OiAtMjMwcHg7XG4gICAgei1pbmRleDogLTEwO1xuICAgIHdpZHRoOiAxOTIwcHg7XG4gIH1cblxuXG4gIFxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuXG4gICAgLmNhcmQtY29udGFpbmVyW19uZ2NvbnRlbnQtJUNPTVAlXSAgICA+ICpbX25nY29udGVudC0lQ09NUCVdOm5vdCguY2lyY2xlLWxpbmspLCAudGVybWluYWxbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXTpub3QoLmhpZ2hsaWdodC1jYXJkKSB7XG4gICAgICBoZWlnaHQ6IDE2cHg7XG4gICAgICBtYXJnaW46IDhweCAwO1xuICAgIH1cblxuICAgIC5jYXJkLmhpZ2hsaWdodC1jYXJkW19uZ2NvbnRlbnQtJUNPTVAlXSAgIHNwYW5bX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiA3MnB4O1xuICAgIH1cblxuICAgIHN2ZyNyb2NrZXQtc21va2VbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIHJpZ2h0OiAxMjBweDtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKTtcbiAgICB9XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAgIHN2ZyNyb2NrZXQtc21va2VbX25nY29udGVudC0lQ09NUCVdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgfVxuICB9JyxbIiJdXSxkYXRhOnt9fSk7ZnVuY3Rpb24gUGgodCl7cmV0dXJuICRpKDAsWyh0KCkoKSxWaSgwLDAsbnVsbCxudWxsLDEsInByZSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJuZyBnZW5lcmF0ZSBjb21wb25lbnQgeHl6Il0pKV0sbnVsbCxudWxsKX1mdW5jdGlvbiBraCh0KXtyZXR1cm4gJGkoMCxbKHQoKSgpLFZpKDAsMCxudWxsLG51bGwsMSwicHJlIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIm5nIGFkZCBAYW5ndWxhci9tYXRlcmlhbCJdKSldLG51bGwsbnVsbCl9ZnVuY3Rpb24gQWgodCl7cmV0dXJuICRpKDAsWyh0KCkoKSxWaSgwLDAsbnVsbCxudWxsLDEsInByZSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJuZyBhZGQgX19fX18iXSkpXSxudWxsLG51bGwpfWZ1bmN0aW9uIEloKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwwLG51bGwsbnVsbCwxLCJwcmUiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsibmcgdGVzdCJdKSldLG51bGwsbnVsbCl9ZnVuY3Rpb24gUmgodCl7cmV0dXJuICRpKDAsWyh0KCkoKSxWaSgwLDAsbnVsbCxudWxsLDEsInByZSIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJuZyBidWlsZCAtLXByb2QiXSkpXSxudWxsLG51bGwpfWZ1bmN0aW9uIE1oKHQpe3JldHVybiAkaSgwLFsodCgpKCksVmkoMCwwLG51bGwsbnVsbCwxMSwiZGl2IixbWyJjbGFzcyIsInRvb2xiYXIiXSxbInJvbGUiLCJiYW5uZXIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDEsMCxudWxsLG51bGwsMCwiaW1nIixbWyJhbHQiLCJBbmd1bGFyIExvZ28iXSxbInNyYyIsImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdNQ0F5TlRBZ01qVXdJajRLSUNBZ0lEeHdZWFJvSUdacGJHdzlJaU5FUkRBd016RWlJR1E5SWsweE1qVWdNekJNTXpFdU9TQTJNeTR5YkRFMExqSWdNVEl6TGpGTU1USTFJREl6TUd3M09DNDVMVFF6TGpjZ01UUXVNaTB4TWpNdU1Yb2lJQzgrQ2lBZ0lDQThjR0YwYUNCbWFXeHNQU0lqUXpNd01ESkdJaUJrUFNKTk1USTFJRE13ZGpJeUxqSXRMakZXTWpNd2JEYzRMamt0TkRNdU55QXhOQzR5TFRFeU15NHhUREV5TlNBek1Ib2lJQzgrQ2lBZ0lDQThjR0YwYUNBZ1ptbHNiRDBpSTBaR1JrWkdSaUlnWkQwaVRURXlOU0ExTWk0eFREWTJMamdnTVRneUxqWm9NakV1TjJ3eE1TNDNMVEk1TGpKb05Ea3VOR3d4TVM0M0lESTVMakpJTVRnelRERXlOU0ExTWk0eGVtMHhOeUE0TXk0emFDMHpOR3d4TnkwME1DNDVJREUzSURRd0xqbDZJaUF2UGdvZ0lEd3ZjM1puUGc9PSJdLFsid2lkdGgiLCI0MCJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMiwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIldlbGNvbWUiXSkpLCh0KCkoKSxWaSg0LDAsbnVsbCxudWxsLDAsImRpdiIsW1siY2xhc3MiLCJzcGFjZXIiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDUsMCxudWxsLG51bGwsNiwiYSIsW1siYXJpYS1sYWJlbCIsIkFuZ3VsYXIgb24gdHdpdHRlciJdLFsiaHJlZiIsImh0dHBzOi8vdHdpdHRlci5jb20vYW5ndWxhciJdLFsicmVsIiwibm9vcGVuZXIiXSxbInRhcmdldCIsIl9ibGFuayJdLFsidGl0bGUiLCJUd2l0dGVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg2LDAsbnVsbCxudWxsLDUsIjpzdmc6c3ZnIixbWyJkYXRhLW5hbWUiLCJMb2dvIOKAlCBGSVhFRCJdLFsiaGVpZ2h0IiwiMjQiXSxbImlkIiwidHdpdHRlci1sb2dvIl0sWyJ2aWV3Qm94IiwiMCAwIDQwMCA0MDAiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDcsMCxudWxsLG51bGwsMiwiOnN2ZzpkZWZzIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoOCwwLG51bGwsbnVsbCwxLCI6c3ZnOnN0eWxlIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIiAuY2xzLTEgeyBmaWxsOiBub25lOyB9IC5jbHMtMiB7IGZpbGw6ICNmZmZmZmY7IH0gIl0pKSwodCgpKCksVmkoMTAsMCxudWxsLG51bGwsMCwiOnN2ZzpyZWN0IixbWyJjbGFzcyIsImNscy0xIl0sWyJoZWlnaHQiLCI0MDAiXSxbIndpZHRoIiwiNDAwIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImNsYXNzIiwiY2xzLTIiXSxbImQiLCJNMTUzLjYyLDMwMS41OWM5NC4zNCwwLDE0NS45NC03OC4xNiwxNDUuOTQtMTQ1Ljk0LDAtMi4yMiwwLTQuNDMtLjE1LTYuNjNBMTA0LjM2LDEwNC4zNiwwLDAsMCwzMjUsMTIyLjQ3YTEwMi4zOCwxMDIuMzgsMCwwLDEtMjkuNDYsOC4wNyw1MS40Nyw1MS40NywwLDAsMCwyMi41NS0yOC4zNywxMDIuNzksMTAyLjc5LDAsMCwxLTMyLjU3LDEyLjQ1LDUxLjM0LDUxLjM0LDAsMCwwLTg3LjQxLDQ2Ljc4QTE0NS42MiwxNDUuNjIsMCwwLDEsOTIuNCwxMDcuODFhNTEuMzMsNTEuMzMsMCwwLDAsMTUuODgsNjguNDdBNTAuOTEsNTAuOTEsMCwwLDEsODUsMTY5Ljg2YzAsLjIxLDAsLjQzLDAsLjY1YTUxLjMxLDUxLjMxLDAsMCwwLDQxLjE1LDUwLjI4LDUxLjIxLDUxLjIxLDAsMCwxLTIzLjE2Ljg4LDUxLjM1LDUxLjM1LDAsMCwwLDQ3LjkyLDM1LjYyLDEwMi45MiwxMDIuOTIsMCwwLDEtNjMuNywyMkExMDQuNDEsMTA0LjQxLDAsMCwxLDc1LDI3OC41NWExNDUuMjEsMTQ1LjIxLDAsMCwwLDc4LjYyLDIzIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxMiwwLG51bGwsbnVsbCwxNDMsImRpdiIsW1siY2xhc3MiLCJjb250ZW50Il0sWyJyb2xlIiwibWFpbiJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTMsMCxudWxsLG51bGwsMTAsImRpdiIsW1siY2xhc3MiLCJjYXJkIGhpZ2hsaWdodC1jYXJkIGNhcmQtc21hbGwiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE0LDAsbnVsbCxudWxsLDUsIjpzdmc6c3ZnIixbWyJhbHQiLCJSb2NrZXQgU2hpcCJdLFsiaGVpZ2h0IiwiMTAxLjY3OCJdLFsiaWQiLCJyb2NrZXQiXSxbInZpZXdCb3giLCIwIDAgMTAxLjY3OCAxMDEuNjc4Il0sWyJ3aWR0aCIsIjEwMS42NzgiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDE1LDAsbnVsbCxudWxsLDQsIjpzdmc6ZyIsW1siZGF0YS1uYW1lIiwiR3JvdXAgODMiXSxbImlkIiwiR3JvdXBfODMiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMTQxIC02OTYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxNiwwLG51bGwsbnVsbCwwLCI6c3ZnOmNpcmNsZSIsW1siY3giLCI1MC44MzkiXSxbImN5IiwiNTAuODM5Il0sWyJkYXRhLW5hbWUiLCJFbGxpcHNlIDgiXSxbImZpbGwiLCIjZGQwMDMxIl0sWyJpZCIsIkVsbGlwc2VfOCJdLFsiciIsIjUwLjgzOSJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDE0MSA2OTYpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxNywwLG51bGwsbnVsbCwyLCI6c3ZnOmciLFtbImRhdGEtbmFtZSIsIkdyb3VwIDQ3Il0sWyJpZCIsIkdyb3VwXzQ3Il0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMTY1LjE4NSA3MjAuMTg1KSJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMTgsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTMuNCw0Mi42MTVhMy4wODQsMy4wODQsMCwwLDAsMy41NTMsMy41NTMsMjEuNDE5LDIxLjQxOSwwLDAsMCwxMi4yMTUtNi4xMDdMOS41MTEsMzAuNEEyMS40MTksMjEuNDE5LDAsMCwwLDMuNCw0Mi42MTVaIl0sWyJkYXRhLW5hbWUiLCJQYXRoIDMzIl0sWyJmaWxsIiwiI2ZmZiJdLFsiaWQiLCJQYXRoXzMzIl0sWyJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMC4zNzEgMy4zNjMpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgxOSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNNTMuMywzLjIyMUEzLjA5LDMuMDksMCwwLDAsNTAuMDgxLDAsNDguMjI3LDQ4LjIyNywwLDAsMCwxOC4zMjIsMTMuNDM3Yy02LTEuNjY2LTE0Ljk5MS0xLjIyMS0xOC4zMjIsNy4yMThBMzMuODkyLDMzLjg5MiwwLDAsMSw5LjQzOSwyNS4xbC0uMzMzLjY2NmEzLjAxMywzLjAxMywwLDAsMCwuNTU1LDMuNTUzTDIzLjk4NSw0My42NDFhMi45LDIuOSwwLDAsMCwzLjU1My41NTVsLjY2Ni0uMzMzQTMzLjg5MiwzMy44OTIsMCwwLDEsMzIuNjQ3LDUzLjNjOC41NS0zLjY2NCw4Ljg4NC0xMi4zMjYsNy4yMTgtMTguMzIyQTQ4LjIyNyw0OC4yMjcsMCwwLDAsNTMuMywzLjIyMVpNMzQuNDI0LDkuNzcyYTYuNDM5LDYuNDM5LDAsMSwxLDkuMTA2LDkuMTA2LDYuMzY4LDYuMzY4LDAsMCwxLTkuMTA2LDBBNi40NjcsNi40NjcsMCwwLDEsMzQuNDI0LDkuNzcyWiJdLFsiZGF0YS1uYW1lIiwiUGF0aCAzNCJdLFsiZmlsbCIsIiNmZmYiXSxbImlkIiwiUGF0aF8zNCJdLFsidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAgMC4wMDUpIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgyMCwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koMjEsbnVsbCxbIiIsIiBhcHAgaXMgcnVubmluZyEiXSkpLCh0KCkoKSxWaSgyMiwwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siYWx0IiwiUm9ja2V0IFNoaXAgU21va2UiXSxbImhlaWdodCIsIjEwODMuNjMyIl0sWyJpZCIsInJvY2tldC1zbW9rZSJdLFsidmlld0JveCIsIjAgMCA1MTYuMTE5IDEwODMuNjMyIl0sWyJ3aWR0aCIsIjUxNi4xMTkiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDIzLDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk02NDQuNiwxNDFTMTQzLjAyLDIxNS41MzcsMTQ3LjA0OSw4NzAuMjA3czM0Mi43NzQsMjAxLjc1NSwzNDIuNzc0LDIwMS43NTVTNDA0LjY1OSw4NDcuMjEzLDM4OC44MTUsNzYyLjJjLTI3LjExNi0xNDUuNTEtMTEuNTUxLTM4NC4xMjQsMjcxLjktNjA5LjFDNjcxLjE1LDEzOS4zNjUsNjQ0LjYsMTQxLDY0NC42LDE0MVoiXSxbImRhdGEtbmFtZSIsIlBhdGggNDAiXSxbImZpbGwiLCIjZjVmNWY1Il0sWyJpZCIsIlBhdGhfNDAiXSxbInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtMTQ3LjAyNSAtMTQwLjkzOSkiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDI0LDAsbnVsbCxudWxsLDEsImgyIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIlJlc291cmNlcyJdKSksKHQoKSgpLFZpKDI2LDAsbnVsbCxudWxsLDEsInAiLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiSGVyZSBhcmUgc29tZSBsaW5rcyB0byBoZWxwIHlvdSBnZXQgc3RhcnRlZDoiXSkpLCh0KCkoKSxWaSgyOCwwLG51bGwsbnVsbCwyMSwiZGl2IixbWyJjbGFzcyIsImNhcmQtY29udGFpbmVyIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgyOSwwLG51bGwsbnVsbCw2LCJhIixbWyJjbGFzcyIsImNhcmQiXSxbImhyZWYiLCJodHRwczovL2FuZ3VsYXIuaW8vdHV0b3JpYWwiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDMwLDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMzEsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTUgMTMuMTh2NEwxMiAyMWw3LTMuODJ2LTRMMTIgMTdsLTctMy44MnpNMTIgM0wxIDlsMTEgNiA5LTQuOTFWMTdoMlY5TDEyIDN6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgzMiwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIkxlYXJuIEFuZ3VsYXIiXSkpLCh0KCkoKSxWaSgzNCwwLG51bGwsbnVsbCwxLCI6c3ZnOnN2ZyIsW1siY2xhc3MiLCJtYXRlcmlhbC1pY29ucyJdLFsiaGVpZ2h0IiwiMjQiXSxbInZpZXdCb3giLCIwIDAgMjQgMjQiXSxbIndpZHRoIiwiMjQiXSxbInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDM1LDAsbnVsbCxudWxsLDAsIjpzdmc6cGF0aCIsW1siZCIsIk0xMCA2TDguNTkgNy40MSAxMy4xNyAxMmwtNC41OCA0LjU5TDEwIDE4bDYtNnoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDM2LDAsbnVsbCxudWxsLDYsImEiLFtbImNsYXNzIiwiY2FyZCJdLFsiaHJlZiIsImh0dHBzOi8vYW5ndWxhci5pby9jbGkiXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDM3LDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoMzgsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTkuNCAxNi42TDQuOCAxMmw0LjYtNC42TDggNmwtNiA2IDYgNiAxLjQtMS40em01LjIgMGw0LjYtNC42LTQuNi00LjZMMTYgNmw2IDYtNiA2LTEuNC0xLjR6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSgzOSwwLG51bGwsbnVsbCwxLCJzcGFuIixbXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksS2koLTEsbnVsbCxbIkNMSSBEb2N1bWVudGF0aW9uIl0pKSwodCgpKCksVmkoNDEsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImNsYXNzIiwibWF0ZXJpYWwtaWNvbnMiXSxbImhlaWdodCIsIjI0Il0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0Il0sWyJ3aWR0aCIsIjI0Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg0MiwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg0MywwLG51bGwsbnVsbCw2LCJhIixbWyJjbGFzcyIsImNhcmQiXSxbImhyZWYiLCJodHRwczovL2Jsb2cuYW5ndWxhci5pby8iXSxbInJlbCIsIm5vb3BlbmVyIl0sWyJ0YXJnZXQiLCJfYmxhbmsiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDQ0LDAsbnVsbCxudWxsLDEsIjpzdmc6c3ZnIixbWyJjbGFzcyIsIm1hdGVyaWFsLWljb25zIl0sWyJoZWlnaHQiLCIyNCJdLFsidmlld0JveCIsIjAgMCAyNCAyNCJdLFsid2lkdGgiLCIyNCJdLFsieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJdXSxudWxsLG51bGwsbnVsbCxudWxsLG51bGwpKSwodCgpKCksVmkoNDUsMCxudWxsLG51bGwsMCwiOnN2ZzpwYXRoIixbWyJkIiwiTTEzLjUuNjdzLjc0IDIuNjUuNzQgNC44YzAgMi4wNi0xLjM1IDMuNzMtMy40MSAzLjczLTIuMDcgMC0zLjYzLTEuNjctMy42My0zLjczbC4wMy0uMzZDNS4yMSA3LjUxIDQgMTAuNjIgNCAxNGMwIDQuNDIgMy41OCA4IDggOHM4LTMuNTggOC04QzIwIDguNjEgMTcuNDEgMy44IDEzLjUuNjd6TTExLjcxIDE5Yy0xLjc4IDAtMy4yMi0xLjQtMy4yMi0zLjE0IDAtMS42MiAxLjA1LTIuNzYgMi44MS0zLjEyIDEuNzctLjM2IDMuNi0xLjIxIDQuNjItMi41OC4zOSAxLjI5LjU5IDIuNjUuNTkgNC4wNCAwIDIuNjUtMi4xNSA0LjgtNC44IDQuOHoiXV0sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLFZpKDQ2LDAsbnVsbCxudWxsLDEsInNwYW4iLFtdLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxLaSgtMSxudWxsLFsiQW5ndWxhciBCbG9nIl0pKSwodCgpKCksVmkoNDgsMCxudWxsLG51bGwsMSwiOnN2ZzpzdmciLFtbImNsYXNzIiwibWF0ZXJpYWwtaWNvbnMiXSxbImhlaWdodCIsIjI0Il0sWyJ2aWV3Qm94IiwiMCAwIDI0IDI0Il0sWyJ3aWR0aCIsIjI0Il0sWyJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIl1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg0OSwwLG51bGwsbnVsbCwwLCI6c3ZnOnBhdGgiLFtbImQiLCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6Il1dLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCkpLCh0KCkoKSxWaSg1MCwwLG51bGwsbnVsbCwxLCJoMiIsW10sbnVsbCxudWxsLG51bGwsbnVsbCxudWxsKSksKHQoKSgpLEtpKC0xLG51bGwsWyJOZXh0IFN0ZXBzIl0pKSwodCgpKCksVmkoNTIsMCxudWxsLG51bGwsMSwicCIsW10sbnU="
}
]
},
{
"type": 7,
"id": "C8hBSCVbqoztAvo6J2oyLE4sDmqu9nL3bNmJpKuzMpNh",
"fee": 1800000,
"feeAssetId": null,
"timestamp": 1575393744369,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"3SwPSjPSixrGje9NAYypdJi1gAKDM7S9RaNoq3hebnbCLSRjfLeF3ABxtm1CiTbXMhFyzR21MMtZVqGZQ9fHqNNH"
],
"order1": {
"version": 2,
"id": "5ExPTghDiYeJRV2MVcmYLwJ5h9ptcGpcabqbxMib3rqk",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": null,
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "buy",
"amount": 122063128,
"price": 8009,
"timestamp": 1575393744284,
"expiration": 1577899344284,
"matcherFee": 700000,
"signature": "2Yv855Y2YBgD38JF4eyep8PAChBznrdq9DQLaGkHqJ7gWKa7f8mbD4KGcLS23x46sGtkE7yfvWKmkwZXzxzTSao9",
"proofs": [
"2Yv855Y2YBgD38JF4eyep8PAChBznrdq9DQLaGkHqJ7gWKa7f8mbD4KGcLS23x46sGtkE7yfvWKmkwZXzxzTSao9"
]
},
"order2": {
"version": 2,
"id": "EtpuUK63P9bBew9tptzBp75Wp1MR6N6Qm4h6WeDVxAGX",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": null,
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "sell",
"amount": 122063128,
"price": 8009,
"timestamp": 1575393743664,
"expiration": 1577899343664,
"matcherFee": 700000,
"signature": "53x3YksNyG7d1aRZCSA2TXxuWx2roA1ZM9kxHuMUSeKiJgNRwgDxH8k84Ah8sY4DiGKLn2fi6K77Q56ETcpYpV8K",
"proofs": [
"53x3YksNyG7d1aRZCSA2TXxuWx2roA1ZM9kxHuMUSeKiJgNRwgDxH8k84Ah8sY4DiGKLn2fi6K77Q56ETcpYpV8K"
]
},
"amount": 122062680,
"price": 8009,
"buyMatcherFee": 699997,
"sellMatcherFee": 699997
},
{
"type": 7,
"id": "4gWUBLeZPwVUAf4Z6vLYvRAYtfbhNvk3RT6356PCEt2X",
"fee": 1800000,
"feeAssetId": null,
"timestamp": 1575393750610,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"47c9LcW3PVj1JkwTAazSc2SRg6tbJVkHf8oHrZznceNokKqgSbq934goaQuiB5VXJtFTrLTCALqCXu1SpAEsKex9"
],
"order1": {
"version": 2,
"id": "FvDBy4BDxZ5CZVpfTSbxXx7r3aEgxDwFKUKPA7g2xUJ",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "HUdXNRE4VcCx64PCPYwh6KL2cxvRaKcR8bXe3Ar9fG4p",
"priceAsset": null
},
"orderType": "buy",
"amount": 51529448,
"price": 3719394900,
"timestamp": 1575393750039,
"expiration": 1577899350039,
"matcherFee": 700000,
"signature": "2r6frvpmytVJj2uyHmEQK6RUKKVGHJ1Cs1rS7iee6LF8ujfNVizi8BvVt1vpjzmTZrUYREdxsjYcic4mw5wjNz2V",
"proofs": [
"2r6frvpmytVJj2uyHmEQK6RUKKVGHJ1Cs1rS7iee6LF8ujfNVizi8BvVt1vpjzmTZrUYREdxsjYcic4mw5wjNz2V"
]
},
"order2": {
"version": 2,
"id": "87k5NczNHycHtiveHPbi5GyieomhsRumyUiKBZjLhy6p",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "HUdXNRE4VcCx64PCPYwh6KL2cxvRaKcR8bXe3Ar9fG4p",
"priceAsset": null
},
"orderType": "sell",
"amount": 51529448,
"price": 3719394900,
"timestamp": 1575393750533,
"expiration": 1577899350533,
"matcherFee": 700000,
"signature": "5QsQmgfjdhgrnzaDuDL6rcTA6BFqqPKyThceA3donMipyyi58sEWG4M7sHj4Ek3VzgQbd7aZJ475mdfmv3sMjrRa",
"proofs": [
"5QsQmgfjdhgrnzaDuDL6rcTA6BFqqPKyThceA3donMipyyi58sEWG4M7sHj4Ek3VzgQbd7aZJ475mdfmv3sMjrRa"
]
},
"amount": 51529448,
"price": 3719394900,
"buyMatcherFee": 700000,
"sellMatcherFee": 700000
},
{
"type": 7,
"id": "8cscwfffQTM98np9Qr96QnBi6awDa5S864sQmRgNZmNH",
"fee": 2200000,
"feeAssetId": null,
"timestamp": 1575393756095,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"2WweNfpu4xiKgzkxFssM7xxVc8wdUkQA1We5s5uFbFQfhn8VX1aD3Kw8g6kYYRBxYrmSuMCSDN2NUshS7XAoJQH1"
],
"order1": {
"version": 2,
"id": "6MYwF3nouG9sNBNHrjar4BMKGPiR5cFa8UiJ8jfXcTto",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn",
"priceAsset": "C7NpjX1zJ1JrSGw8AvpBwfwUHU44a2u6mhCjdkJgXgrT"
},
"orderType": "buy",
"amount": 378,
"price": 733869723724,
"timestamp": 1575393756013,
"expiration": 1577899356013,
"matcherFee": 1100000,
"signature": "3tt536Lr9ji3r4RsEL15VHMJkVp2sTchsccgB6trLqYuetDFBTajqVgkWSt9YDU65ZQERrQYfgohwswEfLzD8vbf",
"proofs": [
"3tt536Lr9ji3r4RsEL15VHMJkVp2sTchsccgB6trLqYuetDFBTajqVgkWSt9YDU65ZQERrQYfgohwswEfLzD8vbf"
]
},
"order2": {
"version": 2,
"id": "95TzkJEAUYScMAByDLK31J63c7Fb93ZBb9m5TZfeCRfC",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn",
"priceAsset": "C7NpjX1zJ1JrSGw8AvpBwfwUHU44a2u6mhCjdkJgXgrT"
},
"orderType": "sell",
"amount": 378,
"price": 733869723724,
"timestamp": 1575393755423,
"expiration": 1577899355423,
"matcherFee": 1100000,
"signature": "gsXryg1qaV76qYPDrFNEUjTEeBn13TcMWtifZqGRFYXB4tTUKLTETU5zDv6j2aBvucoxnCkU1ooKdC2HUSTTX4F",
"proofs": [
"gsXryg1qaV76qYPDrFNEUjTEeBn13TcMWtifZqGRFYXB4tTUKLTETU5zDv6j2aBvucoxnCkU1ooKdC2HUSTTX4F"
]
},
"amount": 378,
"price": 733869723724,
"buyMatcherFee": 1100000,
"sellMatcherFee": 1100000
},
{
"type": 7,
"id": "AzsAUQgoEgnpUtmV94apSJerJzLdt9VpnZSqcbm3e8bX",
"fee": 2200000,
"feeAssetId": null,
"timestamp": 1575393764910,
"version": 2,
"sender": "3Ms8fSfAxBLDjKvNVgACRzQoBLCtCWxtawu",
"senderPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"proofs": [
"mkbWdDJsR9nfx3MSVUjinW4Z6ygsycaA5JmCXHtjR3UwYrSCuhHojyWhCCnzKeE9GtkjL4L7kSKsaZ7wZ9w4KYb"
],
"order1": {
"version": 2,
"id": "5We7qcTphbroctEpAfRThY6QFMpB3mzwADLM8zpAuPC4",
"sender": "3MpNLGecnvHTgmGnrP1j85QWKHD7r5wK6Sy",
"senderPublicKey": "Ht98tMp8f3ZKijjTChB2Sa9cCqfdAxoY1BRL8eStaN34",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Co11Tbj83TeZCnuXrZQwv6Bs4XG2sm1vGQiQ4FLDjJWs",
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "buy",
"amount": 13548363,
"price": 2024550,
"timestamp": 1575393764162,
"expiration": 1577899364162,
"matcherFee": 1100000,
"signature": "475hY5MvsTmyudhyriEQVpzwnkJHCgy9X3pe2f7wHEHhBiebpfnmwVNd43d2g1gQdWJ4nfWoJYUpnEU3ZN76ppyD",
"proofs": [
"475hY5MvsTmyudhyriEQVpzwnkJHCgy9X3pe2f7wHEHhBiebpfnmwVNd43d2g1gQdWJ4nfWoJYUpnEU3ZN76ppyD"
]
},
"order2": {
"version": 2,
"id": "6Sm5GsM3Ukm8j2wJ4m8T9nFUjSiELBsxcp3QkWL8rtTQ",
"sender": "3N464q3vS7SCFzhDbYiTAKR9DVbZMnwNQTz",
"senderPublicKey": "7wuxSVYhMVtNq12nHX8wsn8wkC5osPZXRJ6hhJoutNKB",
"matcherPublicKey": "6d1nbhBxLCxjUyL9xXcX2VVxj2kcKiYny7VqH4FwbApv",
"assetPair": {
"amountAsset": "Co11Tbj83TeZCnuXrZQwv6Bs4XG2sm1vGQiQ4FLDjJWs",
"priceAsset": "Emn8cyGDFgnLCKLTXqVWhKJARhtR2muBUuZaSmqNzDfn"
},
"orderType": "sell",
"amount": 13548363,
"price": 2024550,
"timestamp": 1575393764825,
"expiration": 1577899364825,
"matcherFee": 1100000,
"signature": "3hT9e2EncEcxZMhuCH4azvcxrbfVUQVv9YrzLdKSQUHkSBhYA3o57f5VuUvSmfXvnjuLE1n1rTS7hpFCrsbw2CUP",
"proofs": [
"3hT9e2EncEcxZMhuCH4azvcxrbfVUQVv9YrzLdKSQUHkSBhYA3o57f5VuUvSmfXvnjuLE1n1rTS7hpFCrsbw2CUP"
]
},
"amount": 13548345,
"price": 2024550,
"buyMatcherFee": 1099998,
"sellMatcherFee": 1099998
}
]
}