@vtj/pro 0.8.91 → 0.8.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@vtj/materials/assets/antdv/index.umd.js +2 -2
- package/dist/@vtj/materials/assets/charts/index.umd.js +2 -2
- package/dist/@vtj/materials/assets/element/index.umd.js +2 -2
- package/dist/@vtj/materials/assets/ui/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/charts/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/icons/index.umd.js +2 -2
- package/dist/@vtj/materials/deps/@vtj/ui/index.umd.js +3 -3
- package/dist/@vtj/materials/deps/@vtj/utils/index.umd.js +19 -19
- package/dist/@vtj/materials/deps/vue/vue.global.prod.js +6 -6
- package/dist/assets/{@element-plus-DOIBKHWA.js → @element-plus-Cgg_PG6o.js} +1 -1
- package/dist/assets/@vue-BMgKlbMt.js +29 -0
- package/dist/assets/{@vueuse-Cpfo139p.js → @vueuse-Da6sINV5.js} +1 -1
- package/dist/assets/{Editor-DjXowHju-DZgD7aKd.js → Editor-Dtm2GYTx-BAttFuUH.js} +1 -1
- package/dist/assets/{css.worker-DsXsg0f9-CEcCZxtT.js → css.worker-CR2iVKPT-BaTqWy85.js} +1 -1
- package/dist/assets/{editor.worker-C6rtsk95-XsdejOxF.js → editor.worker-B3qW_3p_-B11RYRPo.js} +1 -1
- package/dist/assets/{element-plus-CBB2HTOK.js → element-plus-CJN-gD58.js} +1 -1
- package/dist/assets/{extension-CS9YvITT.js → extension-nTnTqQUl.js} +49 -49
- package/dist/assets/{html.worker-DOZaicN7-Dzznz_ni.js → html.worker-LqL7r0rA-3U9Bjz6a.js} +1 -1
- package/dist/assets/{index-CJLWo3b0.js → index-BatgCnAt.js} +2 -2
- package/dist/assets/{index-hVRl253k.js → index-bTb23IoD.js} +1 -1
- package/dist/assets/{json.worker-Bm0JMgNu-DV_Vc8JJ.js → json.worker-CIGjlMXB-odpG_8-U.js} +1 -1
- package/dist/assets/{preview-BOSHGJxr.js → preview-DP4a059W.js} +2 -2
- package/dist/assets/{ts.worker-CdTDJbmm-BhFdT8k5.js → ts.worker-CJ90jexB-BCB1mae0.js} +1 -1
- package/dist/assets/{vue-BEpF3lV5.js → vue-C1-U25CX.js} +2 -2
- package/dist/assets/{vue-router-CbemHIRz.js → vue-router-Bq8aHj2u.js} +1 -1
- package/dist/index.html +6 -6
- package/package.json +11 -11
- package/dist/assets/@vue-CBNdbwf4.js +0 -29
package/dist/assets/{editor.worker-C6rtsk95-XsdejOxF.js → editor.worker-B3qW_3p_-B11RYRPo.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
const c="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NsYXNzIFhye2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0ZW5lcnM9W10sdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoKCk9Pnt0aHJvdyB0LnN0YWNrP0FlLmlzRXJyb3JOb1RlbGVtZXRyeSh0KT9uZXcgQWUodC5tZXNzYWdlK2AKCmArdC5zdGFjayk6bmV3IEVycm9yKHQubWVzc2FnZStgCgpgK3Quc3RhY2spOnR9LDApfX1lbWl0KHQpe3RoaXMubGlzdGVuZXJzLmZvckVhY2gobj0+e24odCl9KX1vblVuZXhwZWN0ZWRFcnJvcih0KXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIodCksdGhpcy5lbWl0KHQpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IodCl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKHQpfX1jb25zdCBKcj1uZXcgWHI7ZnVuY3Rpb24gWXQoZSl7WXIoZSl8fEpyLm9uVW5leHBlY3RlZEVycm9yKGUpfWZ1bmN0aW9uIFp0KGUpe2lmKGUgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3R7bmFtZTp0LG1lc3NhZ2U6bn09ZSxyPWUuc3RhY2t0cmFjZXx8ZS5zdGFjaztyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTp0LG1lc3NhZ2U6bixzdGFjazpyLG5vVGVsZW1ldHJ5OkFlLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3QgYnQ9IkNhbmNlbGVkIjtmdW5jdGlvbiBZcihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFpyPyEwOmUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09YnQmJmUubWVzc2FnZT09PWJ0fWNsYXNzIFpyIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihidCksdGhpcy5uYW1lPXRoaXMubWVzc2FnZX19Y2xhc3MgQWUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IkNvZGVFeHBlY3RlZEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKHQpe2lmKHQgaW5zdGFuY2VvZiBBZSlyZXR1cm4gdDtjb25zdCBuPW5ldyBBZTtyZXR1cm4gbi5tZXNzYWdlPXQubWVzc2FnZSxuLnN0YWNrPXQuc3RhY2ssbn1zdGF0aWMgaXNFcnJvck5vVGVsZW1ldHJ5KHQpe3JldHVybiB0Lm5hbWU9PT0iQ29kZUV4cGVjdGVkRXJyb3IifX1jbGFzcyBjZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKHR8fCJBbiB1bmV4cGVjdGVkIGJ1ZyBvY2N1cnJlZC4iKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxjZS5wcm90b3R5cGUpfX1mdW5jdGlvbiBLcihlLHQpe2NvbnN0IG49dGhpcztsZXQgcj0hMSxzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByfHwocj0hMCxzPWUuYXBwbHkobixhcmd1bWVudHMpKSxzfX12YXIgWmU7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoXyl7cmV0dXJuIF8mJnR5cGVvZiBfPT0ib2JqZWN0IiYmdHlwZW9mIF9bU3ltYm9sLml0ZXJhdG9yXT09ImZ1bmN0aW9uIn1lLmlzPXQ7Y29uc3Qgbj1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbiByKCl7cmV0dXJuIG59ZS5lbXB0eT1yO2Z1bmN0aW9uKnMoXyl7eWllbGQgX31lLnNpbmdsZT1zO2Z1bmN0aW9uIGkoXyl7cmV0dXJuIHQoXyk/XzpzKF8pfWUud3JhcD1pO2Z1bmN0aW9uIGwoXyl7cmV0dXJuIF98fG59ZS5mcm9tPWw7ZnVuY3Rpb24qbyhfKXtmb3IobGV0IEw9Xy5sZW5ndGgtMTtMPj0wO0wtLSl5aWVsZCBfW0xdfWUucmV2ZXJzZT1vO2Z1bmN0aW9uIHUoXyl7cmV0dXJuIV98fF9bU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lPT09ITB9ZS5pc0VtcHR5PXU7ZnVuY3Rpb24gYyhfKXtyZXR1cm4gX1tTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfWUuZmlyc3Q9YztmdW5jdGlvbiBoKF8sTCl7Zm9yKGNvbnN0IHAgb2YgXylpZihMKHApKXJldHVybiEwO3JldHVybiExfWUuc29tZT1oO2Z1bmN0aW9uIGYoXyxMKXtmb3IoY29uc3QgcCBvZiBfKWlmKEwocCkpcmV0dXJuIHB9ZS5maW5kPWY7ZnVuY3Rpb24qZChfLEwpe2Zvcihjb25zdCBwIG9mIF8pTChwKSYmKHlpZWxkIHApfWUuZmlsdGVyPWQ7ZnVuY3Rpb24qbShfLEwpe2xldCBwPTA7Zm9yKGNvbnN0IFIgb2YgXyl5aWVsZCBMKFIscCsrKX1lLm1hcD1tO2Z1bmN0aW9uKmcoLi4uXyl7Zm9yKGNvbnN0IEwgb2YgXyl5aWVsZCpMfWUuY29uY2F0PWc7ZnVuY3Rpb24geChfLEwscCl7bGV0IFI9cDtmb3IoY29uc3QgeSBvZiBfKVI9TChSLHkpO3JldHVybiBSfWUucmVkdWNlPXg7ZnVuY3Rpb24qdihfLEwscD1fLmxlbmd0aCl7Zm9yKEw8MCYmKEwrPV8ubGVuZ3RoKSxwPDA/cCs9Xy5sZW5ndGg6cD5fLmxlbmd0aCYmKHA9Xy5sZW5ndGgpO0w8cDtMKyspeWllbGQgX1tMXX1lLnNsaWNlPXY7ZnVuY3Rpb24gTihfLEw9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCBwPVtdO2lmKEw9PT0wKXJldHVybltwLF9dO2NvbnN0IFI9X1tTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCB5PTA7eTxMO3krKyl7Y29uc3QgRT1SLm5leHQoKTtpZihFLmRvbmUpcmV0dXJuW3AsZS5lbXB0eSgpXTtwLnB1c2goRS52YWx1ZSl9cmV0dXJuW3Ase1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIFJ9fV19ZS5jb25zdW1lPU47YXN5bmMgZnVuY3Rpb24gUyhfKXtjb25zdCBMPVtdO2ZvciBhd2FpdChjb25zdCBwIG9mIF8pTC5wdXNoKHApO3JldHVybiBQcm9taXNlLnJlc29sdmUoTCl9ZS5hc3luY1RvQXJyYXk9U30pKFplfHwoWmU9e30pKTtmdW5jdGlvbiBOMShlKXtyZXR1cm4gZX1mdW5jdGlvbiBTMShlLHQpe31mdW5jdGlvbiBLdChlKXtpZihaZS5pcyhlKSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKHIpe3QucHVzaChyKX1pZih0Lmxlbmd0aD09PTEpdGhyb3cgdFswXTtpZih0Lmxlbmd0aD4xKXRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcih0LCJFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlIik7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106ZX1lbHNlIGlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gZXMoLi4uZSl7cmV0dXJuIEtlKCgpPT5LdChlKSl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJue2Rpc3Bvc2U6S3IoKCk9PntlKCl9KX19Y2xhc3MgUmV7Y29uc3RydWN0b3IoKXt0aGlzLl90b0Rpc3Bvc2U9bmV3IFNldCx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5faXNEaXNwb3NlZD0hMCx0aGlzLmNsZWFyKCkpfWdldCBpc0Rpc3Bvc2VkKCl7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWR9Y2xlYXIoKXtpZih0aGlzLl90b0Rpc3Bvc2Uuc2l6ZSE9PTApdHJ5e0t0KHRoaXMuX3RvRGlzcG9zZSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKHQpe2lmKCF0KXJldHVybiB0O2lmKHQ9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/UmUuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQodCksdH1kZWxldGVBbmRMZWFrKHQpe3QmJnRoaXMuX3RvRGlzcG9zZS5oYXModCkmJnRoaXMuX3RvRGlzcG9zZS5kZWxldGUodCl9fVJlLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBXZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBSZSx0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3Rlcih0KXtpZih0PT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQodCl9fVdlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBVe2NvbnN0cnVjdG9yKHQpe3RoaXMuZWxlbWVudD10LHRoaXMubmV4dD1VLlVuZGVmaW5lZCx0aGlzLnByZXY9VS5VbmRlZmluZWR9fVUuVW5kZWZpbmVkPW5ldyBVKHZvaWQgMCk7Y2xhc3MgdHN7Y29uc3RydWN0b3IoKXt0aGlzLl9maXJzdD1VLlVuZGVmaW5lZCx0aGlzLl9sYXN0PVUuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1VLlVuZGVmaW5lZH1jbGVhcigpe2xldCB0PXRoaXMuX2ZpcnN0O2Zvcig7dCE9PVUuVW5kZWZpbmVkOyl7Y29uc3Qgbj10Lm5leHQ7dC5wcmV2PVUuVW5kZWZpbmVkLHQubmV4dD1VLlVuZGVmaW5lZCx0PW59dGhpcy5fZmlyc3Q9VS5VbmRlZmluZWQsdGhpcy5fbGFzdD1VLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdCh0KXtyZXR1cm4gdGhpcy5faW5zZXJ0KHQsITEpfXB1c2godCl7cmV0dXJuIHRoaXMuX2luc2VydCh0LCEwKX1faW5zZXJ0KHQsbil7Y29uc3Qgcj1uZXcgVSh0KTtpZih0aGlzLl9maXJzdD09PVUuVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PXIsdGhpcy5fbGFzdD1yO2Vsc2UgaWYobil7Y29uc3QgaT10aGlzLl9sYXN0O3RoaXMuX2xhc3Q9cixyLnByZXY9aSxpLm5leHQ9cn1lbHNle2NvbnN0IGk9dGhpcy5fZmlyc3Q7dGhpcy5fZmlyc3Q9cixyLm5leHQ9aSxpLnByZXY9cn10aGlzLl9zaXplKz0xO2xldCBzPSExO3JldHVybigpPT57c3x8KHM9ITAsdGhpcy5fcmVtb3ZlKHIpKX19c2hpZnQoKXtpZih0aGlzLl9maXJzdCE9PVUuVW5kZWZpbmVkKXtjb25zdCB0PXRoaXMuX2ZpcnN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksdH19cG9wKCl7aWYodGhpcy5fbGFzdCE9PVUuVW5kZWZpbmVkKXtjb25zdCB0PXRoaXMuX2xhc3QuZWxlbWVudDtyZXR1cm4gdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLHR9fV9yZW1vdmUodCl7aWYodC5wcmV2IT09VS5VbmRlZmluZWQmJnQubmV4dCE9PVUuVW5kZWZpbmVkKXtjb25zdCBuPXQucHJldjtuLm5leHQ9dC5uZXh0LHQubmV4dC5wcmV2PW59ZWxzZSB0LnByZXY9PT1VLlVuZGVmaW5lZCYmdC5uZXh0PT09VS5VbmRlZmluZWQ/KHRoaXMuX2ZpcnN0PVUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9VS5VbmRlZmluZWQpOnQubmV4dD09PVUuVW5kZWZpbmVkPyh0aGlzLl9sYXN0PXRoaXMuX2xhc3QucHJldix0aGlzLl9sYXN0Lm5leHQ9VS5VbmRlZmluZWQpOnQucHJldj09PVUuVW5kZWZpbmVkJiYodGhpcy5fZmlyc3Q9dGhpcy5fZmlyc3QubmV4dCx0aGlzLl9maXJzdC5wcmV2PVUuVW5kZWZpbmVkKTt0aGlzLl9zaXplLT0xfSpbU3ltYm9sLml0ZXJhdG9yXSgpe2xldCB0PXRoaXMuX2ZpcnN0O2Zvcig7dCE9PVUuVW5kZWZpbmVkOyl5aWVsZCB0LmVsZW1lbnQsdD10Lm5leHR9fWNvbnN0IG5zPWdsb2JhbFRoaXMucGVyZm9ybWFuY2UmJnR5cGVvZiBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdz09ImZ1bmN0aW9uIjtjbGFzcyBldHtzdGF0aWMgY3JlYXRlKHQpe3JldHVybiBuZXcgZXQodCl9Y29uc3RydWN0b3IodCl7dGhpcy5fbm93PW5zJiZ0PT09ITE/RGF0ZS5ub3c6Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZS5ub3cuYmluZChnbG9iYWxUaGlzLnBlcmZvcm1hbmNlKSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfXJlc2V0KCl7dGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfWVsYXBzZWQoKXtyZXR1cm4gdGhpcy5fc3RvcFRpbWUhPT0tMT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfX12YXIgX3Q7KGZ1bmN0aW9uKGUpe2UuTm9uZT0oKT0+V2UuTm9uZTtmdW5jdGlvbiB0KHcsYil7cmV0dXJuIGYodywoKT0+e30sMCx2b2lkIDAsITAsdm9pZCAwLGIpfWUuZGVmZXI9dDtmdW5jdGlvbiBuKHcpe3JldHVybihiLEM9bnVsbCxBKT0+e2xldCBrPSExLFQ7cmV0dXJuIFQ9dyhxPT57aWYoIWspcmV0dXJuIFQ/VC5kaXNwb3NlKCk6az0hMCxiLmNhbGwoQyxxKX0sbnVsbCxBKSxrJiZULmRpc3Bvc2UoKSxUfX1lLm9uY2U9bjtmdW5jdGlvbiByKHcsYixDKXtyZXR1cm4gYygoQSxrPW51bGwsVCk9PncocT0+QS5jYWxsKGssYihxKSksbnVsbCxUKSxDKX1lLm1hcD1yO2Z1bmN0aW9uIHModyxiLEMpe3JldHVybiBjKChBLGs9bnVsbCxUKT0+dyhxPT57YihxKSxBLmNhbGwoayxxKX0sbnVsbCxUKSxDKX1lLmZvckVhY2g9cztmdW5jdGlvbiBpKHcsYixDKXtyZXR1cm4gYygoQSxrPW51bGwsVCk9PncocT0+YihxKSYmQS5jYWxsKGsscSksbnVsbCxUKSxDKX1lLmZpbHRlcj1pO2Z1bmN0aW9uIGwodyl7cmV0dXJuIHd9ZS5zaWduYWw9bDtmdW5jdGlvbiBvKC4uLncpe3JldHVybihiLEM9bnVsbCxBKT0+e2NvbnN0IGs9ZXMoLi4udy5tYXAoVD0+VChxPT5iLmNhbGwoQyxxKSkpKTtyZXR1cm4gaChrLEEpfX1lLmFueT1vO2Z1bmN0aW9uIHUodyxiLEMsQSl7bGV0IGs9QztyZXR1cm4gcih3LFQ9PihrPWIoayxUKSxrKSxBKX1lLnJlZHVjZT11O2Z1bmN0aW9uIGModyxiKXtsZXQgQztjb25zdCBBPXtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7Qz13KGsuZmlyZSxrKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtDPy5kaXNwb3NlKCl9fSxrPW5ldyBzZShBKTtyZXR1cm4gYj8uYWRkKGspLGsuZXZlbnR9ZnVuY3Rpb24gaCh3LGIpe3JldHVybiBiIGluc3RhbmNlb2YgQXJyYXk/Yi5wdXNoKHcpOmImJmIuYWRkKHcpLHd9ZnVuY3Rpb24gZih3LGIsQz0xMDAsQT0hMSxrPSExLFQscSl7bGV0IFEsWSxIZSxtdD0wLENlO2NvbnN0IHYxPXtsZWFrV2FybmluZ1RocmVzaG9sZDpULG9uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtRPXcodzE9PnttdCsrLFk9YihZLHcxKSxBJiYhSGUmJihndC5maXJlKFkpLFk9dm9pZCAwKSxDZT0oKT0+e2NvbnN0IEwxPVk7WT12b2lkIDAsSGU9dm9pZCAwLCghQXx8bXQ+MSkmJmd0LmZpcmUoTDEpLG10PTB9LHR5cGVvZiBDPT0ibnVtYmVyIj8oY2xlYXJUaW1lb3V0KEhlKSxIZT1zZXRUaW1lb3V0KENlLEMpKTpIZT09PXZvaWQgMCYmKEhlPTAscXVldWVNaWNyb3Rhc2soQ2UpKX0pfSxvbldpbGxSZW1vdmVMaXN0ZW5lcigpe2smJm10PjAmJkNlPy4oKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtDZT12b2lkIDAsUS5kaXNwb3NlKCl9fSxndD1uZXcgc2UodjEpO3JldHVybiBxPy5hZGQoZ3QpLGd0LmV2ZW50fWUuZGVib3VuY2U9ZjtmdW5jdGlvbiBkKHcsYj0wLEMpe3JldHVybiBlLmRlYm91bmNlKHcsKEEsayk9PkE/KEEucHVzaChrKSxBKTpba10sYix2b2lkIDAsITAsdm9pZCAwLEMpfWUuYWNjdW11bGF0ZT1kO2Z1bmN0aW9uIG0odyxiPShBLGspPT5BPT09ayxDKXtsZXQgQT0hMCxrO3JldHVybiBpKHcsVD0+e2NvbnN0IHE9QXx8IWIoVCxrKTtyZXR1cm4gQT0hMSxrPVQscX0sQyl9ZS5sYXRjaD1tO2Z1bmN0aW9uIGcodyxiLEMpe3JldHVybltlLmZpbHRlcih3LGIsQyksZS5maWx0ZXIodyxBPT4hYihBKSxDKV19ZS5zcGxpdD1nO2Z1bmN0aW9uIHgodyxiPSExLEM9W10sQSl7bGV0IGs9Qy5zbGljZSgpLFQ9dyhZPT57az9rLnB1c2goWSk6US5maXJlKFkpfSk7QSYmQS5hZGQoVCk7Y29uc3QgcT0oKT0+e2s/LmZvckVhY2goWT0+US5maXJlKFkpKSxrPW51bGx9LFE9bmV3IHNlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7VHx8KFQ9dyhZPT5RLmZpcmUoWSkpLEEmJkEuYWRkKFQpKX0sb25EaWRBZGRGaXJzdExpc3RlbmVyKCl7ayYmKGI/c2V0VGltZW91dChxKTpxKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe1QmJlQuZGlzcG9zZSgpLFQ9bnVsbH19KTtyZXR1cm4gQSYmQS5hZGQoUSksUS5ldmVudH1lLmJ1ZmZlcj14O2Z1bmN0aW9uIHYodyxiKXtyZXR1cm4oQSxrLFQpPT57Y29uc3QgcT1iKG5ldyBTKTtyZXR1cm4gdyhmdW5jdGlvbihRKXtjb25zdCBZPXEuZXZhbHVhdGUoUSk7WSE9PU4mJkEuY2FsbChrLFkpfSx2b2lkIDAsVCl9fWUuY2hhaW49djtjb25zdCBOPVN5bWJvbCgiSGFsdENoYWluYWJsZSIpO2NsYXNzIFN7Y29uc3RydWN0b3IoKXt0aGlzLnN0ZXBzPVtdfW1hcChiKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKGIpLHRoaXN9Zm9yRWFjaChiKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEM9PihiKEMpLEMpKSx0aGlzfWZpbHRlcihiKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEM9PmIoQyk/QzpOKSx0aGlzfXJlZHVjZShiLEMpe2xldCBBPUM7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChrPT4oQT1iKEEsayksQSkpLHRoaXN9bGF0Y2goYj0oQyxBKT0+Qz09PUEpe2xldCBDPSEwLEE7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChrPT57Y29uc3QgVD1DfHwhYihrLEEpO3JldHVybiBDPSExLEE9ayxUP2s6Tn0pLHRoaXN9ZXZhbHVhdGUoYil7Zm9yKGNvbnN0IEMgb2YgdGhpcy5zdGVwcylpZihiPUMoYiksYj09PU4pYnJlYWs7cmV0dXJuIGJ9fWZ1bmN0aW9uIF8odyxiLEM9QT0+QSl7Y29uc3QgQT0oLi4uUSk9PnEuZmlyZShDKC4uLlEpKSxrPSgpPT53Lm9uKGIsQSksVD0oKT0+dy5yZW1vdmVMaXN0ZW5lcihiLEEpLHE9bmV3IHNlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOmssb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6VH0pO3JldHVybiBxLmV2ZW50fWUuZnJvbU5vZGVFdmVudEVtaXR0ZXI9XztmdW5jdGlvbiBMKHcsYixDPUE9PkEpe2NvbnN0IEE9KC4uLlEpPT5xLmZpcmUoQyguLi5RKSksaz0oKT0+dy5hZGRFdmVudExpc3RlbmVyKGIsQSksVD0oKT0+dy5yZW1vdmVFdmVudExpc3RlbmVyKGIsQSkscT1uZXcgc2Uoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6ayxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjpUfSk7cmV0dXJuIHEuZXZlbnR9ZS5mcm9tRE9NRXZlbnRFbWl0dGVyPUw7ZnVuY3Rpb24gcCh3KXtyZXR1cm4gbmV3IFByb21pc2UoYj0+bih3KShiKSl9ZS50b1Byb21pc2U9cDtmdW5jdGlvbiBSKHcpe2NvbnN0IGI9bmV3IHNlO3JldHVybiB3LnRoZW4oQz0+e2IuZmlyZShDKX0sKCk9PntiLmZpcmUodm9pZCAwKX0pLmZpbmFsbHkoKCk9PntiLmRpc3Bvc2UoKX0pLGIuZXZlbnR9ZS5mcm9tUHJvbWlzZT1SO2Z1bmN0aW9uIHkodyxiLEMpe3JldHVybiBiKEMpLHcoQT0+YihBKSl9ZS5ydW5BbmRTdWJzY3JpYmU9eTtjbGFzcyBFe2NvbnN0cnVjdG9yKGIsQyl7dGhpcy5fb2JzZXJ2YWJsZT1iLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IEE9e29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntiLmFkZE9ic2VydmVyKHRoaXMpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e2IucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9fTt0aGlzLmVtaXR0ZXI9bmV3IHNlKEEpLEMmJkMuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoYil7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKGIpe31oYW5kbGVDaGFuZ2UoYixDKXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShiKXt0aGlzLl9jb3VudGVyLS0sdGhpcy5fY291bnRlcj09PTAmJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1mdW5jdGlvbiBJKHcsYil7cmV0dXJuIG5ldyBFKHcsYikuZW1pdHRlci5ldmVudH1lLmZyb21PYnNlcnZhYmxlPUk7ZnVuY3Rpb24gRyh3KXtyZXR1cm4oYixDLEEpPT57bGV0IGs9MCxUPSExO2NvbnN0IHE9e2JlZ2luVXBkYXRlKCl7aysrfSxlbmRVcGRhdGUoKXtrLS0saz09PTAmJih3LnJlcG9ydENoYW5nZXMoKSxUJiYoVD0hMSxiLmNhbGwoQykpKX0saGFuZGxlUG9zc2libGVDaGFuZ2UoKXt9LGhhbmRsZUNoYW5nZSgpe1Q9ITB9fTt3LmFkZE9ic2VydmVyKHEpLHcucmVwb3J0Q2hhbmdlcygpO2NvbnN0IFE9e2Rpc3Bvc2UoKXt3LnJlbW92ZU9ic2VydmVyKHEpfX07cmV0dXJuIEEgaW5zdGFuY2VvZiBSZT9BLmFkZChRKTpBcnJheS5pc0FycmF5KEEpJiZBLnB1c2goUSksUX19ZS5mcm9tT2JzZXJ2YWJsZUxpZ2h0PUd9KShfdHx8KF90PXt9KSk7Y2xhc3MgeWV7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lckNvdW50PTAsdGhpcy5pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLmVsYXBzZWRPdmVyYWxsPTAsdGhpcy5kdXJhdGlvbnM9W10sdGhpcy5uYW1lPWAke3R9XyR7eWUuX2lkUG9vbCsrfWAseWUuYWxsLmFkZCh0aGlzKX1zdGFydCh0KXt0aGlzLl9zdG9wV2F0Y2g9bmV3IGV0LHRoaXMubGlzdGVuZXJDb3VudD10fXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IHQ9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLmR1cmF0aW9ucy5wdXNoKHQpLHRoaXMuZWxhcHNlZE92ZXJhbGwrPXQsdGhpcy5pbnZvY2F0aW9uQ291bnQrPTEsdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fXllLmFsbD1uZXcgU2V0LHllLl9pZFBvb2w9MDtsZXQgcnM9LTE7Y2xhc3Mgc3N7Y29uc3RydWN0b3IodCxuPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTgpLnNsaWNlKDIsNSkpe3RoaXMudGhyZXNob2xkPXQsdGhpcy5uYW1lPW4sdGhpcy5fd2FybkNvdW50ZG93bj0wfWRpc3Bvc2UoKXt2YXIgdDsodD10aGlzLl9zdGFja3MpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5jbGVhcigpfWNoZWNrKHQsbil7Y29uc3Qgcj10aGlzLnRocmVzaG9sZDtpZihyPD0wfHxuPHIpcmV0dXJuO3RoaXMuX3N0YWNrc3x8KHRoaXMuX3N0YWNrcz1uZXcgTWFwKTtjb25zdCBzPXRoaXMuX3N0YWNrcy5nZXQodC52YWx1ZSl8fDA7aWYodGhpcy5fc3RhY2tzLnNldCh0LnZhbHVlLHMrMSksdGhpcy5fd2FybkNvdW50ZG93bi09MSx0aGlzLl93YXJuQ291bnRkb3duPD0wKXt0aGlzLl93YXJuQ291bnRkb3duPXIqLjU7bGV0IGksbD0wO2Zvcihjb25zdFtvLHVdb2YgdGhpcy5fc3RhY2tzKSghaXx8bDx1KSYmKGk9byxsPXUpO2NvbnNvbGUud2FybihgWyR7dGhpcy5uYW1lfV0gcG90ZW50aWFsIGxpc3RlbmVyIExFQUsgZGV0ZWN0ZWQsIGhhdmluZyAke259IGxpc3RlbmVycyBhbHJlYWR5LiBNT1NUIGZyZXF1ZW50IGxpc3RlbmVyICgke2x9KTpgKSxjb25zb2xlLndhcm4oaSl9cmV0dXJuKCk9Pntjb25zdCBpPXRoaXMuX3N0YWNrcy5nZXQodC52YWx1ZSl8fDA7dGhpcy5fc3RhY2tzLnNldCh0LnZhbHVlLGktMSl9fX1jbGFzcyB4dHtzdGF0aWMgY3JlYXRlKCl7dmFyIHQ7cmV0dXJuIG5ldyB4dCgodD1uZXcgRXJyb3IoKS5zdGFjaykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6IiIpfWNvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dH1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KGAKYCkuc2xpY2UoMikuam9pbihgCmApKX19Y2xhc3MgcHR7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT10fX1jb25zdCBpcz0yO2NsYXNzIHNle2NvbnN0cnVjdG9yKHQpe3ZhciBuLHIscyxpLGw7dGhpcy5fc2l6ZT0wLHRoaXMuX29wdGlvbnM9dCx0aGlzLl9sZWFrYWdlTW9uPSEoKG49dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxuPT09dm9pZCAwKSYmbi5sZWFrV2FybmluZ1RocmVzaG9sZD9uZXcgc3MoKHM9KHI9dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLmxlYWtXYXJuaW5nVGhyZXNob2xkKSE9PW51bGwmJnMhPT12b2lkIDA/czpycyk6dm9pZCAwLHRoaXMuX3BlcmZNb249ISgoaT10aGlzLl9vcHRpb25zKT09PW51bGx8fGk9PT12b2lkIDApJiZpLl9wcm9mTmFtZT9uZXcgeWUodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMCx0aGlzLl9kZWxpdmVyeVF1ZXVlPShsPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5kZWxpdmVyeVF1ZXVlfWRpc3Bvc2UoKXt2YXIgdCxuLHIsczt0aGlzLl9kaXNwb3NlZHx8KHRoaXMuX2Rpc3Bvc2VkPSEwLCgodD10aGlzLl9kZWxpdmVyeVF1ZXVlKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuY3VycmVudCk9PT10aGlzJiZ0aGlzLl9kZWxpdmVyeVF1ZXVlLnJlc2V0KCksdGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXZvaWQgMCx0aGlzLl9zaXplPTApLChyPShuPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5vbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcik9PT1udWxsfHxyPT09dm9pZCAwfHxyLmNhbGwobiksKHM9dGhpcy5fbGVha2FnZU1vbik9PT1udWxsfHxzPT09dm9pZCAwfHxzLmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5fZXZlbnQpIT09bnVsbCYmdCE9PXZvaWQgMHx8KHRoaXMuX2V2ZW50PShuLHIscyk9Pnt2YXIgaSxsLG8sdSxjO2lmKHRoaXMuX2xlYWthZ2VNb24mJnRoaXMuX3NpemU+dGhpcy5fbGVha2FnZU1vbi50aHJlc2hvbGQqMylyZXR1cm4gY29uc29sZS53YXJuKGBbJHt0aGlzLl9sZWFrYWdlTW9uLm5hbWV9XSBSRUZVU0VTIHRvIGFjY2VwdCBuZXcgbGlzdGVuZXJzIGJlY2F1c2UgaXQgZXhjZWVkZWQgaXRzIHRocmVzaG9sZCBieSBmYXJgKSxXZS5Ob25lO2lmKHRoaXMuX2Rpc3Bvc2VkKXJldHVybiBXZS5Ob25lO3ImJihuPW4uYmluZChyKSk7Y29uc3QgaD1uZXcgcHQobik7bGV0IGY7dGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fc2l6ZT49TWF0aC5jZWlsKHRoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkKi4yKSYmKGguc3RhY2s9eHQuY3JlYXRlKCksZj10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGguc3RhY2ssdGhpcy5fc2l6ZSsxKSksdGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycyBpbnN0YW5jZW9mIHB0PygoYz10aGlzLl9kZWxpdmVyeVF1ZXVlKSE9PW51bGwmJmMhPT12b2lkIDB8fCh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyBhcyksdGhpcy5fbGlzdGVuZXJzPVt0aGlzLl9saXN0ZW5lcnMsaF0pOnRoaXMuX2xpc3RlbmVycy5wdXNoKGgpOigobD0oaT10aGlzLl9vcHRpb25zKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkub25XaWxsQWRkRmlyc3RMaXN0ZW5lcik9PT1udWxsfHxsPT09dm9pZCAwfHxsLmNhbGwoaSx0aGlzKSx0aGlzLl9saXN0ZW5lcnM9aCwodT0obz10aGlzLl9vcHRpb25zKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8ub25EaWRBZGRGaXJzdExpc3RlbmVyKT09PW51bGx8fHU9PT12b2lkIDB8fHUuY2FsbChvLHRoaXMpKSx0aGlzLl9zaXplKys7Y29uc3QgZD1LZSgoKT0+e2Y/LigpLHRoaXMuX3JlbW92ZUxpc3RlbmVyKGgpfSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBSZT9zLmFkZChkKTpBcnJheS5pc0FycmF5KHMpJiZzLnB1c2goZCksZH0pLHRoaXMuX2V2ZW50fV9yZW1vdmVMaXN0ZW5lcih0KXt2YXIgbixyLHMsaTtpZigocj0obj10aGlzLl9vcHRpb25zKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4ub25XaWxsUmVtb3ZlTGlzdGVuZXIpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5jYWxsKG4sdGhpcyksIXRoaXMuX2xpc3RlbmVycylyZXR1cm47aWYodGhpcy5fc2l6ZT09PTEpe3RoaXMuX2xpc3RlbmVycz12b2lkIDAsKGk9KHM9dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKT09PW51bGx8fGk9PT12b2lkIDB8fGkuY2FsbChzLHRoaXMpLHRoaXMuX3NpemU9MDtyZXR1cm59Y29uc3QgbD10aGlzLl9saXN0ZW5lcnMsbz1sLmluZGV4T2YodCk7aWYobz09PS0xKXRocm93IGNvbnNvbGUubG9nKCJkaXNwb3NlZD8iLHRoaXMuX2Rpc3Bvc2VkKSxjb25zb2xlLmxvZygic2l6ZT8iLHRoaXMuX3NpemUpLGNvbnNvbGUubG9nKCJhcnI/IixKU09OLnN0cmluZ2lmeSh0aGlzLl9saXN0ZW5lcnMpKSxuZXcgRXJyb3IoIkF0dGVtcHRlZCB0byBkaXNwb3NlIHVua25vd24gbGlzdGVuZXIiKTt0aGlzLl9zaXplLS0sbFtvXT12b2lkIDA7Y29uc3QgdT10aGlzLl9kZWxpdmVyeVF1ZXVlLmN1cnJlbnQ9PT10aGlzO2lmKHRoaXMuX3NpemUqaXM8PWwubGVuZ3RoKXtsZXQgYz0wO2ZvcihsZXQgaD0wO2g8bC5sZW5ndGg7aCsrKWxbaF0/bFtjKytdPWxbaF06dSYmKHRoaXMuX2RlbGl2ZXJ5UXVldWUuZW5kLS0sYzx0aGlzLl9kZWxpdmVyeVF1ZXVlLmkmJnRoaXMuX2RlbGl2ZXJ5UXVldWUuaS0tKTtsLmxlbmd0aD1jfX1fZGVsaXZlcih0LG4pe3ZhciByO2lmKCF0KXJldHVybjtjb25zdCBzPSgocj10aGlzLl9vcHRpb25zKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIub25MaXN0ZW5lckVycm9yKXx8WXQ7aWYoIXMpe3QudmFsdWUobik7cmV0dXJufXRyeXt0LnZhbHVlKG4pfWNhdGNoKGkpe3MoaSl9fV9kZWxpdmVyUXVldWUodCl7Y29uc3Qgbj10LmN1cnJlbnQuX2xpc3RlbmVycztmb3IoO3QuaTx0LmVuZDspdGhpcy5fZGVsaXZlcihuW3QuaSsrXSx0LnZhbHVlKTt0LnJlc2V0KCl9ZmlyZSh0KXt2YXIgbixyLHMsaTtpZighKChuPXRoaXMuX2RlbGl2ZXJ5UXVldWUpPT09bnVsbHx8bj09PXZvaWQgMCkmJm4uY3VycmVudCYmKHRoaXMuX2RlbGl2ZXJRdWV1ZSh0aGlzLl9kZWxpdmVyeVF1ZXVlKSwocj10aGlzLl9wZXJmTW9uKT09PW51bGx8fHI9PT12b2lkIDB8fHIuc3RvcCgpKSwocz10aGlzLl9wZXJmTW9uKT09PW51bGx8fHM9PT12b2lkIDB8fHMuc3RhcnQodGhpcy5fc2l6ZSksdGhpcy5fbGlzdGVuZXJzKWlmKHRoaXMuX2xpc3RlbmVycyBpbnN0YW5jZW9mIHB0KXRoaXMuX2RlbGl2ZXIodGhpcy5fbGlzdGVuZXJzLHQpO2Vsc2V7Y29uc3QgbD10aGlzLl9kZWxpdmVyeVF1ZXVlO2wuZW5xdWV1ZSh0aGlzLHQsdGhpcy5fbGlzdGVuZXJzLmxlbmd0aCksdGhpcy5fZGVsaXZlclF1ZXVlKGwpfShpPXRoaXMuX3BlcmZNb24pPT09bnVsbHx8aT09PXZvaWQgMHx8aS5zdG9wKCl9aGFzTGlzdGVuZXJzKCl7cmV0dXJuIHRoaXMuX3NpemU+MH19Y2xhc3MgYXN7Y29uc3RydWN0b3IoKXt0aGlzLmk9LTEsdGhpcy5lbmQ9MH1lbnF1ZXVlKHQsbixyKXt0aGlzLmk9MCx0aGlzLmVuZD1yLHRoaXMuY3VycmVudD10LHRoaXMudmFsdWU9bn1yZXNldCgpe3RoaXMuaT10aGlzLmVuZCx0aGlzLmN1cnJlbnQ9dm9pZCAwLHRoaXMudmFsdWU9dm9pZCAwfX1mdW5jdGlvbiBscyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWZ1bmN0aW9uIG9zKGUpe2xldCB0PVtdO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PWU7KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkpLGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0fWZ1bmN0aW9uIHZ0KGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2Ygb3MoZSkpdHlwZW9mIGVbbl09PSJmdW5jdGlvbiImJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiB1cyhlLHQpe2NvbnN0IG49cz0+ZnVuY3Rpb24oKXtjb25zdCBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChzLGkpfSxyPXt9O2Zvcihjb25zdCBzIG9mIGUpcltzXT1uKHMpO3JldHVybiByfWxldCBjcz10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO2Z1bmN0aW9uIGhzKGUsdCl7bGV0IG47cmV0dXJuIHQubGVuZ3RoPT09MD9uPWU6bj1lLnJlcGxhY2UoL1x7KFxkKylcfS9nLChyLHMpPT57Y29uc3QgaT1zWzBdLGw9dFtpXTtsZXQgbz1yO3JldHVybiB0eXBlb2YgbD09InN0cmluZyI/bz1sOih0eXBlb2YgbD09Im51bWJlciJ8fHR5cGVvZiBsPT0iYm9vbGVhbiJ8fGw9PT12b2lkIDB8fGw9PT1udWxsKSYmKG89U3RyaW5nKGwpKSxvfSksY3MmJihuPSLvvLsiK24ucmVwbGFjZSgvW2FvdWVpXS9nLCIkJiQmIikrIu+8vSIpLG59ZnVuY3Rpb24gSChlLHQsLi4ubil7cmV0dXJuIGhzKHQsbil9ZnVuY3Rpb24gQzEoZSl7fXZhciB3dCxMdDtjb25zdCBFZT0iZW4iO2xldCBOdD0hMSxTdD0hMSxDdD0hMSx0dCxBdD1FZSxlbj1FZSxmcyxpZTtjb25zdCB3ZT1nbG9iYWxUaGlzO2xldCBYO3R5cGVvZiB3ZS52c2NvZGU8InUiJiZ0eXBlb2Ygd2UudnNjb2RlLnByb2Nlc3M8InUiP1g9d2UudnNjb2RlLnByb2Nlc3M6dHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YoKHd0PXByb2Nlc3M9PW51bGw/dm9pZCAwOnByb2Nlc3MudmVyc2lvbnMpPT09bnVsbHx8d3Q9PT12b2lkIDA/dm9pZCAwOnd0Lm5vZGUpPT0ic3RyaW5nIiYmKFg9cHJvY2Vzcyk7Y29uc3QgZHM9dHlwZW9mKChMdD1YPy52ZXJzaW9ucyk9PT1udWxsfHxMdD09PXZvaWQgMD92b2lkIDA6THQuZWxlY3Ryb24pPT0ic3RyaW5nIiYmWD8udHlwZT09PSJyZW5kZXJlciI7aWYodHlwZW9mIFg9PSJvYmplY3QiKXtOdD1YLnBsYXRmb3JtPT09IndpbjMyIixTdD1YLnBsYXRmb3JtPT09ImRhcndpbiIsQ3Q9WC5wbGF0Zm9ybT09PSJsaW51eCIsQ3QmJlguZW52LlNOQVAmJlguZW52LlNOQVBfUkVWSVNJT04sWC5lbnYuQ0l8fFguZW52LkJVSUxEX0FSVElGQUNUU1RBR0lOR0RJUkVDVE9SWSx0dD1FZSxBdD1FZTtjb25zdCBlPVguZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKGUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKSxuPXQuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07dHQ9dC5sb2NhbGUsZW49dC5vc0xvY2FsZSxBdD1ufHxFZSxmcz10Ll90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoe319ZWxzZSB0eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0IiYmIWRzPyhpZT1uYXZpZ2F0b3IudXNlckFnZW50LE50PWllLmluZGV4T2YoIldpbmRvd3MiKT49MCxTdD1pZS5pbmRleE9mKCJNYWNpbnRvc2giKT49MCwoaWUuaW5kZXhPZigiTWFjaW50b3NoIik+PTB8fGllLmluZGV4T2YoImlQYWQiKT49MHx8aWUuaW5kZXhPZigiaVBob25lIik+PTApJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4wLEN0PWllLmluZGV4T2YoIkxpbnV4Iik+PTAsaWU/LmluZGV4T2YoIk1vYmkiKT49MCxIKHtrZXk6ImVuc3VyZUxvYWRlclBsdWdpbklzTG9hZGVkIixjb21tZW50Olsie0xvY2tlZH0iXX0sIl8iKSx0dD1FZSxBdD10dCxlbj1uYXZpZ2F0b3IubGFuZ3VhZ2UpOmNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2NvbnN0IHplPU50LG1zPVN0LG9lPWllLGdzPXR5cGVvZiB3ZS5wb3N0TWVzc2FnZT09ImZ1bmN0aW9uIiYmIXdlLmltcG9ydFNjcmlwdHM7KCgpPT57aWYoZ3Mpe2NvbnN0IGU9W107d2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbj0+e2lmKG4uZGF0YSYmbi5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW3JdO2lmKGkuaWQ9PT1uLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspe2Uuc3BsaWNlKHIsMSksaS5jYWxsYmFjaygpO3JldHVybn19fSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSksd2UucG9zdE1lc3NhZ2Uoe3ZzY29kZVNjaGVkdWxlQXN5bmNXb3JrOnJ9LCIqIil9fXJldHVybiBlPT5zZXRUaW1lb3V0KGUpfSkoKTtjb25zdCBicz0hIShvZSYmb2UuaW5kZXhPZigiQ2hyb21lIik+PTApO29lJiZvZS5pbmRleE9mKCJGaXJlZm94Iik+PTAsIWJzJiZvZSYmb2UuaW5kZXhPZigiU2FmYXJpIik+PTAsb2UmJm9lLmluZGV4T2YoIkVkZy8iKT49MCxvZSYmb2UuaW5kZXhPZigiQW5kcm9pZCIpPj0wO2NsYXNzIF9ze2NvbnN0cnVjdG9yKHQsbj1KU09OLnN0cmluZ2lmeSl7dGhpcy5mbj10LHRoaXMuX2NvbXB1dGVLZXk9bix0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQodCl7Y29uc3Qgbj10aGlzLl9jb21wdXRlS2V5KHQpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT1uJiYodGhpcy5sYXN0QXJnS2V5PW4sdGhpcy5sYXN0Q2FjaGU9dGhpcy5mbih0KSksdGhpcy5sYXN0Q2FjaGV9fWNsYXNzIHRue2NvbnN0cnVjdG9yKHQpe3RoaXMuZXhlY3V0b3I9dCx0aGlzLl9kaWRSdW49ITF9Z2V0IHZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKHQpe3RoaXMuX2Vycm9yPXR9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19dmFyIE1lO2Z1bmN0aW9uIHhzKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9ZnVuY3Rpb24gcHMoZSl7cmV0dXJuIGUuc3BsaXQoL1xyXG58XHJ8XG4vKX1mdW5jdGlvbiB2cyhlKXtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KHQpO2lmKHIhPT0zMiYmciE9PTkpcmV0dXJuIHR9cmV0dXJuLTF9ZnVuY3Rpb24gd3MoZSx0PWUubGVuZ3RoLTEpe2ZvcihsZXQgbj10O24+PTA7bi0tKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZihyIT09MzImJnIhPT05KXJldHVybiBufXJldHVybi0xfWZ1bmN0aW9uIG5uKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gUnQoZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1mdW5jdGlvbiBMcyhlKXtyZXR1cm4gNTYzMjA8PWUmJmU8PTU3MzQzfWZ1bmN0aW9uIE5zKGUsdCl7cmV0dXJuKGUtNTUyOTY8PDEwKSsodC01NjMyMCkrNjU1MzZ9ZnVuY3Rpb24gU3MoZSx0LG4pe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pO2lmKFJ0KHIpJiZuKzE8dCl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQobisxKTtpZihMcyhzKSlyZXR1cm4gTnMocixzKX1yZXR1cm4gcn1jb25zdCBDcz0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2Z1bmN0aW9uIEFzKGUpe3JldHVybiBDcy50ZXN0KGUpfWNsYXNzIExle3N0YXRpYyBnZXRJbnN0YW5jZSh0KXtyZXR1cm4gTWUuY2FjaGUuZ2V0KEFycmF5LmZyb20odCkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIE1lLl9sb2NhbGVzLnZhbHVlfWNvbnN0cnVjdG9yKHQpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9dH1pc0FtYmlndW91cyh0KXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXModCl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUodCl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KHQpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX1NZT1MZSxMZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyB0bigoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1LDExOTg0NiwxMDldLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSxMZS5jYWNoZT1uZXcgX3MoZT0+e2Z1bmN0aW9uIHQoYyl7Y29uc3QgaD1uZXcgTWFwO2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7Zis9MiloLnNldChjW2ZdLGNbZisxXSk7cmV0dXJuIGh9ZnVuY3Rpb24gbihjLGgpe2NvbnN0IGY9bmV3IE1hcChjKTtmb3IoY29uc3RbZCxtXW9mIGgpZi5zZXQoZCxtKTtyZXR1cm4gZn1mdW5jdGlvbiByKGMsaCl7aWYoIWMpcmV0dXJuIGg7Y29uc3QgZj1uZXcgTWFwO2Zvcihjb25zdFtkLG1db2YgYyloLmhhcyhkKSYmZi5zZXQoZCxtKTtyZXR1cm4gZn1jb25zdCBzPU1lLmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWU7bGV0IGk9ZS5maWx0ZXIoYz0+IWMuc3RhcnRzV2l0aCgiXyIpJiZjIGluIHMpO2kubGVuZ3RoPT09MCYmKGk9WyJfZGVmYXVsdCJdKTtsZXQgbDtmb3IoY29uc3QgYyBvZiBpKXtjb25zdCBoPXQoc1tjXSk7bD1yKGwsaCl9Y29uc3Qgbz10KHMuX2NvbW1vbiksdT1uKG8sbCk7cmV0dXJuIG5ldyBNZSh1KX0pLExlLl9sb2NhbGVzPW5ldyB0bigoKT0+T2JqZWN0LmtleXMoTWUuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS52YWx1ZSkuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpO2NsYXNzIGRle3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQoZGUuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIodCl7cmV0dXJuIGRlLmdldERhdGEoKS5oYXModCl9c3RhdGljIGdldCBjb2RlUG9pbnRzKCl7cmV0dXJuIGRlLmdldERhdGEoKX19ZGUuX2RhdGE9dm9pZCAwO2NvbnN0IFJzPSIkaW5pdGlhbGl6ZSI7Y2xhc3MgeXN7Y29uc3RydWN0b3IodCxuLHIscyl7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy5tZXRob2Q9cix0aGlzLmFyZ3M9cyx0aGlzLnR5cGU9MH19Y2xhc3Mgcm57Y29uc3RydWN0b3IodCxuLHIscyl7dGhpcy52c1dvcmtlcj10LHRoaXMuc2VxPW4sdGhpcy5yZXM9cix0aGlzLmVycj1zLHRoaXMudHlwZT0xfX1jbGFzcyBFc3tjb25zdHJ1Y3Rvcih0LG4scixzKXt0aGlzLnZzV29ya2VyPXQsdGhpcy5yZXE9bix0aGlzLmV2ZW50TmFtZT1yLHRoaXMuYXJnPXMsdGhpcy50eXBlPTJ9fWNsYXNzIE1ze2NvbnN0cnVjdG9yKHQsbixyKXt0aGlzLnZzV29ya2VyPXQsdGhpcy5yZXE9bix0aGlzLmV2ZW50PXIsdGhpcy50eXBlPTN9fWNsYXNzIGtze2NvbnN0cnVjdG9yKHQsbil7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy50eXBlPTR9fWNsYXNzIEZze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9dCx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKHQpe3RoaXMuX3dvcmtlcklkPXR9c2VuZE1lc3NhZ2UodCxuKXtjb25zdCByPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKHMsaSk9Pnt0aGlzLl9wZW5kaW5nUmVwbGllc1tyXT17cmVzb2x2ZTpzLHJlamVjdDppfSx0aGlzLl9zZW5kKG5ldyB5cyh0aGlzLl93b3JrZXJJZCxyLHQsbikpfSl9bGlzdGVuKHQsbil7bGV0IHI9bnVsbDtjb25zdCBzPW5ldyBzZSh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+e3I9U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQocixzKSx0aGlzLl9zZW5kKG5ldyBFcyh0aGlzLl93b3JrZXJJZCxyLHQsbikpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUociksdGhpcy5fc2VuZChuZXcga3ModGhpcy5fd29ya2VySWQscikpLHI9bnVsbH19KTtyZXR1cm4gcy5ldmVudH1oYW5kbGVNZXNzYWdlKHQpeyF0fHwhdC52c1dvcmtlcnx8dGhpcy5fd29ya2VySWQhPT0tMSYmdC52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKHQpfV9oYW5kbGVNZXNzYWdlKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKHQpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UodCk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UodCk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UodCk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZSh0KX19X2hhbmRsZVJlcGx5TWVzc2FnZSh0KXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbdC5zZXFdKXtjb25zb2xlLndhcm4oIkdvdCByZXBseSB0byB1bmtub3duIHNlcSIpO3JldHVybn1jb25zdCBuPXRoaXMuX3BlbmRpbmdSZXBsaWVzW3Quc2VxXTtpZihkZWxldGUgdGhpcy5fcGVuZGluZ1JlcGxpZXNbdC5zZXFdLHQuZXJyKXtsZXQgcj10LmVycjt0LmVyci4kaXNFcnJvciYmKHI9bmV3IEVycm9yLHIubmFtZT10LmVyci5uYW1lLHIubWVzc2FnZT10LmVyci5tZXNzYWdlLHIuc3RhY2s9dC5lcnIuc3RhY2spLG4ucmVqZWN0KHIpO3JldHVybn1uLnJlc29sdmUodC5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZSh0KXtjb25zdCBuPXQucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZSh0Lm1ldGhvZCx0LmFyZ3MpLnRoZW4ocz0+e3RoaXMuX3NlbmQobmV3IHJuKHRoaXMuX3dvcmtlcklkLG4scyx2b2lkIDApKX0scz0+e3MuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihzLmRldGFpbD1adChzLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IHJuKHRoaXMuX3dvcmtlcklkLG4sdm9pZCAwLFp0KHMpKSl9KX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKHQpe2NvbnN0IG49dC5yZXEscj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KHQuZXZlbnROYW1lLHQuYXJnKShzPT57dGhpcy5fc2VuZChuZXcgTXModGhpcy5fd29ya2VySWQsbixzKSl9KTt0aGlzLl9wZW5kaW5nRXZlbnRzLnNldChuLHIpfV9oYW5kbGVFdmVudE1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXModC5yZXEpKXtjb25zb2xlLndhcm4oIkdvdCBldmVudCBmb3IgdW5rbm93biByZXEiKTtyZXR1cm59dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmdldCh0LnJlcSkuZmlyZSh0LmV2ZW50KX1faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdFdmVudHMuaGFzKHQucmVxKSl7Y29uc29sZS53YXJuKCJHb3QgdW5zdWJzY3JpYmUgZm9yIHVua25vd24gcmVxIik7cmV0dXJufXRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KHQucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUodC5yZXEpfV9zZW5kKHQpe2NvbnN0IG49W107aWYodC50eXBlPT09MClmb3IobGV0IHI9MDtyPHQuYXJncy5sZW5ndGg7cisrKXQuYXJnc1tyXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LmFyZ3Nbcl0pO2Vsc2UgdC50eXBlPT09MSYmdC5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmbi5wdXNoKHQucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKHQsbil9fWZ1bmN0aW9uIHNuKGUpe3JldHVybiBlWzBdPT09Im8iJiZlWzFdPT09Im4iJiZubihlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIGFuKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZubihlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIFBzKGUsdCxuKXtjb25zdCByPWw9PmZ1bmN0aW9uKCl7Y29uc3Qgbz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQobCxvKX0scz1sPT5mdW5jdGlvbihvKXtyZXR1cm4gbihsLG8pfSxpPXt9O2Zvcihjb25zdCBsIG9mIGUpe2lmKGFuKGwpKXtpW2xdPXMobCk7Y29udGludWV9aWYoc24obCkpe2lbbF09bihsLHZvaWQgMCk7Y29udGludWV9aVtsXT1yKGwpfXJldHVybiBpfWNsYXNzIERze2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PW4sdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgRnMoe3NlbmRNZXNzYWdlOihyLHMpPT57dChyLHMpfSxoYW5kbGVNZXNzYWdlOihyLHMpPT50aGlzLl9oYW5kbGVNZXNzYWdlKHIscyksaGFuZGxlRXZlbnQ6KHIscyk9PnRoaXMuX2hhbmRsZUV2ZW50KHIscyl9KX1vbm1lc3NhZ2UodCl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZSh0KX1faGFuZGxlTWVzc2FnZSh0LG4pe2lmKHQ9PT1ScylyZXR1cm4gdGhpcy5pbml0aWFsaXplKG5bMF0sblsxXSxuWzJdLG5bM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW3RdIT0iZnVuY3Rpb24iKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK3QpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlclt0XS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcixuKSl9Y2F0Y2gocil7cmV0dXJuIFByb21pc2UucmVqZWN0KHIpfX1faGFuZGxlRXZlbnQodCxuKXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYoYW4odCkpe2NvbnN0IHI9dGhpcy5fcmVxdWVzdEhhbmRsZXJbdF0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcixuKTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke3R9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gcn1pZihzbih0KSl7Y29uc3Qgcj10aGlzLl9yZXF1ZXN0SGFuZGxlclt0XTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHt0fSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHJ9dGhyb3cgbmV3IEVycm9yKGBNYWxmb3JtZWQgZXZlbnQgbmFtZSAke3R9YCl9aW5pdGlhbGl6ZSh0LG4scixzKXt0aGlzLl9wcm90b2NvbC5zZXRXb3JrZXJJZCh0KTtjb25zdCBvPVBzKHMsKHUsYyk9PnRoaXMuX3Byb3RvY29sLnNlbmRNZXNzYWdlKHUsYyksKHUsYyk9PnRoaXMuX3Byb3RvY29sLmxpc3Rlbih1LGMpKTtyZXR1cm4gdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5Pyh0aGlzLl9yZXF1ZXN0SGFuZGxlcj10aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3RvcnkobyksUHJvbWlzZS5yZXNvbHZlKHZ0KHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOihuJiYodHlwZW9mIG4uYmFzZVVybDwidSImJmRlbGV0ZSBuLmJhc2VVcmwsdHlwZW9mIG4ucGF0aHM8InUiJiZ0eXBlb2Ygbi5wYXRocy52czwidSImJmRlbGV0ZSBuLnBhdGhzLnZzLHR5cGVvZiBuLnRydXN0ZWRUeXBlc1BvbGljeTwidSImJmRlbGV0ZSBuLnRydXN0ZWRUeXBlc1BvbGljeSxuLmNhdGNoRXJyb3I9ITAsZ2xvYmFsVGhpcy5yZXF1aXJlLmNvbmZpZyhuKSksbmV3IFByb21pc2UoKHUsYyk9Pntjb25zdCBoPWdsb2JhbFRoaXMucmVxdWlyZTtoKFtyXSxmPT57aWYodGhpcy5fcmVxdWVzdEhhbmRsZXI9Zi5jcmVhdGUobyksIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXtjKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpO3JldHVybn11KHZ0KHRoaXMuX3JlcXVlc3RIYW5kbGVyKSl9LGMpfSkpfX1jbGFzcyBtZXtjb25zdHJ1Y3Rvcih0LG4scixzKXt0aGlzLm9yaWdpbmFsU3RhcnQ9dCx0aGlzLm9yaWdpbmFsTGVuZ3RoPW4sdGhpcy5tb2RpZmllZFN0YXJ0PXIsdGhpcy5tb2RpZmllZExlbmd0aD1zfWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiBsbihlLHQpe3JldHVybih0PDw1KS10K2V8MH1mdW5jdGlvbiBUcyhlLHQpe3Q9bG4oMTQ5NDE3LHQpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0PWxuKGUuY2hhckNvZGVBdChuKSx0KTtyZXR1cm4gdH1jbGFzcyBvbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnNvdXJjZT10fWdldEVsZW1lbnRzKCl7Y29uc3QgdD10aGlzLnNvdXJjZSxuPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspbltyXT10LmNoYXJDb2RlQXQocik7cmV0dXJuIG59fWZ1bmN0aW9uIFZzKGUsdCxuKXtyZXR1cm4gbmV3IGdlKG5ldyBvbihlKSxuZXcgb24odCkpLkNvbXB1dGVEaWZmKG4pLmNoYW5nZXN9Y2xhc3Mga2V7c3RhdGljIEFzc2VydCh0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcihuKX19Y2xhc3MgRmV7c3RhdGljIENvcHkodCxuLHIscyxpKXtmb3IobGV0IGw9MDtsPGk7bCsrKXJbcytsXT10W24rbF19c3RhdGljIENvcHkyKHQsbixyLHMsaSl7Zm9yKGxldCBsPTA7bDxpO2wrKylyW3MrbF09dFtuK2xdfX1jbGFzcyB1bntjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsodGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IG1lKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQodCxuKXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCx0KSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCxuKSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudCh0LG4pe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LG4pLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyBnZXtjb25zdHJ1Y3Rvcih0LG4scj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9dCx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPW47Y29uc3RbcyxpLGxdPWdlLl9nZXRFbGVtZW50cyh0KSxbbyx1LGNdPWdlLl9nZXRFbGVtZW50cyhuKTt0aGlzLl9oYXNTdHJpbmdzPWwmJmMsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1zLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9aSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPW8sdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD11LHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KHQpe3JldHVybiB0Lmxlbmd0aD4wJiZ0eXBlb2YgdFswXT09InN0cmluZyJ9c3RhdGljIF9nZXRFbGVtZW50cyh0KXtjb25zdCBuPXQuZ2V0RWxlbWVudHMoKTtpZihnZS5faXNTdHJpbmdBcnJheShuKSl7Y29uc3Qgcj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBzPTAsaT1uLmxlbmd0aDtzPGk7cysrKXJbc109VHMobltzXSwwKTtyZXR1cm5bbixyLCEwXX1yZXR1cm4gbiBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLG4sITFdOltbXSxuZXcgSW50MzJBcnJheShuKSwhMV19RWxlbWVudHNBcmVFcXVhbCh0LG4pe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdIT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtuXT8hMTp0aGlzLl9oYXNTdHJpbmdzP3RoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW25dOiEwfUVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodCxuKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQsbikpcmV0dXJuITE7Y29uc3Qgcj1nZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLHQpLHM9Z2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSxuKTtyZXR1cm4gcj09PXN9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KHQsbil7cmV0dXJuIHR5cGVvZiB0LmdldFN0cmljdEVsZW1lbnQ9PSJmdW5jdGlvbiI/dC5nZXRTdHJpY3RFbGVtZW50KG4pOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0hPT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbbl06ITB9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0hPT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbbl06ITB9Q29tcHV0ZURpZmYodCl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsdCl9X0NvbXB1dGVEaWZmKHQsbixyLHMsaSl7Y29uc3QgbD1bITFdO2xldCBvPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUodCxuLHIscyxsKTtyZXR1cm4gaSYmKG89dGhpcy5QcmV0dGlmeUNoYW5nZXMobykpLHtxdWl0RWFybHk6bFswXSxjaGFuZ2VzOm99fUNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbixyLHMsaSl7Zm9yKGlbMF09ITE7dDw9biYmcjw9cyYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQscik7KXQrKyxyKys7Zm9yKDtuPj10JiZzPj1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobixzKTspbi0tLHMtLTtpZih0Pm58fHI+cyl7bGV0IGY7cmV0dXJuIHI8PXM/KGtlLkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxmPVtuZXcgbWUodCwwLHIscy1yKzEpXSk6dDw9bj8oa2UuQXNzZXJ0KHI9PT1zKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGY9W25ldyBtZSh0LG4tdCsxLHIsMCldKTooa2UuQXNzZXJ0KHQ9PT1uKzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGtlLkFzc2VydChyPT09cysxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxmPVtdKSxmfWNvbnN0IGw9WzBdLG89WzBdLHU9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxuLHIscyxsLG8saSksYz1sWzBdLGg9b1swXTtpZih1IT09bnVsbClyZXR1cm4gdTtpZighaVswXSl7Y29uc3QgZj10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsYyxyLGgsaSk7bGV0IGQ9W107cmV0dXJuIGlbMF0/ZD1bbmV3IG1lKGMrMSxuLShjKzEpKzEsaCsxLHMtKGgrMSkrMSldOmQ9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShjKzEsbixoKzEscyxpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhmLGQpfXJldHVybltuZXcgbWUodCxuLXQrMSxyLHMtcisxKV19V0FMS1RSQUNFKHQsbixyLHMsaSxsLG8sdSxjLGgsZixkLG0sZyx4LHYsTixTKXtsZXQgXz1udWxsLEw9bnVsbCxwPW5ldyB1bixSPW4seT1yLEU9bVswXS12WzBdLXMsST0tMTA3Mzc0MTgyNCxHPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB3PUUrdDt3PT09Unx8dzx5JiZjW3ctMV08Y1t3KzFdPyhmPWNbdysxXSxnPWYtRS1zLGY8SSYmcC5NYXJrTmV4dENoYW5nZSgpLEk9ZixwLkFkZE1vZGlmaWVkRWxlbWVudChmKzEsZyksRT13KzEtdCk6KGY9Y1t3LTFdKzEsZz1mLUUtcyxmPEkmJnAuTWFya05leHRDaGFuZ2UoKSxJPWYtMSxwLkFkZE9yaWdpbmFsRWxlbWVudChmLGcrMSksRT13LTEtdCksRz49MCYmKGM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W0ddLHQ9Y1swXSxSPTEseT1jLmxlbmd0aC0xKX13aGlsZSgtLUc+PS0xKTtpZihfPXAuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxTWzBdKXtsZXQgdz1tWzBdKzEsYj12WzBdKzE7aWYoXyE9PW51bGwmJl8ubGVuZ3RoPjApe2NvbnN0IEM9X1tfLmxlbmd0aC0xXTt3PU1hdGgubWF4KHcsQy5nZXRPcmlnaW5hbEVuZCgpKSxiPU1hdGgubWF4KGIsQy5nZXRNb2RpZmllZEVuZCgpKX1MPVtuZXcgbWUodyxkLXcrMSxiLHgtYisxKV19ZWxzZXtwPW5ldyB1bixSPWwseT1vLEU9bVswXS12WzBdLXUsST0xMDczNzQxODI0LEc9Tj90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IHc9RStpO3c9PT1SfHx3PHkmJmhbdy0xXT49aFt3KzFdPyhmPWhbdysxXS0xLGc9Zi1FLXUsZj5JJiZwLk1hcmtOZXh0Q2hhbmdlKCksST1mKzEscC5BZGRPcmlnaW5hbEVsZW1lbnQoZisxLGcrMSksRT13KzEtaSk6KGY9aFt3LTFdLGc9Zi1FLXUsZj5JJiZwLk1hcmtOZXh0Q2hhbmdlKCksST1mLHAuQWRkTW9kaWZpZWRFbGVtZW50KGYrMSxnKzEpLEU9dy0xLWkpLEc+PTAmJihoPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtHXSxpPWhbMF0sUj0xLHk9aC5sZW5ndGgtMSl9d2hpbGUoLS1HPj0tMSk7TD1wLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMoXyxMKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxuLHIscyxpLGwsbyl7bGV0IHU9MCxjPTAsaD0wLGY9MCxkPTAsbT0wO3QtLSxyLS0saVswXT0wLGxbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IGc9bi10KyhzLXIpLHg9ZysxLHY9bmV3IEludDMyQXJyYXkoeCksTj1uZXcgSW50MzJBcnJheSh4KSxTPXMtcixfPW4tdCxMPXQtcixwPW4tcyx5PShfLVMpJTI9PT0wO3ZbU109dCxOW19dPW4sb1swXT0hMTtmb3IobGV0IEU9MTtFPD1nLzIrMTtFKyspe2xldCBJPTAsRz0wO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChTLUUsRSxTLHgpLGY9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChTK0UsRSxTLHgpO2ZvcihsZXQgYj1oO2I8PWY7Yis9Mil7Yj09PWh8fGI8ZiYmdltiLTFdPHZbYisxXT91PXZbYisxXTp1PXZbYi0xXSsxLGM9dS0oYi1TKS1MO2NvbnN0IEM9dTtmb3IoO3U8biYmYzxzJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodSsxLGMrMSk7KXUrKyxjKys7aWYodltiXT11LHUrYz5JK0cmJihJPXUsRz1jKSwheSYmTWF0aC5hYnMoYi1fKTw9RS0xJiZ1Pj1OW2JdKXJldHVybiBpWzBdPXUsbFswXT1jLEM8PU5bYl0mJkU8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoUyxoLGYsTCxfLGQsbSxwLHYsTix1LG4saSxjLHMsbCx5LG8pOm51bGx9Y29uc3Qgdz0oSS10KyhHLXIpLUUpLzI7aWYodGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUhPT1udWxsJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUoSSx3KSlyZXR1cm4gb1swXT0hMCxpWzBdPUksbFswXT1HLHc+MCYmRTw9MTQ0OD90aGlzLldBTEtUUkFDRShTLGgsZixMLF8sZCxtLHAsdixOLHUsbixpLGMscyxsLHksbyk6KHQrKyxyKyssW25ldyBtZSh0LG4tdCsxLHIscy1yKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKF8tRSxFLF8seCksbT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKF8rRSxFLF8seCk7Zm9yKGxldCBiPWQ7Yjw9bTtiKz0yKXtiPT09ZHx8YjxtJiZOW2ItMV0+PU5bYisxXT91PU5bYisxXS0xOnU9TltiLTFdLGM9dS0oYi1fKS1wO2NvbnN0IEM9dTtmb3IoO3U+dCYmYz5yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodSxjKTspdS0tLGMtLTtpZihOW2JdPXUseSYmTWF0aC5hYnMoYi1TKTw9RSYmdTw9dltiXSlyZXR1cm4gaVswXT11LGxbMF09YyxDPj12W2JdJiZFPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKFMsaCxmLEwsXyxkLG0scCx2LE4sdSxuLGksYyxzLGwseSxvKTpudWxsfWlmKEU8PTE0NDcpe2xldCBiPW5ldyBJbnQzMkFycmF5KGYtaCsyKTtiWzBdPVMtaCsxLEZlLkNvcHkyKHYsaCxiLDEsZi1oKzEpLHRoaXMubV9mb3J3YXJkSGlzdG9yeS5wdXNoKGIpLGI9bmV3IEludDMyQXJyYXkobS1kKzIpLGJbMF09Xy1kKzEsRmUuQ29weTIoTixkLGIsMSxtLWQrMSksdGhpcy5tX3JldmVyc2VIaXN0b3J5LnB1c2goYil9fXJldHVybiB0aGlzLldBTEtUUkFDRShTLGgsZixMLF8sZCxtLHAsdixOLHUsbixpLGMscyxsLHksbyl9UHJldHRpZnlDaGFuZ2VzKHQpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCByPXRbbl0scz1uPHQubGVuZ3RoLTE/dFtuKzFdLm9yaWdpbmFsU3RhcnQ6dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgsaT1uPHQubGVuZ3RoLTE/dFtuKzFdLm1vZGlmaWVkU3RhcnQ6dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgsbD1yLm9yaWdpbmFsTGVuZ3RoPjAsbz1yLm1vZGlmaWVkTGVuZ3RoPjA7Zm9yKDtyLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aDxzJiZyLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aDxpJiYoIWx8fHRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHIub3JpZ2luYWxTdGFydCxyLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCkpJiYoIW98fHRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHIubW9kaWZpZWRTdGFydCxyLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aCkpOyl7Y29uc3QgYz10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwoci5vcmlnaW5hbFN0YXJ0LHIubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoKSYmIWMpYnJlYWs7ci5vcmlnaW5hbFN0YXJ0Kyssci5tb2RpZmllZFN0YXJ0Kyt9Y29uc3QgdT1bbnVsbF07aWYobjx0Lmxlbmd0aC0xJiZ0aGlzLkNoYW5nZXNPdmVybGFwKHRbbl0sdFtuKzFdLHUpKXt0W25dPXVbMF0sdC5zcGxpY2UobisxLDEpLG4tLTtjb250aW51ZX19Zm9yKGxldCBuPXQubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IHI9dFtuXTtsZXQgcz0wLGk9MDtpZihuPjApe2NvbnN0IGY9dFtuLTFdO3M9Zi5vcmlnaW5hbFN0YXJ0K2Yub3JpZ2luYWxMZW5ndGgsaT1mLm1vZGlmaWVkU3RhcnQrZi5tb2RpZmllZExlbmd0aH1jb25zdCBsPXIub3JpZ2luYWxMZW5ndGg+MCxvPXIubW9kaWZpZWRMZW5ndGg+MDtsZXQgdT0wLGM9dGhpcy5fYm91bmRhcnlTY29yZShyLm9yaWdpbmFsU3RhcnQsci5vcmlnaW5hbExlbmd0aCxyLm1vZGlmaWVkU3RhcnQsci5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBmPTE7O2YrKyl7Y29uc3QgZD1yLm9yaWdpbmFsU3RhcnQtZixtPXIubW9kaWZpZWRTdGFydC1mO2lmKGQ8c3x8bTxpfHxsJiYhdGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZCxkK3Iub3JpZ2luYWxMZW5ndGgpfHxvJiYhdGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwobSxtK3IubW9kaWZpZWRMZW5ndGgpKWJyZWFrO2NvbnN0IHg9KGQ9PT1zJiZtPT09aT81OjApK3RoaXMuX2JvdW5kYXJ5U2NvcmUoZCxyLm9yaWdpbmFsTGVuZ3RoLG0sci5tb2RpZmllZExlbmd0aCk7eD5jJiYoYz14LHU9Zil9ci5vcmlnaW5hbFN0YXJ0LT11LHIubW9kaWZpZWRTdGFydC09dTtjb25zdCBoPVtudWxsXTtpZihuPjAmJnRoaXMuQ2hhbmdlc092ZXJsYXAodFtuLTFdLHRbbl0saCkpe3Rbbi0xXT1oWzBdLHQuc3BsaWNlKG4sMSksbisrO2NvbnRpbnVlfX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgbj0xLHI9dC5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcz10W24tMV0saT10W25dLGw9aS5vcmlnaW5hbFN0YXJ0LXMub3JpZ2luYWxTdGFydC1zLm9yaWdpbmFsTGVuZ3RoLG89cy5vcmlnaW5hbFN0YXJ0LHU9aS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGgsYz11LW8saD1zLm1vZGlmaWVkU3RhcnQsZj1pLm1vZGlmaWVkU3RhcnQraS5tb2RpZmllZExlbmd0aCxkPWYtaDtpZihsPDUmJmM8MjAmJmQ8MjApe2NvbnN0IG09dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShvLGMsaCxkLGwpO2lmKG0pe2NvbnN0W2cseF09bTsoZyE9PXMub3JpZ2luYWxTdGFydCtzLm9yaWdpbmFsTGVuZ3RofHx4IT09cy5tb2RpZmllZFN0YXJ0K3MubW9kaWZpZWRMZW5ndGgpJiYocy5vcmlnaW5hbExlbmd0aD1nLXMub3JpZ2luYWxTdGFydCxzLm1vZGlmaWVkTGVuZ3RoPXgtcy5tb2RpZmllZFN0YXJ0LGkub3JpZ2luYWxTdGFydD1nK2wsaS5tb2RpZmllZFN0YXJ0PXgrbCxpLm9yaWdpbmFsTGVuZ3RoPXUtaS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9Zi1pLm1vZGlmaWVkU3RhcnQpfX19cmV0dXJuIHR9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UodCxuLHIscyxpKXtpZihuPGl8fHM8aSlyZXR1cm4gbnVsbDtjb25zdCBsPXQrbi1pKzEsbz1yK3MtaSsxO2xldCB1PTAsYz0wLGg9MDtmb3IobGV0IGY9dDtmPGw7ZisrKWZvcihsZXQgZD1yO2Q8bztkKyspe2NvbnN0IG09dGhpcy5fY29udGlndW91c1NlcXVlbmNlU2NvcmUoZixkLGkpO20+MCYmbT51JiYodT1tLGM9ZixoPWQpfXJldHVybiB1PjA/W2MsaF06bnVsbH1fY29udGlndW91c1NlcXVlbmNlU2NvcmUodCxuLHIpe2xldCBzPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbCh0K2ksbitpKSlyZXR1cm4gMDtzKz10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3QraV0ubGVuZ3RofXJldHVybiBzfV9PcmlnaW5hbElzQm91bmRhcnkodCl7cmV0dXJuIHQ8PTB8fHQ+PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTE/ITA6dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkodCxuKXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkodCl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeSh0LTEpKXJldHVybiEwO2lmKG4+MCl7Y29uc3Qgcj10K247aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KHItMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShyKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KHQpe3JldHVybiB0PD0wfHx0Pj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xPyEwOnRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KHQsbil7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KHQpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkodC0xKSlyZXR1cm4hMDtpZihuPjApe2NvbnN0IHI9dCtuO2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShyLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkocikpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUodCxuLHIscyl7Y29uc3QgaT10aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkodCxuKT8xOjAsbD10aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkocixzKT8xOjA7cmV0dXJuIGkrbH1Db25jYXRlbmF0ZUNoYW5nZXModCxuKXtjb25zdCByPVtdO2lmKHQubGVuZ3RoPT09MHx8bi5sZW5ndGg9PT0wKXJldHVybiBuLmxlbmd0aD4wP246dDtpZih0aGlzLkNoYW5nZXNPdmVybGFwKHRbdC5sZW5ndGgtMV0sblswXSxyKSl7Y29uc3Qgcz1uZXcgQXJyYXkodC5sZW5ndGgrbi5sZW5ndGgtMSk7cmV0dXJuIEZlLkNvcHkodCwwLHMsMCx0Lmxlbmd0aC0xKSxzW3QubGVuZ3RoLTFdPXJbMF0sRmUuQ29weShuLDEscyx0Lmxlbmd0aCxuLmxlbmd0aC0xKSxzfWVsc2V7Y29uc3Qgcz1uZXcgQXJyYXkodC5sZW5ndGgrbi5sZW5ndGgpO3JldHVybiBGZS5Db3B5KHQsMCxzLDAsdC5sZW5ndGgpLEZlLkNvcHkobiwwLHMsdC5sZW5ndGgsbi5sZW5ndGgpLHN9fUNoYW5nZXNPdmVybGFwKHQsbixyKXtpZihrZS5Bc3NlcnQodC5vcmlnaW5hbFN0YXJ0PD1uLm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksa2UuQXNzZXJ0KHQubW9kaWZpZWRTdGFydDw9bi5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnR8fHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQpe2NvbnN0IHM9dC5vcmlnaW5hbFN0YXJ0O2xldCBpPXQub3JpZ2luYWxMZW5ndGg7Y29uc3QgbD10Lm1vZGlmaWVkU3RhcnQ7bGV0IG89dC5tb2RpZmllZExlbmd0aDtyZXR1cm4gdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGg+PW4ub3JpZ2luYWxTdGFydCYmKGk9bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgtdC5vcmlnaW5hbFN0YXJ0KSx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aD49bi5tb2RpZmllZFN0YXJ0JiYobz1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aC10Lm1vZGlmaWVkU3RhcnQpLHJbMF09bmV3IG1lKHMsaSxsLG8pLCEwfWVsc2UgcmV0dXJuIHJbMF09bnVsbCwhMX1DbGlwRGlhZ29uYWxCb3VuZCh0LG4scixzKXtpZih0Pj0wJiZ0PHMpcmV0dXJuIHQ7Y29uc3QgaT1yLGw9cy1yLTEsbz1uJTI9PT0wO2lmKHQ8MCl7Y29uc3QgdT1pJTI9PT0wO3JldHVybiBvPT09dT8wOjF9ZWxzZXtjb25zdCB1PWwlMj09PTA7cmV0dXJuIG89PT11P3MtMTpzLTJ9fX12YXIgY249e0VOVl9UWVBFOiJsb2NhbCIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifTtsZXQgUGU7Y29uc3QgeXQ9Z2xvYmFsVGhpcy52c2NvZGU7aWYodHlwZW9mIHl0PCJ1IiYmdHlwZW9mIHl0LnByb2Nlc3M8InUiKXtjb25zdCBlPXl0LnByb2Nlc3M7UGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZCgpe3JldHVybiBlLmN3ZCgpfX19ZWxzZSB0eXBlb2YgcHJvY2VzczwidSI/UGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gY259LGN3ZCgpe3JldHVybiBjbi5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfX06UGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiB6ZT8id2luMzIiOm1zPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZCgpe3JldHVybiIvIn19O2NvbnN0IG50PVBlLmN3ZCxCcz1QZS5lbnYscXM9UGUucGxhdGZvcm0sSXM9NjUsVXM9OTcsSHM9OTAsV3M9MTIyLGJlPTQ2LGo9NDcsSz05MixfZT01OCx6cz02MztjbGFzcyBobiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbixyKXtsZXQgczt0eXBlb2Ygbj09InN0cmluZyImJm4uaW5kZXhPZigibm90ICIpPT09MD8ocz0ibXVzdCBub3QgYmUiLG49bi5yZXBsYWNlKC9ebm90IC8sIiIpKTpzPSJtdXN0IGJlIjtjb25zdCBpPXQuaW5kZXhPZigiLiIpIT09LTE/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBsPWBUaGUgIiR7dH0iICR7aX0gJHtzfSBvZiB0eXBlICR7bn1gO2wrPWAuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2Ygcn1gLHN1cGVyKGwpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiAkcyhlLHQpe2lmKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgbmV3IGhuKHQsIk9iamVjdCIsZSl9ZnVuY3Rpb24gJChlLHQpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgaG4odCwic3RyaW5nIixlKX1jb25zdCB4ZT1xcz09PSJ3aW4zMiI7ZnVuY3Rpb24gRihlKXtyZXR1cm4gZT09PWp8fGU9PT1LfWZ1bmN0aW9uIEV0KGUpe3JldHVybiBlPT09an1mdW5jdGlvbiBwZShlKXtyZXR1cm4gZT49SXMmJmU8PUhzfHxlPj1VcyYmZTw9V3N9ZnVuY3Rpb24gcnQoZSx0LG4scil7bGV0IHM9IiIsaT0wLGw9LTEsbz0wLHU9MDtmb3IobGV0IGM9MDtjPD1lLmxlbmd0aDsrK2Mpe2lmKGM8ZS5sZW5ndGgpdT1lLmNoYXJDb2RlQXQoYyk7ZWxzZXtpZihyKHUpKWJyZWFrO3U9an1pZihyKHUpKXtpZighKGw9PT1jLTF8fG89PT0xKSlpZihvPT09Mil7aWYocy5sZW5ndGg8Mnx8aSE9PTJ8fHMuY2hhckNvZGVBdChzLmxlbmd0aC0xKSE9PWJlfHxzLmNoYXJDb2RlQXQocy5sZW5ndGgtMikhPT1iZSl7aWYocy5sZW5ndGg+Mil7Y29uc3QgaD1zLmxhc3RJbmRleE9mKG4pO2g9PT0tMT8ocz0iIixpPTApOihzPXMuc2xpY2UoMCxoKSxpPXMubGVuZ3RoLTEtcy5sYXN0SW5kZXhPZihuKSksbD1jLG89MDtjb250aW51ZX1lbHNlIGlmKHMubGVuZ3RoIT09MCl7cz0iIixpPTAsbD1jLG89MDtjb250aW51ZX19dCYmKHMrPXMubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixpPTIpfWVsc2Ugcy5sZW5ndGg+MD9zKz1gJHtufSR7ZS5zbGljZShsKzEsYyl9YDpzPWUuc2xpY2UobCsxLGMpLGk9Yy1sLTE7bD1jLG89MH1lbHNlIHU9PT1iZSYmbyE9PS0xPysrbzpvPS0xfXJldHVybiBzfWZ1bmN0aW9uIGZuKGUsdCl7JHModCwicGF0aE9iamVjdCIpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke3QuZXh0fHwiIn1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke3J9YDpgJHtufSR7ZX0ke3J9YDpyfWNvbnN0IFo9e3Jlc29sdmUoLi4uZSl7bGV0IHQ9IiIsbj0iIixyPSExO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PS0xO3MtLSl7bGV0IGk7aWYocz49MCl7aWYoaT1lW3NdLCQoaSwicGF0aCIpLGkubGVuZ3RoPT09MCljb250aW51ZX1lbHNlIHQubGVuZ3RoPT09MD9pPW50KCk6KGk9QnNbYD0ke3R9YF18fG50KCksKGk9PT12b2lkIDB8fGkuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZpLmNoYXJDb2RlQXQoMik9PT1LKSYmKGk9YCR7dH1cXGApKTtjb25zdCBsPWkubGVuZ3RoO2xldCBvPTAsdT0iIixjPSExO2NvbnN0IGg9aS5jaGFyQ29kZUF0KDApO2lmKGw9PT0xKUYoaCkmJihvPTEsYz0hMCk7ZWxzZSBpZihGKGgpKWlmKGM9ITAsRihpLmNoYXJDb2RlQXQoMSkpKXtsZXQgZj0yLGQ9Zjtmb3IoO2Y8bCYmIUYoaS5jaGFyQ29kZUF0KGYpKTspZisrO2lmKGY8bCYmZiE9PWQpe2NvbnN0IG09aS5zbGljZShkLGYpO2ZvcihkPWY7ZjxsJiZGKGkuY2hhckNvZGVBdChmKSk7KWYrKztpZihmPGwmJmYhPT1kKXtmb3IoZD1mO2Y8bCYmIUYoaS5jaGFyQ29kZUF0KGYpKTspZisrOyhmPT09bHx8ZiE9PWQpJiYodT1gXFxcXCR7bX1cXCR7aS5zbGljZShkLGYpfWAsbz1mKX19fWVsc2Ugbz0xO2Vsc2UgcGUoaCkmJmkuY2hhckNvZGVBdCgxKT09PV9lJiYodT1pLnNsaWNlKDAsMiksbz0yLGw+MiYmRihpLmNoYXJDb2RlQXQoMikpJiYoYz0hMCxvPTMpKTtpZih1Lmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKHUudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9dTtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHtpLnNsaWNlKG8pfVxcJHtufWAscj1jLGMmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49cnQobiwhciwiXFwiLEYpLHI/YCR7dH1cXCR7bn1gOmAke3R9JHtufWB8fCIuIn0sbm9ybWFsaXplKGUpeyQoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuIi4iO2xldCBuPTAscixzPSExO2NvbnN0IGk9ZS5jaGFyQ29kZUF0KDApO2lmKHQ9PT0xKXJldHVybiBFdChpKT8iXFwiOmU7aWYoRihpKSlpZihzPSEwLEYoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IG89Mix1PW87Zm9yKDtvPHQmJiFGKGUuY2hhckNvZGVBdChvKSk7KW8rKztpZihvPHQmJm8hPT11KXtjb25zdCBjPWUuc2xpY2UodSxvKTtmb3IodT1vO288dCYmRihlLmNoYXJDb2RlQXQobykpOylvKys7aWYobzx0JiZvIT09dSl7Zm9yKHU9bztvPHQmJiFGKGUuY2hhckNvZGVBdChvKSk7KW8rKztpZihvPT09dClyZXR1cm5gXFxcXCR7Y31cXCR7ZS5zbGljZSh1KX1cXGA7byE9PXUmJihyPWBcXFxcJHtjfVxcJHtlLnNsaWNlKHUsbyl9YCxuPW8pfX19ZWxzZSBuPTE7ZWxzZSBwZShpKSYmZS5jaGFyQ29kZUF0KDEpPT09X2UmJihyPWUuc2xpY2UoMCwyKSxuPTIsdD4yJiZGKGUuY2hhckNvZGVBdCgyKSkmJihzPSEwLG49MykpO2xldCBsPW48dD9ydChlLnNsaWNlKG4pLCFzLCJcXCIsRik6IiI7cmV0dXJuIGwubGVuZ3RoPT09MCYmIXMmJihsPSIuIiksbC5sZW5ndGg+MCYmRihlLmNoYXJDb2RlQXQodC0xKSkmJihsKz0iXFwiKSxyPT09dm9pZCAwP3M/YFxcJHtsfWA6bDpzP2Ake3J9XFwke2x9YDpgJHtyfSR7bH1gfSxpc0Fic29sdXRlKGUpeyQoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIEYobil8fHQ+MiYmcGUobikmJmUuY2hhckNvZGVBdCgxKT09PV9lJiZGKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7KytpKXtjb25zdCBsPWVbaV07JChsLCJwYXRoIiksbC5sZW5ndGg+MCYmKHQ9PT12b2lkIDA/dD1uPWw6dCs9YFxcJHtsfWApfWlmKHQ9PT12b2lkIDApcmV0dXJuIi4iO2xldCByPSEwLHM9MDtpZih0eXBlb2Ygbj09InN0cmluZyImJkYobi5jaGFyQ29kZUF0KDApKSl7KytzO2NvbnN0IGk9bi5sZW5ndGg7aT4xJiZGKG4uY2hhckNvZGVBdCgxKSkmJigrK3MsaT4yJiYoRihuLmNoYXJDb2RlQXQoMikpPysrczpyPSExKSl9aWYocil7Zm9yKDtzPHQubGVuZ3RoJiZGKHQuY2hhckNvZGVBdChzKSk7KXMrKztzPj0yJiYodD1gXFwke3Quc2xpY2Uocyl9YCl9cmV0dXJuIFoubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKCQoZSwiZnJvbSIpLCQodCwidG8iKSxlPT09dClyZXR1cm4iIjtjb25zdCBuPVoucmVzb2x2ZShlKSxyPVoucmVzb2x2ZSh0KTtpZihuPT09cnx8KGU9bi50b0xvd2VyQ2FzZSgpLHQ9ci50b0xvd2VyQ2FzZSgpLGU9PT10KSlyZXR1cm4iIjtsZXQgcz0wO2Zvcig7czxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KHMpPT09SzspcysrO2xldCBpPWUubGVuZ3RoO2Zvcig7aS0xPnMmJmUuY2hhckNvZGVBdChpLTEpPT09SzspaS0tO2NvbnN0IGw9aS1zO2xldCBvPTA7Zm9yKDtvPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQobyk9PT1LOylvKys7bGV0IHU9dC5sZW5ndGg7Zm9yKDt1LTE+byYmdC5jaGFyQ29kZUF0KHUtMSk9PT1LOyl1LS07Y29uc3QgYz11LW8saD1sPGM/bDpjO2xldCBmPS0xLGQ9MDtmb3IoO2Q8aDtkKyspe2NvbnN0IGc9ZS5jaGFyQ29kZUF0KHMrZCk7aWYoZyE9PXQuY2hhckNvZGVBdChvK2QpKWJyZWFrO2c9PT1LJiYoZj1kKX1pZihkIT09aCl7aWYoZj09PS0xKXJldHVybiByfWVsc2V7aWYoYz5oKXtpZih0LmNoYXJDb2RlQXQobytkKT09PUspcmV0dXJuIHIuc2xpY2UobytkKzEpO2lmKGQ9PT0yKXJldHVybiByLnNsaWNlKG8rZCl9bD5oJiYoZS5jaGFyQ29kZUF0KHMrZCk9PT1LP2Y9ZDpkPT09MiYmKGY9MykpLGY9PT0tMSYmKGY9MCl9bGV0IG09IiI7Zm9yKGQ9cytmKzE7ZDw9aTsrK2QpKGQ9PT1pfHxlLmNoYXJDb2RlQXQoZCk9PT1LKSYmKG0rPW0ubGVuZ3RoPT09MD8iLi4iOiJcXC4uIik7cmV0dXJuIG8rPWYsbS5sZW5ndGg+MD9gJHttfSR7ci5zbGljZShvLHUpfWA6KHIuY2hhckNvZGVBdChvKT09PUsmJisrbyxyLnNsaWNlKG8sdSkpfSx0b05hbWVzcGFjZWRQYXRoKGUpe2lmKHR5cGVvZiBlIT0ic3RyaW5nInx8ZS5sZW5ndGg9PT0wKXJldHVybiBlO2NvbnN0IHQ9Wi5yZXNvbHZlKGUpO2lmKHQubGVuZ3RoPD0yKXJldHVybiBlO2lmKHQuY2hhckNvZGVBdCgwKT09PUspe2lmKHQuY2hhckNvZGVBdCgxKT09PUspe2NvbnN0IG49dC5jaGFyQ29kZUF0KDIpO2lmKG4hPT16cyYmbiE9PWJlKXJldHVybmBcXFxcP1xcVU5DXFwke3Quc2xpY2UoMil9YH19ZWxzZSBpZihwZSh0LmNoYXJDb2RlQXQoMCkpJiZ0LmNoYXJDb2RlQXQoMSk9PT1fZSYmdC5jaGFyQ29kZUF0KDIpPT09SylyZXR1cm5gXFxcXD9cXCR7dH1gO3JldHVybiBlfSxkaXJuYW1lKGUpeyQoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBzPWUuY2hhckNvZGVBdCgwKTtpZih0PT09MSlyZXR1cm4gRihzKT9lOiIuIjtpZihGKHMpKXtpZihuPXI9MSxGKGUuY2hhckNvZGVBdCgxKSkpe2xldCBvPTIsdT1vO2Zvcig7bzx0JiYhRihlLmNoYXJDb2RlQXQobykpOylvKys7aWYobzx0JiZvIT09dSl7Zm9yKHU9bztvPHQmJkYoZS5jaGFyQ29kZUF0KG8pKTspbysrO2lmKG88dCYmbyE9PXUpe2Zvcih1PW87bzx0JiYhRihlLmNoYXJDb2RlQXQobykpOylvKys7aWYobz09PXQpcmV0dXJuIGU7byE9PXUmJihuPXI9bysxKX19fX1lbHNlIHBlKHMpJiZlLmNoYXJDb2RlQXQoMSk9PT1fZSYmKG49dD4yJiZGKGUuY2hhckNvZGVBdCgyKSk/MzoyLHI9bik7bGV0IGk9LTEsbD0hMDtmb3IobGV0IG89dC0xO28+PXI7LS1vKWlmKEYoZS5jaGFyQ29kZUF0KG8pKSl7aWYoIWwpe2k9bzticmVha319ZWxzZSBsPSExO2lmKGk9PT0tMSl7aWYobj09PS0xKXJldHVybiIuIjtpPW59cmV0dXJuIGUuc2xpY2UoMCxpKX0sYmFzZW5hbWUoZSx0KXt0IT09dm9pZCAwJiYkKHQsImV4dCIpLCQoZSwicGF0aCIpO2xldCBuPTAscj0tMSxzPSEwLGk7aWYoZS5sZW5ndGg+PTImJnBlKGUuY2hhckNvZGVBdCgwKSkmJmUuY2hhckNvZGVBdCgxKT09PV9lJiYobj0yKSx0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBsPXQubGVuZ3RoLTEsbz0tMTtmb3IoaT1lLmxlbmd0aC0xO2k+PW47LS1pKXtjb25zdCB1PWUuY2hhckNvZGVBdChpKTtpZihGKHUpKXtpZighcyl7bj1pKzE7YnJlYWt9fWVsc2Ugbz09PS0xJiYocz0hMSxvPWkrMSksbD49MCYmKHU9PT10LmNoYXJDb2RlQXQobCk/LS1sPT09LTEmJihyPWkpOihsPS0xLHI9bykpfXJldHVybiBuPT09cj9yPW86cj09PS0xJiYocj1lLmxlbmd0aCksZS5zbGljZShuLHIpfWZvcihpPWUubGVuZ3RoLTE7aT49bjstLWkpaWYoRihlLmNoYXJDb2RlQXQoaSkpKXtpZighcyl7bj1pKzE7YnJlYWt9fWVsc2Ugcj09PS0xJiYocz0hMSxyPWkrMSk7cmV0dXJuIHI9PT0tMT8iIjplLnNsaWNlKG4scil9LGV4dG5hbWUoZSl7JChlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxzPS0xLGk9ITAsbD0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1fZSYmcGUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IG89ZS5sZW5ndGgtMTtvPj10Oy0tbyl7Y29uc3QgdT1lLmNoYXJDb2RlQXQobyk7aWYoRih1KSl7aWYoIWkpe3I9bysxO2JyZWFrfWNvbnRpbnVlfXM9PT0tMSYmKGk9ITEscz1vKzEpLHU9PT1iZT9uPT09LTE/bj1vOmwhPT0xJiYobD0xKTpuIT09LTEmJihsPS0xKX1yZXR1cm4gbj09PS0xfHxzPT09LTF8fGw9PT0wfHxsPT09MSYmbj09PXMtMSYmbj09PXIrMT8iIjplLnNsaWNlKG4scyl9LGZvcm1hdDpmbi5iaW5kKG51bGwsIlxcIikscGFyc2UoZSl7JChlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoZS5sZW5ndGg9PT0wKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxzPWUuY2hhckNvZGVBdCgwKTtpZihuPT09MSlyZXR1cm4gRihzKT8odC5yb290PXQuZGlyPWUsdCk6KHQuYmFzZT10Lm5hbWU9ZSx0KTtpZihGKHMpKXtpZihyPTEsRihlLmNoYXJDb2RlQXQoMSkpKXtsZXQgZj0yLGQ9Zjtmb3IoO2Y8biYmIUYoZS5jaGFyQ29kZUF0KGYpKTspZisrO2lmKGY8biYmZiE9PWQpe2ZvcihkPWY7ZjxuJiZGKGUuY2hhckNvZGVBdChmKSk7KWYrKztpZihmPG4mJmYhPT1kKXtmb3IoZD1mO2Y8biYmIUYoZS5jaGFyQ29kZUF0KGYpKTspZisrO2Y9PT1uP3I9ZjpmIT09ZCYmKHI9ZisxKX19fX1lbHNlIGlmKHBlKHMpJiZlLmNoYXJDb2RlQXQoMSk9PT1fZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsRihlLmNoYXJDb2RlQXQoMikpKXtpZihuPT09MylyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtyPTN9fXI+MCYmKHQucm9vdD1lLnNsaWNlKDAscikpO2xldCBpPS0xLGw9cixvPS0xLHU9ITAsYz1lLmxlbmd0aC0xLGg9MDtmb3IoO2M+PXI7LS1jKXtpZihzPWUuY2hhckNvZGVBdChjKSxGKHMpKXtpZighdSl7bD1jKzE7YnJlYWt9Y29udGludWV9bz09PS0xJiYodT0hMSxvPWMrMSkscz09PWJlP2k9PT0tMT9pPWM6aCE9PTEmJihoPTEpOmkhPT0tMSYmKGg9LTEpfXJldHVybiBvIT09LTEmJihpPT09LTF8fGg9PT0wfHxoPT09MSYmaT09PW8tMSYmaT09PWwrMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UobCxvKToodC5uYW1lPWUuc2xpY2UobCxpKSx0LmJhc2U9ZS5zbGljZShsLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSkpLGw+MCYmbCE9PXI/dC5kaXI9ZS5zbGljZSgwLGwtMSk6dC5kaXI9dC5yb290LHR9LHNlcDoiXFwiLGRlbGltaXRlcjoiOyIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxPcz0oKCk9PntpZih4ZSl7Y29uc3QgZT0vXFwvZztyZXR1cm4oKT0+e2NvbnN0IHQ9bnQoKS5yZXBsYWNlKGUsIi8iKTtyZXR1cm4gdC5zbGljZSh0LmluZGV4T2YoIi8iKSl9fXJldHVybigpPT5udCgpfSkoKSxlZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSExO2ZvcihsZXQgcj1lLmxlbmd0aC0xO3I+PS0xJiYhbjtyLS0pe2NvbnN0IHM9cj49MD9lW3JdOk9zKCk7JChzLCJwYXRoIikscy5sZW5ndGghPT0wJiYodD1gJHtzfS8ke3R9YCxuPXMuY2hhckNvZGVBdCgwKT09PWopfXJldHVybiB0PXJ0KHQsIW4sIi8iLEV0KSxuP2AvJHt0fWA6dC5sZW5ndGg+MD90OiIuIn0sbm9ybWFsaXplKGUpe2lmKCQoZSwicGF0aCIpLGUubGVuZ3RoPT09MClyZXR1cm4iLiI7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk9PT1qLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09ajtyZXR1cm4gZT1ydChlLCF0LCIvIixFdCksZS5sZW5ndGg9PT0wP3Q/Ii8iOm4/Ii4vIjoiLiI6KG4mJihlKz0iLyIpLHQ/YC8ke2V9YDplKX0saXNBYnNvbHV0ZShlKXtyZXR1cm4gJChlLCJwYXRoIiksZS5sZW5ndGg+MCYmZS5jaGFyQ29kZUF0KDApPT09an0sam9pbiguLi5lKXtpZihlLmxlbmd0aD09PTApcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07JChyLCJwYXRoIiksci5sZW5ndGg+MCYmKHQ9PT12b2lkIDA/dD1yOnQrPWAvJHtyfWApfXJldHVybiB0PT09dm9pZCAwPyIuIjplZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoJChlLCJmcm9tIiksJCh0LCJ0byIpLGU9PT10fHwoZT1lZS5yZXNvbHZlKGUpLHQ9ZWUucmVzb2x2ZSh0KSxlPT09dCkpcmV0dXJuIiI7Y29uc3Qgbj0xLHI9ZS5sZW5ndGgscz1yLW4saT0xLGw9dC5sZW5ndGgtaSxvPXM8bD9zOmw7bGV0IHU9LTEsYz0wO2Zvcig7YzxvO2MrKyl7Y29uc3QgZj1lLmNoYXJDb2RlQXQobitjKTtpZihmIT09dC5jaGFyQ29kZUF0KGkrYykpYnJlYWs7Zj09PWomJih1PWMpfWlmKGM9PT1vKWlmKGw+byl7aWYodC5jaGFyQ29kZUF0KGkrYyk9PT1qKXJldHVybiB0LnNsaWNlKGkrYysxKTtpZihjPT09MClyZXR1cm4gdC5zbGljZShpK2MpfWVsc2Ugcz5vJiYoZS5jaGFyQ29kZUF0KG4rYyk9PT1qP3U9YzpjPT09MCYmKHU9MCkpO2xldCBoPSIiO2ZvcihjPW4rdSsxO2M8PXI7KytjKShjPT09cnx8ZS5jaGFyQ29kZUF0KGMpPT09aikmJihoKz1oLmxlbmd0aD09PTA/Ii4uIjoiLy4uIik7cmV0dXJuYCR7aH0ke3Quc2xpY2UoaSt1KX1gfSx0b05hbWVzcGFjZWRQYXRoKGUpe3JldHVybiBlfSxkaXJuYW1lKGUpe2lmKCQoZSwicGF0aCIpLGUubGVuZ3RoPT09MClyZXR1cm4iLiI7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk9PT1qO2xldCBuPS0xLHI9ITA7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MTstLXMpaWYoZS5jaGFyQ29kZUF0KHMpPT09ail7aWYoIXIpe249czticmVha319ZWxzZSByPSExO3JldHVybiBuPT09LTE/dD8iLyI6Ii4iOnQmJm49PT0xPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3QhPT12b2lkIDAmJiQodCwiZXh0IiksJChlLCJwYXRoIik7bGV0IG49MCxyPS0xLHM9ITAsaTtpZih0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBsPXQubGVuZ3RoLTEsbz0tMTtmb3IoaT1lLmxlbmd0aC0xO2k+PTA7LS1pKXtjb25zdCB1PWUuY2hhckNvZGVBdChpKTtpZih1PT09ail7aWYoIXMpe249aSsxO2JyZWFrfX1lbHNlIG89PT0tMSYmKHM9ITEsbz1pKzEpLGw+PTAmJih1PT09dC5jaGFyQ29kZUF0KGwpPy0tbD09PS0xJiYocj1pKToobD0tMSxyPW8pKX1yZXR1cm4gbj09PXI/cj1vOnI9PT0tMSYmKHI9ZS5sZW5ndGgpLGUuc2xpY2UobixyKX1mb3IoaT1lLmxlbmd0aC0xO2k+PTA7LS1pKWlmKGUuY2hhckNvZGVBdChpKT09PWope2lmKCFzKXtuPWkrMTticmVha319ZWxzZSByPT09LTEmJihzPSExLHI9aSsxKTtyZXR1cm4gcj09PS0xPyIiOmUuc2xpY2UobixyKX0sZXh0bmFtZShlKXskKGUsInBhdGgiKTtsZXQgdD0tMSxuPTAscj0tMSxzPSEwLGk9MDtmb3IobGV0IGw9ZS5sZW5ndGgtMTtsPj0wOy0tbCl7Y29uc3Qgbz1lLmNoYXJDb2RlQXQobCk7aWYobz09PWope2lmKCFzKXtuPWwrMTticmVha31jb250aW51ZX1yPT09LTEmJihzPSExLHI9bCsxKSxvPT09YmU/dD09PS0xP3Q9bDppIT09MSYmKGk9MSk6dCE9PS0xJiYoaT0tMSl9cmV0dXJuIHQ9PT0tMXx8cj09PS0xfHxpPT09MHx8aT09PTEmJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6Zm4uYmluZChudWxsLCIvIikscGFyc2UoZSl7JChlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoZS5sZW5ndGg9PT0wKXJldHVybiB0O2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApPT09ajtsZXQgcjtuPyh0LnJvb3Q9Ii8iLHI9MSk6cj0wO2xldCBzPS0xLGk9MCxsPS0xLG89ITAsdT1lLmxlbmd0aC0xLGM9MDtmb3IoO3U+PXI7LS11KXtjb25zdCBoPWUuY2hhckNvZGVBdCh1KTtpZihoPT09ail7aWYoIW8pe2k9dSsxO2JyZWFrfWNvbnRpbnVlfWw9PT0tMSYmKG89ITEsbD11KzEpLGg9PT1iZT9zPT09LTE/cz11OmMhPT0xJiYoYz0xKTpzIT09LTEmJihjPS0xKX1pZihsIT09LTEpe2NvbnN0IGg9aT09PTAmJm4/MTppO3M9PT0tMXx8Yz09PTB8fGM9PT0xJiZzPT09bC0xJiZzPT09aSsxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShoLGwpOih0Lm5hbWU9ZS5zbGljZShoLHMpLHQuYmFzZT1lLnNsaWNlKGgsbCksdC5leHQ9ZS5zbGljZShzLGwpKX1yZXR1cm4gaT4wP3QuZGlyPWUuc2xpY2UoMCxpLTEpOm4mJih0LmRpcj0iLyIpLHR9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O2VlLndpbjMyPVoud2luMzI9WixlZS5wb3NpeD1aLnBvc2l4PWVlLHhlP1oubm9ybWFsaXplOmVlLm5vcm1hbGl6ZSx4ZT9aLnJlc29sdmU6ZWUucmVzb2x2ZSx4ZT9aLnJlbGF0aXZlOmVlLnJlbGF0aXZlLHhlP1ouZGlybmFtZTplZS5kaXJuYW1lLHhlP1ouYmFzZW5hbWU6ZWUuYmFzZW5hbWUseGU/Wi5leHRuYW1lOmVlLmV4dG5hbWUseGU/Wi5zZXA6ZWUuc2VwO2NvbnN0IEdzPS9eXHdbXHdcZCsuLV0qJC8sanM9L15cLy8sUXM9L15cL1wvLztmdW5jdGlvbiBYcyhlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIUdzLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpe2lmKGUuYXV0aG9yaXR5KXtpZighanMudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoUXMudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfX1mdW5jdGlvbiBKcyhlLHQpe3JldHVybiFlJiYhdD8iZmlsZSI6ZX1mdW5jdGlvbiBZcyhlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09YWUmJih0PWFlK3QpOnQ9YWU7YnJlYWt9cmV0dXJuIHR9Y29uc3QgVz0iIixhZT0iLyIsWnM9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy87Y2xhc3MgTmV7c3RhdGljIGlzVXJpKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTmU/ITA6dD90eXBlb2YgdC5hdXRob3JpdHk9PSJzdHJpbmciJiZ0eXBlb2YgdC5mcmFnbWVudD09InN0cmluZyImJnR5cGVvZiB0LnBhdGg9PSJzdHJpbmciJiZ0eXBlb2YgdC5xdWVyeT09InN0cmluZyImJnR5cGVvZiB0LnNjaGVtZT09InN0cmluZyImJnR5cGVvZiB0LmZzUGF0aD09InN0cmluZyImJnR5cGVvZiB0LndpdGg9PSJmdW5jdGlvbiImJnR5cGVvZiB0LnRvU3RyaW5nPT0iZnVuY3Rpb24iOiExfWNvbnN0cnVjdG9yKHQsbixyLHMsaSxsPSExKXt0eXBlb2YgdD09Im9iamVjdCI/KHRoaXMuc2NoZW1lPXQuc2NoZW1lfHxXLHRoaXMuYXV0aG9yaXR5PXQuYXV0aG9yaXR5fHxXLHRoaXMucGF0aD10LnBhdGh8fFcsdGhpcy5xdWVyeT10LnF1ZXJ5fHxXLHRoaXMuZnJhZ21lbnQ9dC5mcmFnbWVudHx8Vyk6KHRoaXMuc2NoZW1lPUpzKHQsbCksdGhpcy5hdXRob3JpdHk9bnx8Vyx0aGlzLnBhdGg9WXModGhpcy5zY2hlbWUscnx8VyksdGhpcy5xdWVyeT1zfHxXLHRoaXMuZnJhZ21lbnQ9aXx8VyxYcyh0aGlzLGwpKX1nZXQgZnNQYXRoKCl7cmV0dXJuIE10KHRoaXMsITEpfXdpdGgodCl7aWYoIXQpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTpuLGF1dGhvcml0eTpyLHBhdGg6cyxxdWVyeTppLGZyYWdtZW50Omx9PXQ7cmV0dXJuIG49PT12b2lkIDA/bj10aGlzLnNjaGVtZTpuPT09bnVsbCYmKG49Vykscj09PXZvaWQgMD9yPXRoaXMuYXV0aG9yaXR5OnI9PT1udWxsJiYocj1XKSxzPT09dm9pZCAwP3M9dGhpcy5wYXRoOnM9PT1udWxsJiYocz1XKSxpPT09dm9pZCAwP2k9dGhpcy5xdWVyeTppPT09bnVsbCYmKGk9VyksbD09PXZvaWQgMD9sPXRoaXMuZnJhZ21lbnQ6bD09PW51bGwmJihsPVcpLG49PT10aGlzLnNjaGVtZSYmcj09PXRoaXMuYXV0aG9yaXR5JiZzPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmbD09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgRGUobixyLHMsaSxsKX1zdGF0aWMgcGFyc2UodCxuPSExKXtjb25zdCByPVpzLmV4ZWModCk7cmV0dXJuIHI/bmV3IERlKHJbMl18fFcsc3Qocls0XXx8Vyksc3Qocls1XXx8Vyksc3Qocls3XXx8Vyksc3Qocls5XXx8Vyksbik6bmV3IERlKFcsVyxXLFcsVyl9c3RhdGljIGZpbGUodCl7bGV0IG49VztpZih6ZSYmKHQ9dC5yZXBsYWNlKC9cXC9nLGFlKSksdFswXT09PWFlJiZ0WzFdPT09YWUpe2NvbnN0IHI9dC5pbmRleE9mKGFlLDIpO3I9PT0tMT8obj10LnN1YnN0cmluZygyKSx0PWFlKToobj10LnN1YnN0cmluZygyLHIpLHQ9dC5zdWJzdHJpbmcocil8fGFlKX1yZXR1cm4gbmV3IERlKCJmaWxlIixuLHQsVyxXKX1zdGF0aWMgZnJvbSh0LG4pe3JldHVybiBuZXcgRGUodC5zY2hlbWUsdC5hdXRob3JpdHksdC5wYXRoLHQucXVlcnksdC5mcmFnbWVudCxuKX1zdGF0aWMgam9pblBhdGgodCwuLi5uKXtpZighdC5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCByO3JldHVybiB6ZSYmdC5zY2hlbWU9PT0iZmlsZSI/cj1OZS5maWxlKFouam9pbihNdCh0LCEwKSwuLi5uKSkucGF0aDpyPWVlLmpvaW4odC5wYXRoLC4uLm4pLHQud2l0aCh7cGF0aDpyfSl9dG9TdHJpbmcodD0hMSl7cmV0dXJuIGt0KHRoaXMsdCl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZSh0KXt2YXIgbixyO2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBOZSlyZXR1cm4gdDt7Y29uc3Qgcz1uZXcgRGUodCk7cmV0dXJuIHMuX2Zvcm1hdHRlZD0obj10LmV4dGVybmFsKSE9PW51bGwmJm4hPT12b2lkIDA/bjpudWxsLHMuX2ZzUGF0aD10Ll9zZXA9PT1kbiYmKHI9dC5mc1BhdGgpIT09bnVsbCYmciE9PXZvaWQgMD9yOm51bGwsc319ZWxzZSByZXR1cm4gdH19Y29uc3QgZG49emU/MTp2b2lkIDA7Y2xhc3MgRGUgZXh0ZW5kcyBOZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9ybWF0dGVkPW51bGwsdGhpcy5fZnNQYXRoPW51bGx9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9TXQodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyh0PSExKXtyZXR1cm4gdD9rdCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPWt0KHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IHQ9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKHQuZnNQYXRoPXRoaXMuX2ZzUGF0aCx0Ll9zZXA9ZG4pLHRoaXMuX2Zvcm1hdHRlZCYmKHQuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJih0LnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKHQuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKHQuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYodC5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYodC5mcmFnbWVudD10aGlzLmZyYWdtZW50KSx0fX1jb25zdCBtbj17NTg6IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIGduKGUsdCxuKXtsZXQgcixzPS0xO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBsPWUuY2hhckNvZGVBdChpKTtpZihsPj05NyYmbDw9MTIyfHxsPj02NSYmbDw9OTB8fGw+PTQ4JiZsPD01N3x8bD09PTQ1fHxsPT09NDZ8fGw9PT05NXx8bD09PTEyNnx8dCYmbD09PTQ3fHxuJiZsPT09OTF8fG4mJmw9PT05M3x8biYmbD09PTU4KXMhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhzLGkpKSxzPS0xKSxyIT09dm9pZCAwJiYocis9ZS5jaGFyQXQoaSkpO2Vsc2V7cj09PXZvaWQgMCYmKHI9ZS5zdWJzdHIoMCxpKSk7Y29uc3Qgbz1tbltsXTtvIT09dm9pZCAwPyhzIT09LTEmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocyxpKSkscz0tMSkscis9byk6cz09PS0xJiYocz1pKX19cmV0dXJuIHMhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhzKSkpLHIhPT12b2lkIDA/cjplfWZ1bmN0aW9uIEtzKGUpe2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtyPT09MzV8fHI9PT02Mz8odD09PXZvaWQgMCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9bW5bcl0pOnQhPT12b2lkIDAmJih0Kz1lW25dKX1yZXR1cm4gdCE9PXZvaWQgMD90OmV9ZnVuY3Rpb24gTXQoZSx0KXtsZXQgbjtyZXR1cm4gZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmZS5zY2hlbWU9PT0iZmlsZSI/bj1gLy8ke2UuYXV0aG9yaXR5fSR7ZS5wYXRofWA6ZS5wYXRoLmNoYXJDb2RlQXQoMCk9PT00NyYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiZlLnBhdGguY2hhckNvZGVBdCgyKT09PTU4P3Q/bj1lLnBhdGguc3Vic3RyKDEpOm49ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTpuPWUucGF0aCx6ZSYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIGt0KGUsdCl7Y29uc3Qgbj10P0tzOmduO2xldCByPSIiLHtzY2hlbWU6cyxhdXRob3JpdHk6aSxwYXRoOmwscXVlcnk6byxmcmFnbWVudDp1fT1lO2lmKHMmJihyKz1zLHIrPSI6IiksKGl8fHM9PT0iZmlsZSIpJiYocis9YWUscis9YWUpLGkpe2xldCBjPWkuaW5kZXhPZigiQCIpO2lmKGMhPT0tMSl7Y29uc3QgaD1pLnN1YnN0cigwLGMpO2k9aS5zdWJzdHIoYysxKSxjPWgubGFzdEluZGV4T2YoIjoiKSxjPT09LTE/cis9bihoLCExLCExKToocis9bihoLnN1YnN0cigwLGMpLCExLCExKSxyKz0iOiIscis9bihoLnN1YnN0cihjKzEpLCExLCEwKSkscis9IkAifWk9aS50b0xvd2VyQ2FzZSgpLGM9aS5sYXN0SW5kZXhPZigiOiIpLGM9PT0tMT9yKz1uKGksITEsITApOihyKz1uKGkuc3Vic3RyKDAsYyksITEsITApLHIrPWkuc3Vic3RyKGMpKX1pZihsKXtpZihsLmxlbmd0aD49MyYmbC5jaGFyQ29kZUF0KDApPT09NDcmJmwuY2hhckNvZGVBdCgyKT09PTU4KXtjb25zdCBjPWwuY2hhckNvZGVBdCgxKTtjPj02NSYmYzw9OTAmJihsPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGMrMzIpfToke2wuc3Vic3RyKDMpfWApfWVsc2UgaWYobC5sZW5ndGg+PTImJmwuY2hhckNvZGVBdCgxKT09PTU4KXtjb25zdCBjPWwuY2hhckNvZGVBdCgwKTtjPj02NSYmYzw9OTAmJihsPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoYyszMil9OiR7bC5zdWJzdHIoMil9YCl9cis9bihsLCEwLCExKX1yZXR1cm4gbyYmKHIrPSI/IixyKz1uKG8sITEsITEpKSx1JiYocis9IiMiLHIrPXQ/dTpnbih1LCExLCExKSkscn1mdW5jdGlvbiBibihlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaHtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2JuKGUuc3Vic3RyKDMpKTplfX1jb25zdCBfbj0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBzdChlKXtyZXR1cm4gZS5tYXRjaChfbik/ZS5yZXBsYWNlKF9uLHQ9PmJuKHQpKTplfWNsYXNzIEp7Y29uc3RydWN0b3IodCxuKXt0aGlzLmxpbmVOdW1iZXI9dCx0aGlzLmNvbHVtbj1ufXdpdGgodD10aGlzLmxpbmVOdW1iZXIsbj10aGlzLmNvbHVtbil7cmV0dXJuIHQ9PT10aGlzLmxpbmVOdW1iZXImJm49PT10aGlzLmNvbHVtbj90aGlzOm5ldyBKKHQsbil9ZGVsdGEodD0wLG49MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrdCx0aGlzLmNvbHVtbituKX1lcXVhbHModCl7cmV0dXJuIEouZXF1YWxzKHRoaXMsdCl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiF0JiYhbj8hMDohIXQmJiEhbiYmdC5saW5lTnVtYmVyPT09bi5saW5lTnVtYmVyJiZ0LmNvbHVtbj09PW4uY29sdW1ufWlzQmVmb3JlKHQpe3JldHVybiBKLmlzQmVmb3JlKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlKHQsbil7cmV0dXJuIHQubGluZU51bWJlcjxuLmxpbmVOdW1iZXI/ITA6bi5saW5lTnVtYmVyPHQubGluZU51bWJlcj8hMTp0LmNvbHVtbjxuLmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwodCl7cmV0dXJuIEouaXNCZWZvcmVPckVxdWFsKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbCh0LG4pe3JldHVybiB0LmxpbmVOdW1iZXI8bi5saW5lTnVtYmVyPyEwOm4ubGluZU51bWJlcjx0LmxpbmVOdW1iZXI/ITE6dC5jb2x1bW48PW4uY29sdW1ufXN0YXRpYyBjb21wYXJlKHQsbil7Y29uc3Qgcj10LmxpbmVOdW1iZXJ8MCxzPW4ubGluZU51bWJlcnwwO2lmKHI9PT1zKXtjb25zdCBpPXQuY29sdW1ufDAsbD1uLmNvbHVtbnwwO3JldHVybiBpLWx9cmV0dXJuIHItc31jbG9uZSgpe3JldHVybiBuZXcgSih0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KHQpe3JldHVybiBuZXcgSih0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIHQubGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LmNvbHVtbj09Im51bWJlciJ9dG9KU09OKCl7cmV0dXJue2xpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbjp0aGlzLmNvbHVtbn19fWNsYXNzIFB7Y29uc3RydWN0b3IodCxuLHIscyl7dD5yfHx0PT09ciYmbj5zPyh0aGlzLnN0YXJ0TGluZU51bWJlcj1yLHRoaXMuc3RhcnRDb2x1bW49cyx0aGlzLmVuZExpbmVOdW1iZXI9dCx0aGlzLmVuZENvbHVtbj1uKToodGhpcy5zdGFydExpbmVOdW1iZXI9dCx0aGlzLnN0YXJ0Q29sdW1uPW4sdGhpcy5lbmRMaW5lTnVtYmVyPXIsdGhpcy5lbmRDb2x1bW49cyl9aXNFbXB0eSgpe3JldHVybiBQLmlzRW1wdHkodGhpcyl9c3RhdGljIGlzRW1wdHkodCl7cmV0dXJuIHQuc3RhcnRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW59Y29udGFpbnNQb3NpdGlvbih0KXtyZXR1cm4gUC5jb250YWluc1Bvc2l0aW9uKHRoaXMsdCl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24odCxuKXtyZXR1cm4hKG4ubGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5saW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5saW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uY29sdW1uPHQuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmbi5jb2x1bW4+dC5lbmRDb2x1bW4pfXN0YXRpYyBzdHJpY3RDb250YWluc1Bvc2l0aW9uKHQsbil7cmV0dXJuIShuLmxpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmNvbHVtbjw9dC5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmNvbHVtbj49dC5lbmRDb2x1bW4pfWNvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIFAuY29udGFpbnNSYW5nZSh0aGlzLHQpfXN0YXRpYyBjb250YWluc1JhbmdlKHQsbil7cmV0dXJuIShuLnN0YXJ0TGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLnN0YXJ0TGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uc3RhcnRDb2x1bW48dC5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbj50LmVuZENvbHVtbil9c3RyaWN0Q29udGFpbnNSYW5nZSh0KXtyZXR1cm4gUC5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UodCxuKXtyZXR1cm4hKG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmbi5zdGFydENvbHVtbjw9dC5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbj49dC5lbmRDb2x1bW4pfXBsdXNSYW5nZSh0KXtyZXR1cm4gUC5wbHVzUmFuZ2UodGhpcyx0KX1zdGF0aWMgcGx1c1JhbmdlKHQsbil7bGV0IHIscyxpLGw7cmV0dXJuIG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyPyhyPW4uc3RhcnRMaW5lTnVtYmVyLHM9bi5zdGFydENvbHVtbik6bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj8ocj1uLnN0YXJ0TGluZU51bWJlcixzPU1hdGgubWluKG4uc3RhcnRDb2x1bW4sdC5zdGFydENvbHVtbikpOihyPXQuc3RhcnRMaW5lTnVtYmVyLHM9dC5zdGFydENvbHVtbiksbi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcj8oaT1uLmVuZExpbmVOdW1iZXIsbD1uLmVuZENvbHVtbik6bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyPyhpPW4uZW5kTGluZU51bWJlcixsPU1hdGgubWF4KG4uZW5kQ29sdW1uLHQuZW5kQ29sdW1uKSk6KGk9dC5lbmRMaW5lTnVtYmVyLGw9dC5lbmRDb2x1bW4pLG5ldyBQKHIscyxpLGwpfWludGVyc2VjdFJhbmdlcyh0KXtyZXR1cm4gUC5pbnRlcnNlY3RSYW5nZXModGhpcyx0KX1zdGF0aWMgaW50ZXJzZWN0UmFuZ2VzKHQsbil7bGV0IHI9dC5zdGFydExpbmVOdW1iZXIscz10LnN0YXJ0Q29sdW1uLGk9dC5lbmRMaW5lTnVtYmVyLGw9dC5lbmRDb2x1bW47Y29uc3Qgbz1uLnN0YXJ0TGluZU51bWJlcix1PW4uc3RhcnRDb2x1bW4sYz1uLmVuZExpbmVOdW1iZXIsaD1uLmVuZENvbHVtbjtyZXR1cm4gcjxvPyhyPW8scz11KTpyPT09byYmKHM9TWF0aC5tYXgocyx1KSksaT5jPyhpPWMsbD1oKTppPT09YyYmKGw9TWF0aC5taW4obCxoKSkscj5pfHxyPT09aSYmcz5sP251bGw6bmV3IFAocixzLGksbCl9ZXF1YWxzUmFuZ2UodCl7cmV0dXJuIFAuZXF1YWxzUmFuZ2UodGhpcyx0KX1zdGF0aWMgZXF1YWxzUmFuZ2UodCxuKXtyZXR1cm4hdCYmIW4/ITA6ISF0JiYhIW4mJnQuc3RhcnRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW49PT1uLnN0YXJ0Q29sdW1uJiZ0LmVuZExpbmVOdW1iZXI9PT1uLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPT09bi5lbmRDb2x1bW59Z2V0RW5kUG9zaXRpb24oKXtyZXR1cm4gUC5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24odCl7cmV0dXJuIG5ldyBKKHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBQLmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24odCl7cmV0dXJuIG5ldyBKKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgUCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbil9c2V0U3RhcnRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgUCh0LG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gUC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydCh0KXtyZXR1cm4gbmV3IFAodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKX1jb2xsYXBzZVRvRW5kKCl7cmV0dXJuIFAuY29sbGFwc2VUb0VuZCh0aGlzKX1zdGF0aWMgY29sbGFwc2VUb0VuZCh0KXtyZXR1cm4gbmV3IFAodC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbil9ZGVsdGEodCl7cmV0dXJuIG5ldyBQKHRoaXMuc3RhcnRMaW5lTnVtYmVyK3QsdGhpcy5zdGFydENvbHVtbix0aGlzLmVuZExpbmVOdW1iZXIrdCx0aGlzLmVuZENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnModCxuPXQpe3JldHVybiBuZXcgUCh0LmxpbmVOdW1iZXIsdC5jb2x1bW4sbi5saW5lTnVtYmVyLG4uY29sdW1uKX1zdGF0aWMgbGlmdCh0KXtyZXR1cm4gdD9uZXcgUCh0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UodCl7cmV0dXJuIHQmJnR5cGVvZiB0LnN0YXJ0TGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LnN0YXJ0Q29sdW1uPT0ibnVtYmVyIiYmdHlwZW9mIHQuZW5kTGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LmVuZENvbHVtbj09Im51bWJlciJ9c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcodCxuKXtyZXR1cm4hKHQuZW5kTGluZU51bWJlcjxuLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPG4uc3RhcnRDb2x1bW58fG4uZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcodCxuKXtyZXR1cm4hKHQuZW5kTGluZU51bWJlcjxuLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1uLnN0YXJ0Q29sdW1ufHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbjw9dC5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyh0LG4pe2lmKHQmJm4pe2NvbnN0IGk9dC5zdGFydExpbmVOdW1iZXJ8MCxsPW4uc3RhcnRMaW5lTnVtYmVyfDA7aWYoaT09PWwpe2NvbnN0IG89dC5zdGFydENvbHVtbnwwLHU9bi5zdGFydENvbHVtbnwwO2lmKG89PT11KXtjb25zdCBjPXQuZW5kTGluZU51bWJlcnwwLGg9bi5lbmRMaW5lTnVtYmVyfDA7aWYoYz09PWgpe2NvbnN0IGY9dC5lbmRDb2x1bW58MCxkPW4uZW5kQ29sdW1ufDA7cmV0dXJuIGYtZH1yZXR1cm4gYy1ofXJldHVybiBvLXV9cmV0dXJuIGktbH1yZXR1cm4odD8xOjApLShuPzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHModCxuKXtyZXR1cm4gdC5lbmRMaW5lTnVtYmVyPT09bi5lbmRMaW5lTnVtYmVyP3QuZW5kQ29sdW1uPT09bi5lbmRDb2x1bW4/dC5zdGFydExpbmVOdW1iZXI9PT1uLnN0YXJ0TGluZU51bWJlcj90LnN0YXJ0Q29sdW1uLW4uc3RhcnRDb2x1bW46dC5zdGFydExpbmVOdW1iZXItbi5zdGFydExpbmVOdW1iZXI6dC5lbmRDb2x1bW4tbi5lbmRDb2x1bW46dC5lbmRMaW5lTnVtYmVyLW4uZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKHQpe3JldHVybiB0LmVuZExpbmVOdW1iZXI+dC5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fWZ1bmN0aW9uIGVpKGUsdCxuPShyLHMpPT5yPT09cyl7aWYoZT09PXQpcmV0dXJuITA7aWYoIWV8fCF0fHxlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKylpZighbihlW3JdLHRbcl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uKnRpKGUsdCl7bGV0IG4scjtmb3IoY29uc3QgcyBvZiBlKXIhPT12b2lkIDAmJnQocixzKT9uLnB1c2gocyk6KG4mJih5aWVsZCBuKSxuPVtzXSkscj1zO24mJih5aWVsZCBuKX1mdW5jdGlvbiBuaShlLHQpe2ZvcihsZXQgbj0wO248PWUubGVuZ3RoO24rKyl0KG49PT0wP3ZvaWQgMDplW24tMV0sbj09PWUubGVuZ3RoP3ZvaWQgMDplW25dKX1mdW5jdGlvbiByaShlLHQpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQobj09PTA/dm9pZCAwOmVbbi0xXSxlW25dLG4rMT09PWUubGVuZ3RoP3ZvaWQgMDplW24rMV0pfWZ1bmN0aW9uIHNpKGUsdCl7Zm9yKGNvbnN0IG4gb2YgdCllLnB1c2gobil9dmFyIHhuOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGkpe3JldHVybiBpPDB9ZS5pc0xlc3NUaGFuPXQ7ZnVuY3Rpb24gbihpKXtyZXR1cm4gaTw9MH1lLmlzTGVzc1RoYW5PckVxdWFsPW47ZnVuY3Rpb24gcihpKXtyZXR1cm4gaT4wfWUuaXNHcmVhdGVyVGhhbj1yO2Z1bmN0aW9uIHMoaSl7cmV0dXJuIGk9PT0wfWUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49cyxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfSkoeG58fCh4bj17fSkpO2Z1bmN0aW9uIGl0KGUsdCl7cmV0dXJuKG4scik9PnQoZShuKSxlKHIpKX1jb25zdCBhdD0oZSx0KT0+ZS10O2Z1bmN0aW9uIGlpKGUpe3JldHVybih0LG4pPT4tZSh0LG4pfWZ1bmN0aW9uIHBuKGUpe3JldHVybiBlPDA/MDplPjI1NT8yNTU6ZXwwfWZ1bmN0aW9uIFRlKGUpe3JldHVybiBlPDA/MDplPjQyOTQ5NjcyOTU/NDI5NDk2NzI5NTplfDB9Y2xhc3MgYWl7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZXM9dCx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodC5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKHQsbil7dD1UZSh0KTtjb25zdCByPXRoaXMudmFsdWVzLHM9dGhpcy5wcmVmaXhTdW0saT1uLmxlbmd0aDtyZXR1cm4gaT09PTA/ITE6KHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLHQpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KHQpLHQraSksdGhpcy52YWx1ZXMuc2V0KG4sdCksdC0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT10LTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT49MCYmdGhpcy5wcmVmaXhTdW0uc2V0KHMuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZSh0LG4pe3JldHVybiB0PVRlKHQpLG49VGUobiksdGhpcy52YWx1ZXNbdF09PT1uPyExOih0aGlzLnZhbHVlc1t0XT1uLHQtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09dC0xKSwhMCl9cmVtb3ZlVmFsdWVzKHQsbil7dD1UZSh0KSxuPVRlKG4pO2NvbnN0IHI9dGhpcy52YWx1ZXMscz10aGlzLnByZWZpeFN1bTtpZih0Pj1yLmxlbmd0aClyZXR1cm4hMTtjb25zdCBpPXIubGVuZ3RoLXQ7cmV0dXJuIG4+PWkmJihuPWkpLG49PT0wPyExOih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgtbiksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoMCx0KSwwKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSh0K24pLHQpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLHQtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09dC0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChzLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoPT09MD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKHQpe3JldHVybiB0PDA/MDoodD1UZSh0KSx0aGlzLl9nZXRQcmVmaXhTdW0odCkpfV9nZXRQcmVmaXhTdW0odCl7aWYodDw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVt0XTtsZXQgbj10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTtuPT09MCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLG4rKyksdD49dGhpcy52YWx1ZXMubGVuZ3RoJiYodD10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCByPW47cjw9dDtyKyspdGhpcy5wcmVmaXhTdW1bcl09dGhpcy5wcmVmaXhTdW1bci0xXSt0aGlzLnZhbHVlc1tyXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSx0KSx0aGlzLnByZWZpeFN1bVt0XX1nZXRJbmRleE9mKHQpe3Q9TWF0aC5mbG9vcih0KSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IG49MCxyPXRoaXMudmFsdWVzLmxlbmd0aC0xLHM9MCxpPTAsbD0wO2Zvcig7bjw9cjspaWYocz1uKyhyLW4pLzJ8MCxpPXRoaXMucHJlZml4U3VtW3NdLGw9aS10aGlzLnZhbHVlc1tzXSx0PGwpcj1zLTE7ZWxzZSBpZih0Pj1pKW49cysxO2Vsc2UgYnJlYWs7cmV0dXJuIG5ldyBsaShzLHQtbCl9fWNsYXNzIGxpe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5pbmRleD10LHRoaXMucmVtYWluZGVyPW4sdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PXQsdGhpcy5yZW1haW5kZXI9bn19Y2xhc3Mgb2l7Y29uc3RydWN0b3IodCxuLHIscyl7dGhpcy5fdXJpPXQsdGhpcy5fbGluZXM9bix0aGlzLl9lb2w9cix0aGlzLl92ZXJzaW9uSWQ9cyx0aGlzLl9saW5lU3RhcnRzPW51bGwsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9ZGlzcG9zZSgpe3RoaXMuX2xpbmVzLmxlbmd0aD0wfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb25JZH1nZXRUZXh0KCl7cmV0dXJuIHRoaXMuX2NhY2hlZFRleHRWYWx1ZT09PW51bGwmJih0aGlzLl9jYWNoZWRUZXh0VmFsdWU9dGhpcy5fbGluZXMuam9pbih0aGlzLl9lb2wpKSx0aGlzLl9jYWNoZWRUZXh0VmFsdWV9b25FdmVudHModCl7dC5lb2wmJnQuZW9sIT09dGhpcy5fZW9sJiYodGhpcy5fZW9sPXQuZW9sLHRoaXMuX2xpbmVTdGFydHM9bnVsbCk7Y29uc3Qgbj10LmNoYW5nZXM7Zm9yKGNvbnN0IHIgb2Ygbil0aGlzLl9hY2NlcHREZWxldGVSYW5nZShyLnJhbmdlKSx0aGlzLl9hY2NlcHRJbnNlcnRUZXh0KG5ldyBKKHIucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLHIucmFuZ2Uuc3RhcnRDb2x1bW4pLHIudGV4dCk7dGhpcy5fdmVyc2lvbklkPXQudmVyc2lvbklkLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfV9lbnN1cmVMaW5lU3RhcnRzKCl7aWYoIXRoaXMuX2xpbmVTdGFydHMpe2NvbnN0IHQ9dGhpcy5fZW9sLmxlbmd0aCxuPXRoaXMuX2xpbmVzLmxlbmd0aCxyPW5ldyBVaW50MzJBcnJheShuKTtmb3IobGV0IHM9MDtzPG47cysrKXJbc109dGhpcy5fbGluZXNbc10ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgYWkocil9fV9zZXRMaW5lVGV4dCh0LG4pe3RoaXMuX2xpbmVzW3RdPW4sdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZSh0LHRoaXMuX2xpbmVzW3RdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UodCl7aWYodC5zdGFydExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXIpe2lmKHQuc3RhcnRDb2x1bW49PT10LmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQodC5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW3Quc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmVuZENvbHVtbi0xKSk7cmV0dXJufXRoaXMuX3NldExpbmVUZXh0KHQuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsdC5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1t0LmVuZExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuZW5kQ29sdW1uLTEpKSx0aGlzLl9saW5lcy5zcGxpY2UodC5zdGFydExpbmVOdW1iZXIsdC5lbmRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyKSx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnJlbW92ZVZhbHVlcyh0LnN0YXJ0TGluZU51bWJlcix0LmVuZExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXIpfV9hY2NlcHRJbnNlcnRUZXh0KHQsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybjtjb25zdCByPXBzKG4pO2lmKHIubGVuZ3RoPT09MSl7dGhpcy5fc2V0TGluZVRleHQodC5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuY29sdW1uLTEpK3JbMF0rdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmNvbHVtbi0xKSk7cmV0dXJufXJbci5sZW5ndGgtMV0rPXRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSksdGhpcy5fc2V0TGluZVRleHQodC5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuY29sdW1uLTEpK3JbMF0pO2NvbnN0IHM9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoLTEpO2ZvcihsZXQgaT0xO2k8ci5sZW5ndGg7aSsrKXRoaXMuX2xpbmVzLnNwbGljZSh0LmxpbmVOdW1iZXIraS0xLDAscltpXSksc1tpLTFdPXJbaV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGg7dGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5pbnNlcnRWYWx1ZXModC5saW5lTnVtYmVyLHMpfX1jb25zdCB1aT0iYH4hQCMkJV4mKigpLT0rW3tdfVxcfDs6J1wiLC48Pi8/IjtmdW5jdGlvbiBjaShlPSIiKXtsZXQgdD0iKC0/XFxkKlxcLlxcZFxcdyopfChbXiI7Zm9yKGNvbnN0IG4gb2YgdWkpZS5pbmRleE9mKG4pPj0wfHwodCs9IlxcIituKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9Y29uc3Qgdm49Y2koKTtmdW5jdGlvbiB3bihlKXtsZXQgdD12bjtpZihlJiZlIGluc3RhbmNlb2YgUmVnRXhwKWlmKGUuZ2xvYmFsKXQ9ZTtlbHNle2xldCBuPSJnIjtlLmlnbm9yZUNhc2UmJihuKz0iaSIpLGUubXVsdGlsaW5lJiYobis9Im0iKSxlLnVuaWNvZGUmJihuKz0idSIpLHQ9bmV3IFJlZ0V4cChlLnNvdXJjZSxuKX1yZXR1cm4gdC5sYXN0SW5kZXg9MCx0fWNvbnN0IExuPW5ldyB0cztMbi51bnNoaWZ0KHttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9KTtmdW5jdGlvbiBGdChlLHQsbixyLHMpe2lmKHQ9d24odCksc3x8KHM9WmUuZmlyc3QoTG4pKSxuLmxlbmd0aD5zLm1heExlbil7bGV0IGM9ZS1zLm1heExlbi8yO3JldHVybiBjPDA/Yz0wOnIrPWMsbj1uLnN1YnN0cmluZyhjLGUrcy5tYXhMZW4vMiksRnQoZSx0LG4scixzKX1jb25zdCBpPURhdGUubm93KCksbD1lLTEtcjtsZXQgbz0tMSx1PW51bGw7Zm9yKGxldCBjPTE7IShEYXRlLm5vdygpLWk+PXMudGltZUJ1ZGdldCk7YysrKXtjb25zdCBoPWwtcy53aW5kb3dTaXplKmM7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKTtjb25zdCBmPWhpKHQsbixsLG8pO2lmKCFmJiZ1fHwodT1mLGg8PTApKWJyZWFrO289aH1pZih1KXtjb25zdCBjPXt3b3JkOnVbMF0sc3RhcnRDb2x1bW46cisxK3UuaW5kZXgsZW5kQ29sdW1uOnIrMSt1LmluZGV4K3VbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxjfXJldHVybiBudWxsfWZ1bmN0aW9uIGhpKGUsdCxuLHIpe2xldCBzO2Zvcig7cz1lLmV4ZWModCk7KXtjb25zdCBpPXMuaW5kZXh8fDA7aWYoaTw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIHM7aWYocj4wJiZpPnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9Y2xhc3MgUHR7Y29uc3RydWN0b3IodCl7Y29uc3Qgbj1wbih0KTt0aGlzLl9kZWZhdWx0VmFsdWU9bix0aGlzLl9hc2NpaU1hcD1QdC5fY3JlYXRlQXNjaWlNYXAobiksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcCh0KXtjb25zdCBuPW5ldyBVaW50OEFycmF5KDI1Nik7cmV0dXJuIG4uZmlsbCh0KSxufXNldCh0LG4pe2NvbnN0IHI9cG4obik7dD49MCYmdDwyNTY/dGhpcy5fYXNjaWlNYXBbdF09cjp0aGlzLl9tYXAuc2V0KHQscil9Z2V0KHQpe3JldHVybiB0Pj0wJiZ0PDI1Nj90aGlzLl9hc2NpaU1hcFt0XTp0aGlzLl9tYXAuZ2V0KHQpfHx0aGlzLl9kZWZhdWx0VmFsdWV9Y2xlYXIoKXt0aGlzLl9hc2NpaU1hcC5maWxsKHRoaXMuX2RlZmF1bHRWYWx1ZSksdGhpcy5fbWFwLmNsZWFyKCl9fWNsYXNzIGZpe2NvbnN0cnVjdG9yKHQsbixyKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KHQqbik7Zm9yKGxldCBpPTAsbD10Km47aTxsO2krKylzW2ldPXI7dGhpcy5fZGF0YT1zLHRoaXMucm93cz10LHRoaXMuY29scz1ufWdldCh0LG4pe3JldHVybiB0aGlzLl9kYXRhW3QqdGhpcy5jb2xzK25dfXNldCh0LG4scil7dGhpcy5fZGF0YVt0KnRoaXMuY29scytuXT1yfX1jbGFzcyBkaXtjb25zdHJ1Y3Rvcih0KXtsZXQgbj0wLHI9MDtmb3IobGV0IGk9MCxsPXQubGVuZ3RoO2k8bDtpKyspe2NvbnN0W28sdSxjXT10W2ldO3U+biYmKG49dSksbz5yJiYocj1vKSxjPnImJihyPWMpfW4rKyxyKys7Y29uc3Qgcz1uZXcgZmkocixuLDApO2ZvcihsZXQgaT0wLGw9dC5sZW5ndGg7aTxsO2krKyl7Y29uc3Rbbyx1LGNdPXRbaV07cy5zZXQobyx1LGMpfXRoaXMuX3N0YXRlcz1zLHRoaXMuX21heENoYXJDb2RlPW59bmV4dFN0YXRlKHQsbil7cmV0dXJuIG48MHx8bj49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KHQsbil9fWxldCBEdD1udWxsO2Z1bmN0aW9uIG1pKCl7cmV0dXJuIER0PT09bnVsbCYmKER0PW5ldyBkaShbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSksRHR9bGV0ICRlPW51bGw7ZnVuY3Rpb24gZ2koKXtpZigkZT09PW51bGwpeyRlPW5ldyBQdCgwKTtjb25zdCBlPWAgCTw+JyLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKZgO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKSRlLnNldChlLmNoYXJDb2RlQXQobiksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspJGUuc2V0KHQuY2hhckNvZGVBdChuKSwyKX1yZXR1cm4gJGV9Y2xhc3MgbHR7c3RhdGljIF9jcmVhdGVMaW5rKHQsbixyLHMsaSl7bGV0IGw9aS0xO2Rve2NvbnN0IG89bi5jaGFyQ29kZUF0KGwpO2lmKHQuZ2V0KG8pIT09MilicmVhaztsLS19d2hpbGUobD5zKTtpZihzPjApe2NvbnN0IG89bi5jaGFyQ29kZUF0KHMtMSksdT1uLmNoYXJDb2RlQXQobCk7KG89PT00MCYmdT09PTQxfHxvPT09OTEmJnU9PT05M3x8bz09PTEyMyYmdT09PTEyNSkmJmwtLX1yZXR1cm57cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpyLHN0YXJ0Q29sdW1uOnMrMSxlbmRMaW5lTnVtYmVyOnIsZW5kQ29sdW1uOmwrMn0sdXJsOm4uc3Vic3RyaW5nKHMsbCsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyh0LG49bWkoKSl7Y29uc3Qgcj1naSgpLHM9W107Zm9yKGxldCBpPTEsbD10LmdldExpbmVDb3VudCgpO2k8PWw7aSsrKXtjb25zdCBvPXQuZ2V0TGluZUNvbnRlbnQoaSksdT1vLmxlbmd0aDtsZXQgYz0wLGg9MCxmPTAsZD0xLG09ITEsZz0hMSx4PSExLHY9ITE7Zm9yKDtjPHU7KXtsZXQgTj0hMTtjb25zdCBTPW8uY2hhckNvZGVBdChjKTtpZihkPT09MTMpe2xldCBfO3N3aXRjaChTKXtjYXNlIDQwOm09ITAsXz0wO2JyZWFrO2Nhc2UgNDE6Xz1tPzA6MTticmVhaztjYXNlIDkxOng9ITAsZz0hMCxfPTA7YnJlYWs7Y2FzZSA5Mzp4PSExLF89Zz8wOjE7YnJlYWs7Y2FzZSAxMjM6dj0hMCxfPTA7YnJlYWs7Y2FzZSAxMjU6Xz12PzA6MTticmVhaztjYXNlIDM5OmNhc2UgMzQ6Y2FzZSA5NjpmPT09Uz9fPTE6Zj09PTM5fHxmPT09MzR8fGY9PT05Nj9fPTA6Xz0xO2JyZWFrO2Nhc2UgNDI6Xz1mPT09NDI/MTowO2JyZWFrO2Nhc2UgMTI0Ol89Zj09PTEyND8xOjA7YnJlYWs7Y2FzZSAzMjpfPXg/MDoxO2JyZWFrO2RlZmF1bHQ6Xz1yLmdldChTKX1fPT09MSYmKHMucHVzaChsdC5fY3JlYXRlTGluayhyLG8saSxoLGMpKSxOPSEwKX1lbHNlIGlmKGQ9PT0xMil7bGV0IF87Uz09PTkxPyhnPSEwLF89MCk6Xz1yLmdldChTKSxfPT09MT9OPSEwOmQ9MTN9ZWxzZSBkPW4ubmV4dFN0YXRlKGQsUyksZD09PTAmJihOPSEwKTtOJiYoZD0xLG09ITEsZz0hMSx2PSExLGg9YysxLGY9UyksYysrfWQ9PT0xMyYmcy5wdXNoKGx0Ll9jcmVhdGVMaW5rKHIsbyxpLGgsdSkpfXJldHVybiBzfX1mdW5jdGlvbiBiaShlKXtyZXR1cm4hZXx8dHlwZW9mIGUuZ2V0TGluZUNvdW50IT0iZnVuY3Rpb24ifHx0eXBlb2YgZS5nZXRMaW5lQ29udGVudCE9ImZ1bmN0aW9uIj9bXTpsdC5jb21wdXRlTGlua3MoZSl9Y2xhc3MgVHR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldCh0LG4scixzLGkpe2lmKHQmJm4pe2NvbnN0IGw9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQobixpKTtpZihsKXJldHVybntyYW5nZTp0LHZhbHVlOmx9fWlmKHImJnMpe2NvbnN0IGw9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocyxpKTtpZihsKXJldHVybntyYW5nZTpyLHZhbHVlOmx9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldCh0LG4pe2NvbnN0IHI9dGhpcy5udW1iZXJSZXBsYWNlKHQsbik7cmV0dXJuIHIhPT1udWxsP3I6dGhpcy50ZXh0UmVwbGFjZSh0LG4pfW51bWJlclJlcGxhY2UodCxuKXtjb25zdCByPU1hdGgucG93KDEwLHQubGVuZ3RoLSh0Lmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCBzPU51bWJlcih0KTtjb25zdCBpPXBhcnNlRmxvYXQodCk7cmV0dXJuIWlzTmFOKHMpJiYhaXNOYU4oaSkmJnM9PT1pP3M9PT0wJiYhbj9udWxsOihzPU1hdGguZmxvb3IocypyKSxzKz1uP3I6LXIsU3RyaW5nKHMvcikpOm51bGx9dGV4dFJlcGxhY2UodCxuKXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCx0LG4pfXZhbHVlU2V0c1JlcGxhY2UodCxuLHIpe2xldCBzPW51bGw7Zm9yKGxldCBpPTAsbD10Lmxlbmd0aDtzPT09bnVsbCYmaTxsO2krKylzPXRoaXMudmFsdWVTZXRSZXBsYWNlKHRbaV0sbixyKTtyZXR1cm4gc312YWx1ZVNldFJlcGxhY2UodCxuLHIpe2xldCBzPXQuaW5kZXhPZihuKTtyZXR1cm4gcz49MD8ocys9cj8xOi0xLHM8MD9zPXQubGVuZ3RoLTE6cyU9dC5sZW5ndGgsdFtzXSk6bnVsbH19VHQuSU5TVEFOQ0U9bmV3IFR0O2NvbnN0IE5uPU9iamVjdC5mcmVlemUoZnVuY3Rpb24oZSx0KXtjb25zdCBuPXNldFRpbWVvdXQoZS5iaW5kKHQpLDApO3JldHVybntkaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KG4pfX19KTt2YXIgb3Q7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIG49PT1lLk5vbmV8fG49PT1lLkNhbmNlbGxlZHx8biBpbnN0YW5jZW9mIHV0PyEwOiFufHx0eXBlb2YgbiE9Im9iamVjdCI/ITE6dHlwZW9mIG4uaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJib29sZWFuIiYmdHlwZW9mIG4ub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJmdW5jdGlvbiJ9ZS5pc0NhbmNlbGxhdGlvblRva2VuPXQsZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOl90Lk5vbmV9KSxlLkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpObn0pfSkob3R8fChvdD17fSkpO2NsYXNzIHV0e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9ObjoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IHNlKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIF9pe2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9dCYmdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgdXQpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgdXQmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPW90LkNhbmNlbGxlZH1kaXNwb3NlKHQ9ITEpe3ZhciBuO3QmJnRoaXMuY2FuY2VsKCksKG49dGhpcy5fcGFyZW50TGlzdGVuZXIpPT09bnVsbHx8bj09PXZvaWQgMHx8bi5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiB1dCYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPW90Lk5vbmV9fWNsYXNzIFZ0e2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZSh0LG4pe3RoaXMuX2tleUNvZGVUb1N0clt0XT1uLHRoaXMuX3N0clRvS2V5Q29kZVtuLnRvTG93ZXJDYXNlKCldPXR9a2V5Q29kZVRvU3RyKHQpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbdF19c3RyVG9LZXlDb2RlKHQpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgY3Q9bmV3IFZ0LEJ0PW5ldyBWdCxxdD1uZXcgVnQseGk9bmV3IEFycmF5KDIzMCkscGk9T2JqZWN0LmNyZWF0ZShudWxsKSx2aT1PYmplY3QuY3JlYXRlKG51bGwpOyhmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsZSxlXSxbMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFsxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzEsMywiRm4iLDAsZSwwLGUsZSxlXSxbMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzEsNiwiUmVzdW1lIiwwLGUsMCxlLGUsZV0sWzEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFsxLDksIldha2VVcCIsMCxlLDAsZSxlLGVdLFswLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLGUsZV0sWzAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsZSxlXSxbMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIixlLGVdLFswLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLGUsZV0sWzAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsZSxlXSxbMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIixlLGVdLFswLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLGUsZV0sWzAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsZSxlXSxbMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIixlLGVdLFswLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLGUsZV0sWzAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsZSxlXSxbMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIixlLGVdLFswLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLGUsZV0sWzAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsZSxlXSxbMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIixlLGVdLFswLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLGUsZV0sWzAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsZSxlXSxbMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIixlLGVdLFswLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLGUsZV0sWzAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsZSxlXSxbMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIixlLGVdLFswLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLGUsZV0sWzAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsZSxlXSxbMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIixlLGVdLFswLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLGUsZV0sWzAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsZSxlXSxbMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLGUsZV0sWzAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIixlLGVdLFswLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsZSxlXSxbMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLGUsZV0sWzAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IixlLGVdLFswLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsZSxlXSxbMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLGUsZV0sWzAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IixlLGVdLFswLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsZSxlXSxbMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLGUsZV0sWzEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIixlLGVdLFsxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzAsNTEsIk1pbnVzIiw4OCwiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzAsNTIsIkVxdWFsIiw4NiwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFswLDUzLCJCcmFja2V0TGVmdCIsOTIsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbMCw1NCwiQnJhY2tldFJpZ2h0Iiw5NCwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFswLDU1LCJCYWNrc2xhc2giLDkzLCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbMCw1NywiU2VtaWNvbG9uIiw4NSwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFswLDU4LCJRdW90ZSIsOTUsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbMCw1OSwiQmFja3F1b3RlIiw5MSwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFswLDYwLCJDb21tYSIsODcsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFswLDYxLCJQZXJpb2QiLDg5LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFswLDYyLCJTbGFzaCIsOTAsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsZSxlXSxbMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsZSxlXSxbMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsZSxlXSxbMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsZSxlXSxbMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsZSxlXSxbMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsZSxlXSxbMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsZSxlXSxbMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsZSxlXSxbMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsZSxlXSxbMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsZSxlXSxbMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsZSxlXSxbMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsZSxlXSxbMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsZSxlXSxbMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbMSw3NywiU2Nyb2xsTG9jayIsODQsIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFsxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzEsODksIk51bUxvY2siLDgzLCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEsOTAsIk51bXBhZERpdmlkZSIsMTEzLCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwOCwiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIixlLGVdLFsxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTExLCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEsOTMsIk51bXBhZEFkZCIsMTA5LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbMSw5NSwiTnVtcGFkMSIsOTksIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFsxLDk2LCJOdW1wYWQyIiwxMDAsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIixlLGVdLFsxLDk3LCJOdW1wYWQzIiwxMDEsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFsxLDk4LCJOdW1wYWQ0IiwxMDIsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbMSw5OSwiTnVtcGFkNSIsMTAzLCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLGUsZV0sWzEsMTAwLCJOdW1wYWQ2IiwxMDQsIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMSwxMDEsIk51bXBhZDciLDEwNSwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IixlLGVdLFsxLDEwMiwiTnVtcGFkOCIsMTA2LCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEsMTAzLCJOdW1wYWQ5IiwxMDcsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbMSwxMDQsIk51bXBhZDAiLDk4LCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMSwxMDUsIk51bXBhZERlY2ltYWwiLDExMiwiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsZSxlXSxbMCwxMDYsIkludGxCYWNrc2xhc2giLDk3LCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLGUsZV0sWzEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MyxlLGUsZV0sWzEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFsxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFsxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFsxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzEsMTE3LCJGMjAiLDc4LCJGMjAiLDEzMSwiVktfRjIwIixlLGVdLFsxLDExOCwiRjIxIiw3OSwiRjIxIiwxMzIsIlZLX0YyMSIsZSxlXSxbMSwxMTksIkYyMiIsODAsIkYyMiIsMTMzLCJWS19GMjIiLGUsZV0sWzEsMTIwLCJGMjMiLDgxLCJGMjMiLDEzNCwiVktfRjIzIixlLGVdLFsxLDEyMSwiRjI0Iiw4MiwiRjI0IiwxMzUsIlZLX0YyNCIsZSxlXSxbMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMSwxMjQsIlNlbGVjdCIsMCxlLDAsZSxlLGVdLFsxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMSwxMjcsIkN1dCIsMCxlLDAsZSxlLGVdLFsxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFsxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMSwxMzAsIkZpbmQiLDAsZSwwLGUsZSxlXSxbMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTE3LCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTgsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFsxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTksIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsZSxlXSxbMSwxMzQsIk51bXBhZENvbW1hIiwxMTAsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFswLDEzNSwiSW50bFJvIiwxMTUsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMTM3LCJJbnRsWWVuIiwwLGUsMCxlLGUsZV0sWzEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTQwLCJMYW5nMSIsMCxlLDAsZSxlLGVdLFsxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzEsMTQzLCJMYW5nNCIsMCxlLDAsZSxlLGVdLFsxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzEsMTQ2LCJQcm9wcyIsMCxlLDAsZSxlLGVdLFsxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsZSwwLGUsZSxlXSxbMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLGUsMCxlLGUsZV0sWzEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzEsMTU1LCJOdW1wYWRDbGVhciIsMTMxLCJDbGVhciIsMTIsIlZLX0NMRUFSIixlLGVdLFsxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFsxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbMSwwLGUsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsZSxlXSxbMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbMSwwLGUsNTcsIk1ldGEiLDkxLCJWS19DT01NQU5EIixlLGVdLFsxLDE1NywiQ29udHJvbExlZnQiLDUsZSwwLCJWS19MQ09OVFJPTCIsZSxlXSxbMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzEsMTYxLCJDb250cm9sUmlnaHQiLDUsZSwwLCJWS19SQ09OVFJPTCIsZSxlXSxbMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFsxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsZSwwLGUsZSxlXSxbMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMSwxNjgsIk1lZGlhUmVjb3JkIiwwLGUsMCxlLGUsZV0sWzEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxLDE3MSwiTWVkaWFUcmFja05leHQiLDEyNCwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTI1LCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsZSxlXSxbMSwxNzMsIk1lZGlhU3RvcCIsMTI2LCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMSwxNzQsIkVqZWN0IiwwLGUsMCxlLGUsZV0sWzEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTI3LCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFsxLDE3NiwiTWVkaWFTZWxlY3QiLDEyOCwiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsZSxlXSxbMSwxNzcsIkxhdW5jaE1haWwiLDEyOSwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMSwxNzgsIkxhdW5jaEFwcDIiLDEzMCwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMSwxNzksIkxhdW5jaEFwcDEiLDAsZSwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsZSxlXSxbMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMjAsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLGUsZV0sWzEsMTgzLCJCcm93c2VySG9tZSIsMTIxLCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzEsMTg0LCJCcm93c2VyQmFjayIsMTIyLCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLGUsZV0sWzEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTIzLCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzEsMTg2LCJCcm93c2VyU3RvcCIsMCxlLDAsIlZLX0JST1dTRVJfU1RPUCIsZSxlXSxbMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFsxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFsxLDE4OSwiWm9vbVRvZ2dsZSIsMCxlLDAsZSxlLGVdLFsxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFsxLDE5MiwiTWFpbFNlbmQiLDAsZSwwLGUsZSxlXSxbMSwwLGUsMTE0LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxLDAsZSwxMTYsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbMSwwLGUsOTYsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFsxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hBTkdVTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IQU5KQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX05PTkNPTlZFUlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU0VMRUNUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU05BUFNIT1QiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BST0NFU1NLRVkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfREJDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWFNFTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1pPT00iLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19PRU1fQ0xFQVIiLGUsZV1dLG49W10scj1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdFtpLGwsbyx1LGMsaCxmLGQsbV09cztpZihyW2xdfHwocltsXT0hMCxwaVtvXT1sLHZpW28udG9Mb3dlckNhc2UoKV09bCksIW5bdV0pe2lmKG5bdV09ITAsIWMpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHt1fSBhcm91bmQgc2NhbiBjb2RlICR7b31gKTtjdC5kZWZpbmUodSxjKSxCdC5kZWZpbmUodSxkfHxjKSxxdC5kZWZpbmUodSxtfHxkfHxjKX1oJiYoeGlbaF09dSl9fSkoKTt2YXIgU247KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobyl7cmV0dXJuIGN0LmtleUNvZGVUb1N0cihvKX1lLnRvU3RyaW5nPXQ7ZnVuY3Rpb24gbihvKXtyZXR1cm4gY3Quc3RyVG9LZXlDb2RlKG8pfWUuZnJvbVN0cmluZz1uO2Z1bmN0aW9uIHIobyl7cmV0dXJuIEJ0LmtleUNvZGVUb1N0cihvKX1lLnRvVXNlclNldHRpbmdzVVM9cjtmdW5jdGlvbiBzKG8pe3JldHVybiBxdC5rZXlDb2RlVG9TdHIobyl9ZS50b1VzZXJTZXR0aW5nc0dlbmVyYWw9cztmdW5jdGlvbiBpKG8pe3JldHVybiBCdC5zdHJUb0tleUNvZGUobyl8fHF0LnN0clRvS2V5Q29kZShvKX1lLmZyb21Vc2VyU2V0dGluZ3M9aTtmdW5jdGlvbiBsKG8pe2lmKG8+PTk4JiZvPD0xMTMpcmV0dXJuIG51bGw7c3dpdGNoKG8pe2Nhc2UgMTY6cmV0dXJuIlVwIjtjYXNlIDE4OnJldHVybiJEb3duIjtjYXNlIDE1OnJldHVybiJMZWZ0IjtjYXNlIDE3OnJldHVybiJSaWdodCJ9cmV0dXJuIGN0LmtleUNvZGVUb1N0cihvKX1lLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1sfSkoU258fChTbj17fSkpO2Z1bmN0aW9uIHdpKGUsdCl7Y29uc3Qgbj0odCY2NTUzNSk8PDE2Pj4+MDtyZXR1cm4oZXxuKT4+PjB9Y2xhc3MgdGUgZXh0ZW5kcyBQe2NvbnN0cnVjdG9yKHQsbixyLHMpe3N1cGVyKHQsbixyLHMpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj1uLHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPXIsdGhpcy5wb3NpdGlvbkNvbHVtbj1zfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKHQpe3JldHVybiB0ZS5zZWxlY3Rpb25zRXF1YWwodGhpcyx0KX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKHQsbil7cmV0dXJuIHQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09bi5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJnQuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT1uLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZ0LnBvc2l0aW9uTGluZU51bWJlcj09PW4ucG9zaXRpb25MaW5lTnVtYmVyJiZ0LnBvc2l0aW9uQ29sdW1uPT09bi5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0RGlyZWN0aW9uKCk9PT0wP25ldyB0ZSh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbik6bmV3IHRlKHQsbix0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgSih0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgSih0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0RGlyZWN0aW9uKCk9PT0wP25ldyB0ZSh0LG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgdGUodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLHQsbil9c3RhdGljIGZyb21Qb3NpdGlvbnModCxuPXQpe3JldHVybiBuZXcgdGUodC5saW5lTnVtYmVyLHQuY29sdW1uLG4ubGluZU51bWJlcixuLmNvbHVtbil9c3RhdGljIGZyb21SYW5nZSh0LG4pe3JldHVybiBuPT09MD9uZXcgdGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pOm5ldyB0ZSh0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4sdC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24odCl7cmV0dXJuIG5ldyB0ZSh0LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0LnNlbGVjdGlvblN0YXJ0Q29sdW1uLHQucG9zaXRpb25MaW5lTnVtYmVyLHQucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwodCxuKXtpZih0JiYhbnx8IXQmJm4pcmV0dXJuITE7aWYoIXQmJiFuKXJldHVybiEwO2lmKHQubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCByPTAscz10Lmxlbmd0aDtyPHM7cisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbCh0W3JdLG5bcl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiB0LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LnNlbGVjdGlvblN0YXJ0Q29sdW1uPT0ibnVtYmVyIiYmdHlwZW9mIHQucG9zaXRpb25MaW5lTnVtYmVyPT0ibnVtYmVyIiYmdHlwZW9mIHQucG9zaXRpb25Db2x1bW49PSJudW1iZXIifXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKHQsbixyLHMsaSl7cmV0dXJuIGk9PT0wP25ldyB0ZSh0LG4scixzKTpuZXcgdGUocixzLHQsbil9fWNvbnN0IENuPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gYShlLHQpe2lmKGxzKHQpKXtjb25zdCBuPUNuW3RdO2lmKG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGAke2V9IHJlZmVyZW5jZXMgYW4gdW5rbm93biBjb2RpY29uOiAke3R9YCk7dD1ufXJldHVybiBDbltlXT10LHtpZDplfX1jb25zdCBMaT17YWRkOmEoImFkZCIsNmU0KSxwbHVzOmEoInBsdXMiLDZlNCksZ2lzdE5ldzphKCJnaXN0LW5ldyIsNmU0KSxyZXBvQ3JlYXRlOmEoInJlcG8tY3JlYXRlIiw2ZTQpLGxpZ2h0YnVsYjphKCJsaWdodGJ1bGIiLDYwMDAxKSxsaWdodEJ1bGI6YSgibGlnaHQtYnVsYiIsNjAwMDEpLHJlcG86YSgicmVwbyIsNjAwMDIpLHJlcG9EZWxldGU6YSgicmVwby1kZWxldGUiLDYwMDAyKSxnaXN0Rm9yazphKCJnaXN0LWZvcmsiLDYwMDAzKSxyZXBvRm9ya2VkOmEoInJlcG8tZm9ya2VkIiw2MDAwMyksZ2l0UHVsbFJlcXVlc3Q6YSgiZ2l0LXB1bGwtcmVxdWVzdCIsNjAwMDQpLGdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkOmEoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIiw2MDAwNCkscmVjb3JkS2V5czphKCJyZWNvcmQta2V5cyIsNjAwMDUpLGtleWJvYXJkOmEoImtleWJvYXJkIiw2MDAwNSksdGFnOmEoInRhZyIsNjAwMDYpLGdpdFB1bGxSZXF1ZXN0TGFiZWw6YSgiZ2l0LXB1bGwtcmVxdWVzdC1sYWJlbCIsNjAwMDYpLHRhZ0FkZDphKCJ0YWctYWRkIiw2MDAwNiksdGFnUmVtb3ZlOmEoInRhZy1yZW1vdmUiLDYwMDA2KSxwZXJzb246YSgicGVyc29uIiw2MDAwNykscGVyc29uRm9sbG93OmEoInBlcnNvbi1mb2xsb3ciLDYwMDA3KSxwZXJzb25PdXRsaW5lOmEoInBlcnNvbi1vdXRsaW5lIiw2MDAwNykscGVyc29uRmlsbGVkOmEoInBlcnNvbi1maWxsZWQiLDYwMDA3KSxnaXRCcmFuY2g6YSgiZ2l0LWJyYW5jaCIsNjAwMDgpLGdpdEJyYW5jaENyZWF0ZTphKCJnaXQtYnJhbmNoLWNyZWF0ZSIsNjAwMDgpLGdpdEJyYW5jaERlbGV0ZTphKCJnaXQtYnJhbmNoLWRlbGV0ZSIsNjAwMDgpLHNvdXJjZUNvbnRyb2w6YSgic291cmNlLWNvbnRyb2wiLDYwMDA4KSxtaXJyb3I6YSgibWlycm9yIiw2MDAwOSksbWlycm9yUHVibGljOmEoIm1pcnJvci1wdWJsaWMiLDYwMDA5KSxzdGFyOmEoInN0YXIiLDYwMDEwKSxzdGFyQWRkOmEoInN0YXItYWRkIiw2MDAxMCksc3RhckRlbGV0ZTphKCJzdGFyLWRlbGV0ZSIsNjAwMTApLHN0YXJFbXB0eTphKCJzdGFyLWVtcHR5Iiw2MDAxMCksY29tbWVudDphKCJjb21tZW50Iiw2MDAxMSksY29tbWVudEFkZDphKCJjb21tZW50LWFkZCIsNjAwMTEpLGFsZXJ0OmEoImFsZXJ0Iiw2MDAxMiksd2FybmluZzphKCJ3YXJuaW5nIiw2MDAxMiksc2VhcmNoOmEoInNlYXJjaCIsNjAwMTMpLHNlYXJjaFNhdmU6YSgic2VhcmNoLXNhdmUiLDYwMDEzKSxsb2dPdXQ6YSgibG9nLW91dCIsNjAwMTQpLHNpZ25PdXQ6YSgic2lnbi1vdXQiLDYwMDE0KSxsb2dJbjphKCJsb2ctaW4iLDYwMDE1KSxzaWduSW46YSgic2lnbi1pbiIsNjAwMTUpLGV5ZTphKCJleWUiLDYwMDE2KSxleWVVbndhdGNoOmEoImV5ZS11bndhdGNoIiw2MDAxNiksZXllV2F0Y2g6YSgiZXllLXdhdGNoIiw2MDAxNiksY2lyY2xlRmlsbGVkOmEoImNpcmNsZS1maWxsZWQiLDYwMDE3KSxwcmltaXRpdmVEb3Q6YSgicHJpbWl0aXZlLWRvdCIsNjAwMTcpLGNsb3NlRGlydHk6YSgiY2xvc2UtZGlydHkiLDYwMDE3KSxkZWJ1Z0JyZWFrcG9pbnQ6YSgiZGVidWctYnJlYWtwb2ludCIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludERpc2FibGVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLDYwMDE3KSxkZWJ1Z0hpbnQ6YSgiZGVidWctaGludCIsNjAwMTcpLHRlcm1pbmFsRGVjb3JhdGlvblN1Y2Nlc3M6YSgidGVybWluYWwtZGVjb3JhdGlvbi1zdWNjZXNzIiw2MDAxNykscHJpbWl0aXZlU3F1YXJlOmEoInByaW1pdGl2ZS1zcXVhcmUiLDYwMDE4KSxlZGl0OmEoImVkaXQiLDYwMDE5KSxwZW5jaWw6YSgicGVuY2lsIiw2MDAxOSksaW5mbzphKCJpbmZvIiw2MDAyMCksaXNzdWVPcGVuZWQ6YSgiaXNzdWUtb3BlbmVkIiw2MDAyMCksZ2lzdFByaXZhdGU6YSgiZ2lzdC1wcml2YXRlIiw2MDAyMSksZ2l0Rm9ya1ByaXZhdGU6YSgiZ2l0LWZvcmstcHJpdmF0ZSIsNjAwMjEpLGxvY2s6YSgibG9jayIsNjAwMjEpLG1pcnJvclByaXZhdGU6YSgibWlycm9yLXByaXZhdGUiLDYwMDIxKSxjbG9zZTphKCJjbG9zZSIsNjAwMjIpLHJlbW92ZUNsb3NlOmEoInJlbW92ZS1jbG9zZSIsNjAwMjIpLHg6YSgieCIsNjAwMjIpLHJlcG9TeW5jOmEoInJlcG8tc3luYyIsNjAwMjMpLHN5bmM6YSgic3luYyIsNjAwMjMpLGNsb25lOmEoImNsb25lIiw2MDAyNCksZGVza3RvcERvd25sb2FkOmEoImRlc2t0b3AtZG93bmxvYWQiLDYwMDI0KSxiZWFrZXI6YSgiYmVha2VyIiw2MDAyNSksbWljcm9zY29wZTphKCJtaWNyb3Njb3BlIiw2MDAyNSksdm06YSgidm0iLDYwMDI2KSxkZXZpY2VEZXNrdG9wOmEoImRldmljZS1kZXNrdG9wIiw2MDAyNiksZmlsZTphKCJmaWxlIiw2MDAyNyksZmlsZVRleHQ6YSgiZmlsZS10ZXh0Iiw2MDAyNyksbW9yZTphKCJtb3JlIiw2MDAyOCksZWxsaXBzaXM6YSgiZWxsaXBzaXMiLDYwMDI4KSxrZWJhYkhvcml6b250YWw6YSgia2ViYWItaG9yaXpvbnRhbCIsNjAwMjgpLG1haWxSZXBseTphKCJtYWlsLXJlcGx5Iiw2MDAyOSkscmVwbHk6YSgicmVwbHkiLDYwMDI5KSxvcmdhbml6YXRpb246YSgib3JnYW5pemF0aW9uIiw2MDAzMCksb3JnYW5pemF0aW9uRmlsbGVkOmEoIm9yZ2FuaXphdGlvbi1maWxsZWQiLDYwMDMwKSxvcmdhbml6YXRpb25PdXRsaW5lOmEoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIiw2MDAzMCksbmV3RmlsZTphKCJuZXctZmlsZSIsNjAwMzEpLGZpbGVBZGQ6YSgiZmlsZS1hZGQiLDYwMDMxKSxuZXdGb2xkZXI6YSgibmV3LWZvbGRlciIsNjAwMzIpLGZpbGVEaXJlY3RvcnlDcmVhdGU6YSgiZmlsZS1kaXJlY3RvcnktY3JlYXRlIiw2MDAzMiksdHJhc2g6YSgidHJhc2giLDYwMDMzKSx0cmFzaGNhbjphKCJ0cmFzaGNhbiIsNjAwMzMpLGhpc3Rvcnk6YSgiaGlzdG9yeSIsNjAwMzQpLGNsb2NrOmEoImNsb2NrIiw2MDAzNCksZm9sZGVyOmEoImZvbGRlciIsNjAwMzUpLGZpbGVEaXJlY3Rvcnk6YSgiZmlsZS1kaXJlY3RvcnkiLDYwMDM1KSxzeW1ib2xGb2xkZXI6YSgic3ltYm9sLWZvbGRlciIsNjAwMzUpLGxvZ29HaXRodWI6YSgibG9nby1naXRodWIiLDYwMDM2KSxtYXJrR2l0aHViOmEoIm1hcmstZ2l0aHViIiw2MDAzNiksZ2l0aHViOmEoImdpdGh1YiIsNjAwMzYpLHRlcm1pbmFsOmEoInRlcm1pbmFsIiw2MDAzNyksY29uc29sZTphKCJjb25zb2xlIiw2MDAzNykscmVwbDphKCJyZXBsIiw2MDAzNyksemFwOmEoInphcCIsNjAwMzgpLHN5bWJvbEV2ZW50OmEoInN5bWJvbC1ldmVudCIsNjAwMzgpLGVycm9yOmEoImVycm9yIiw2MDAzOSksc3RvcDphKCJzdG9wIiw2MDAzOSksdmFyaWFibGU6YSgidmFyaWFibGUiLDYwMDQwKSxzeW1ib2xWYXJpYWJsZTphKCJzeW1ib2wtdmFyaWFibGUiLDYwMDQwKSxhcnJheTphKCJhcnJheSIsNjAwNDIpLHN5bWJvbEFycmF5OmEoInN5bWJvbC1hcnJheSIsNjAwNDIpLHN5bWJvbE1vZHVsZTphKCJzeW1ib2wtbW9kdWxlIiw2MDA0Myksc3ltYm9sUGFja2FnZTphKCJzeW1ib2wtcGFja2FnZSIsNjAwNDMpLHN5bWJvbE5hbWVzcGFjZTphKCJzeW1ib2wtbmFtZXNwYWNlIiw2MDA0Myksc3ltYm9sT2JqZWN0OmEoInN5bWJvbC1vYmplY3QiLDYwMDQzKSxzeW1ib2xNZXRob2Q6YSgic3ltYm9sLW1ldGhvZCIsNjAwNDQpLHN5bWJvbEZ1bmN0aW9uOmEoInN5bWJvbC1mdW5jdGlvbiIsNjAwNDQpLHN5bWJvbENvbnN0cnVjdG9yOmEoInN5bWJvbC1jb25zdHJ1Y3RvciIsNjAwNDQpLHN5bWJvbEJvb2xlYW46YSgic3ltYm9sLWJvb2xlYW4iLDYwMDQ3KSxzeW1ib2xOdWxsOmEoInN5bWJvbC1udWxsIiw2MDA0Nyksc3ltYm9sTnVtZXJpYzphKCJzeW1ib2wtbnVtZXJpYyIsNjAwNDgpLHN5bWJvbE51bWJlcjphKCJzeW1ib2wtbnVtYmVyIiw2MDA0OCksc3ltYm9sU3RydWN0dXJlOmEoInN5bWJvbC1zdHJ1Y3R1cmUiLDYwMDQ5KSxzeW1ib2xTdHJ1Y3Q6YSgic3ltYm9sLXN0cnVjdCIsNjAwNDkpLHN5bWJvbFBhcmFtZXRlcjphKCJzeW1ib2wtcGFyYW1ldGVyIiw2MDA1MCksc3ltYm9sVHlwZVBhcmFtZXRlcjphKCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xLZXk6YSgic3ltYm9sLWtleSIsNjAwNTEpLHN5bWJvbFRleHQ6YSgic3ltYm9sLXRleHQiLDYwMDUxKSxzeW1ib2xSZWZlcmVuY2U6YSgic3ltYm9sLXJlZmVyZW5jZSIsNjAwNTIpLGdvVG9GaWxlOmEoImdvLXRvLWZpbGUiLDYwMDUyKSxzeW1ib2xFbnVtOmEoInN5bWJvbC1lbnVtIiw2MDA1Myksc3ltYm9sVmFsdWU6YSgic3ltYm9sLXZhbHVlIiw2MDA1Myksc3ltYm9sUnVsZXI6YSgic3ltYm9sLXJ1bGVyIiw2MDA1NCksc3ltYm9sVW5pdDphKCJzeW1ib2wtdW5pdCIsNjAwNTQpLGFjdGl2YXRlQnJlYWtwb2ludHM6YSgiYWN0aXZhdGUtYnJlYWtwb2ludHMiLDYwMDU1KSxhcmNoaXZlOmEoImFyY2hpdmUiLDYwMDU2KSxhcnJvd0JvdGg6YSgiYXJyb3ctYm90aCIsNjAwNTcpLGFycm93RG93bjphKCJhcnJvdy1kb3duIiw2MDA1OCksYXJyb3dMZWZ0OmEoImFycm93LWxlZnQiLDYwMDU5KSxhcnJvd1JpZ2h0OmEoImFycm93LXJpZ2h0Iiw2MDA2MCksYXJyb3dTbWFsbERvd246YSgiYXJyb3ctc21hbGwtZG93biIsNjAwNjEpLGFycm93U21hbGxMZWZ0OmEoImFycm93LXNtYWxsLWxlZnQiLDYwMDYyKSxhcnJvd1NtYWxsUmlnaHQ6YSgiYXJyb3ctc21hbGwtcmlnaHQiLDYwMDYzKSxhcnJvd1NtYWxsVXA6YSgiYXJyb3ctc21hbGwtdXAiLDYwMDY0KSxhcnJvd1VwOmEoImFycm93LXVwIiw2MDA2NSksYmVsbDphKCJiZWxsIiw2MDA2NiksYm9sZDphKCJib2xkIiw2MDA2NyksYm9vazphKCJib29rIiw2MDA2OCksYm9va21hcms6YSgiYm9va21hcmsiLDYwMDY5KSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ6YSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIiw2MDA3MCksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWw6YSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ6YSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIiw2MDA3MiksZGVidWdCcmVha3BvaW50RGF0YTphKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ6YSgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIiw2MDA3MyksZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZDphKCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIiw2MDA3NCksZGVidWdCcmVha3BvaW50TG9nOmEoImRlYnVnLWJyZWFrcG9pbnQtbG9nIiw2MDA3NSksZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ6YSgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLDYwMDc1KSxicmllZmNhc2U6YSgiYnJpZWZjYXNlIiw2MDA3NiksYnJvYWRjYXN0OmEoImJyb2FkY2FzdCIsNjAwNzcpLGJyb3dzZXI6YSgiYnJvd3NlciIsNjAwNzgpLGJ1ZzphKCJidWciLDYwMDc5KSxjYWxlbmRhcjphKCJjYWxlbmRhciIsNjAwODApLGNhc2VTZW5zaXRpdmU6YSgiY2FzZS1zZW5zaXRpdmUiLDYwMDgxKSxjaGVjazphKCJjaGVjayIsNjAwODIpLGNoZWNrbGlzdDphKCJjaGVja2xpc3QiLDYwMDgzKSxjaGV2cm9uRG93bjphKCJjaGV2cm9uLWRvd24iLDYwMDg0KSxjaGV2cm9uTGVmdDphKCJjaGV2cm9uLWxlZnQiLDYwMDg1KSxjaGV2cm9uUmlnaHQ6YSgiY2hldnJvbi1yaWdodCIsNjAwODYpLGNoZXZyb25VcDphKCJjaGV2cm9uLXVwIiw2MDA4NyksY2hyb21lQ2xvc2U6YSgiY2hyb21lLWNsb3NlIiw2MDA4OCksY2hyb21lTWF4aW1pemU6YSgiY2hyb21lLW1heGltaXplIiw2MDA4OSksY2hyb21lTWluaW1pemU6YSgiY2hyb21lLW1pbmltaXplIiw2MDA5MCksY2hyb21lUmVzdG9yZTphKCJjaHJvbWUtcmVzdG9yZSIsNjAwOTEpLGNpcmNsZU91dGxpbmU6YSgiY2lyY2xlLW91dGxpbmUiLDYwMDkyKSxjaXJjbGU6YSgiY2lyY2xlIiw2MDA5MiksZGVidWdCcmVha3BvaW50VW52ZXJpZmllZDphKCJkZWJ1Zy1icmVha3BvaW50LXVudmVyaWZpZWQiLDYwMDkyKSx0ZXJtaW5hbERlY29yYXRpb25JbmNvbXBsZXRlOmEoInRlcm1pbmFsLWRlY29yYXRpb24taW5jb21wbGV0ZSIsNjAwOTIpLGNpcmNsZVNsYXNoOmEoImNpcmNsZS1zbGFzaCIsNjAwOTMpLGNpcmN1aXRCb2FyZDphKCJjaXJjdWl0LWJvYXJkIiw2MDA5NCksY2xlYXJBbGw6YSgiY2xlYXItYWxsIiw2MDA5NSksY2xpcHB5OmEoImNsaXBweSIsNjAwOTYpLGNsb3NlQWxsOmEoImNsb3NlLWFsbCIsNjAwOTcpLGNsb3VkRG93bmxvYWQ6YSgiY2xvdWQtZG93bmxvYWQiLDYwMDk4KSxjbG91ZFVwbG9hZDphKCJjbG91ZC11cGxvYWQiLDYwMDk5KSxjb2RlOmEoImNvZGUiLDYwMTAwKSxjb2xsYXBzZUFsbDphKCJjb2xsYXBzZS1hbGwiLDYwMTAxKSxjb2xvck1vZGU6YSgiY29sb3ItbW9kZSIsNjAxMDIpLGNvbW1lbnREaXNjdXNzaW9uOmEoImNvbW1lbnQtZGlzY3Vzc2lvbiIsNjAxMDMpLGNyZWRpdENhcmQ6YSgiY3JlZGl0LWNhcmQiLDYwMTA1KSxkYXNoOmEoImRhc2giLDYwMTA4KSxkYXNoYm9hcmQ6YSgiZGFzaGJvYXJkIiw2MDEwOSksZGF0YWJhc2U6YSgiZGF0YWJhc2UiLDYwMTEwKSxkZWJ1Z0NvbnRpbnVlOmEoImRlYnVnLWNvbnRpbnVlIiw2MDExMSksZGVidWdEaXNjb25uZWN0OmEoImRlYnVnLWRpc2Nvbm5lY3QiLDYwMTEyKSxkZWJ1Z1BhdXNlOmEoImRlYnVnLXBhdXNlIiw2MDExMyksZGVidWdSZXN0YXJ0OmEoImRlYnVnLXJlc3RhcnQiLDYwMTE0KSxkZWJ1Z1N0YXJ0OmEoImRlYnVnLXN0YXJ0Iiw2MDExNSksZGVidWdTdGVwSW50bzphKCJkZWJ1Zy1zdGVwLWludG8iLDYwMTE2KSxkZWJ1Z1N0ZXBPdXQ6YSgiZGVidWctc3RlcC1vdXQiLDYwMTE3KSxkZWJ1Z1N0ZXBPdmVyOmEoImRlYnVnLXN0ZXAtb3ZlciIsNjAxMTgpLGRlYnVnU3RvcDphKCJkZWJ1Zy1zdG9wIiw2MDExOSksZGVidWc6YSgiZGVidWciLDYwMTIwKSxkZXZpY2VDYW1lcmFWaWRlbzphKCJkZXZpY2UtY2FtZXJhLXZpZGVvIiw2MDEyMSksZGV2aWNlQ2FtZXJhOmEoImRldmljZS1jYW1lcmEiLDYwMTIyKSxkZXZpY2VNb2JpbGU6YSgiZGV2aWNlLW1vYmlsZSIsNjAxMjMpLGRpZmZBZGRlZDphKCJkaWZmLWFkZGVkIiw2MDEyNCksZGlmZklnbm9yZWQ6YSgiZGlmZi1pZ25vcmVkIiw2MDEyNSksZGlmZk1vZGlmaWVkOmEoImRpZmYtbW9kaWZpZWQiLDYwMTI2KSxkaWZmUmVtb3ZlZDphKCJkaWZmLXJlbW92ZWQiLDYwMTI3KSxkaWZmUmVuYW1lZDphKCJkaWZmLXJlbmFtZWQiLDYwMTI4KSxkaWZmOmEoImRpZmYiLDYwMTI5KSxkaWZmU2lkZWJ5c2lkZTphKCJkaWZmLXNpZGVieXNpZGUiLDYwMTI5KSxkaXNjYXJkOmEoImRpc2NhcmQiLDYwMTMwKSxlZGl0b3JMYXlvdXQ6YSgiZWRpdG9yLWxheW91dCIsNjAxMzEpLGVtcHR5V2luZG93OmEoImVtcHR5LXdpbmRvdyIsNjAxMzIpLGV4Y2x1ZGU6YSgiZXhjbHVkZSIsNjAxMzMpLGV4dGVuc2lvbnM6YSgiZXh0ZW5zaW9ucyIsNjAxMzQpLGV5ZUNsb3NlZDphKCJleWUtY2xvc2VkIiw2MDEzNSksZmlsZUJpbmFyeTphKCJmaWxlLWJpbmFyeSIsNjAxMzYpLGZpbGVDb2RlOmEoImZpbGUtY29kZSIsNjAxMzcpLGZpbGVNZWRpYTphKCJmaWxlLW1lZGlhIiw2MDEzOCksZmlsZVBkZjphKCJmaWxlLXBkZiIsNjAxMzkpLGZpbGVTdWJtb2R1bGU6YSgiZmlsZS1zdWJtb2R1bGUiLDYwMTQwKSxmaWxlU3ltbGlua0RpcmVjdG9yeTphKCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iiw2MDE0MSksZmlsZVN5bWxpbmtGaWxlOmEoImZpbGUtc3ltbGluay1maWxlIiw2MDE0MiksZmlsZVppcDphKCJmaWxlLXppcCIsNjAxNDMpLGZpbGVzOmEoImZpbGVzIiw2MDE0NCksZmlsdGVyOmEoImZpbHRlciIsNjAxNDUpLGZsYW1lOmEoImZsYW1lIiw2MDE0NiksZm9sZERvd246YSgiZm9sZC1kb3duIiw2MDE0NyksZm9sZFVwOmEoImZvbGQtdXAiLDYwMTQ4KSxmb2xkOmEoImZvbGQiLDYwMTQ5KSxmb2xkZXJBY3RpdmU6YSgiZm9sZGVyLWFjdGl2ZSIsNjAxNTApLGZvbGRlck9wZW5lZDphKCJmb2xkZXItb3BlbmVkIiw2MDE1MSksZ2VhcjphKCJnZWFyIiw2MDE1MiksZ2lmdDphKCJnaWZ0Iiw2MDE1MyksZ2lzdFNlY3JldDphKCJnaXN0LXNlY3JldCIsNjAxNTQpLGdpc3Q6YSgiZ2lzdCIsNjAxNTUpLGdpdENvbW1pdDphKCJnaXQtY29tbWl0Iiw2MDE1NiksZ2l0Q29tcGFyZTphKCJnaXQtY29tcGFyZSIsNjAxNTcpLGNvbXBhcmVDaGFuZ2VzOmEoImNvbXBhcmUtY2hhbmdlcyIsNjAxNTcpLGdpdE1lcmdlOmEoImdpdC1tZXJnZSIsNjAxNTgpLGdpdGh1YkFjdGlvbjphKCJnaXRodWItYWN0aW9uIiw2MDE1OSksZ2l0aHViQWx0OmEoImdpdGh1Yi1hbHQiLDYwMTYwKSxnbG9iZTphKCJnbG9iZSIsNjAxNjEpLGdyYWJiZXI6YSgiZ3JhYmJlciIsNjAxNjIpLGdyYXBoOmEoImdyYXBoIiw2MDE2MyksZ3JpcHBlcjphKCJncmlwcGVyIiw2MDE2NCksaGVhcnQ6YSgiaGVhcnQiLDYwMTY1KSxob21lOmEoImhvbWUiLDYwMTY2KSxob3Jpem9udGFsUnVsZTphKCJob3Jpem9udGFsLXJ1bGUiLDYwMTY3KSxodWJvdDphKCJodWJvdCIsNjAxNjgpLGluYm94OmEoImluYm94Iiw2MDE2OSksaXNzdWVSZW9wZW5lZDphKCJpc3N1ZS1yZW9wZW5lZCIsNjAxNzEpLGlzc3VlczphKCJpc3N1ZXMiLDYwMTcyKSxpdGFsaWM6YSgiaXRhbGljIiw2MDE3MyksamVyc2V5OmEoImplcnNleSIsNjAxNzQpLGpzb246YSgianNvbiIsNjAxNzUpLGtlYmFiVmVydGljYWw6YSgia2ViYWItdmVydGljYWwiLDYwMTc2KSxrZXk6YSgia2V5Iiw2MDE3NyksbGF3OmEoImxhdyIsNjAxNzgpLGxpZ2h0YnVsYkF1dG9maXg6YSgibGlnaHRidWxiLWF1dG9maXgiLDYwMTc5KSxsaW5rRXh0ZXJuYWw6YSgibGluay1leHRlcm5hbCIsNjAxODApLGxpbms6YSgibGluayIsNjAxODEpLGxpc3RPcmRlcmVkOmEoImxpc3Qtb3JkZXJlZCIsNjAxODIpLGxpc3RVbm9yZGVyZWQ6YSgibGlzdC11bm9yZGVyZWQiLDYwMTgzKSxsaXZlU2hhcmU6YSgibGl2ZS1zaGFyZSIsNjAxODQpLGxvYWRpbmc6YSgibG9hZGluZyIsNjAxODUpLGxvY2F0aW9uOmEoImxvY2F0aW9uIiw2MDE4NiksbWFpbFJlYWQ6YSgibWFpbC1yZWFkIiw2MDE4NyksbWFpbDphKCJtYWlsIiw2MDE4OCksbWFya2Rvd246YSgibWFya2Rvd24iLDYwMTg5KSxtZWdhcGhvbmU6YSgibWVnYXBob25lIiw2MDE5MCksbWVudGlvbjphKCJtZW50aW9uIiw2MDE5MSksbWlsZXN0b25lOmEoIm1pbGVzdG9uZSIsNjAxOTIpLGdpdFB1bGxSZXF1ZXN0TWlsZXN0b25lOmEoImdpdC1wdWxsLXJlcXVlc3QtbWlsZXN0b25lIiw2MDE5MiksbW9ydGFyQm9hcmQ6YSgibW9ydGFyLWJvYXJkIiw2MDE5MyksbW92ZTphKCJtb3ZlIiw2MDE5NCksbXVsdGlwbGVXaW5kb3dzOmEoIm11bHRpcGxlLXdpbmRvd3MiLDYwMTk1KSxtdXRlOmEoIm11dGUiLDYwMTk2KSxub05ld2xpbmU6YSgibm8tbmV3bGluZSIsNjAxOTcpLG5vdGU6YSgibm90ZSIsNjAxOTgpLG9jdG9mYWNlOmEoIm9jdG9mYWNlIiw2MDE5OSksb3BlblByZXZpZXc6YSgib3Blbi1wcmV2aWV3Iiw2MDIwMCkscGFja2FnZTphKCJwYWNrYWdlIiw2MDIwMSkscGFpbnRjYW46YSgicGFpbnRjYW4iLDYwMjAyKSxwaW46YSgicGluIiw2MDIwMykscGxheTphKCJwbGF5Iiw2MDIwNCkscnVuOmEoInJ1biIsNjAyMDQpLHBsdWc6YSgicGx1ZyIsNjAyMDUpLHByZXNlcnZlQ2FzZTphKCJwcmVzZXJ2ZS1jYXNlIiw2MDIwNikscHJldmlldzphKCJwcmV2aWV3Iiw2MDIwNykscHJvamVjdDphKCJwcm9qZWN0Iiw2MDIwOCkscHVsc2U6YSgicHVsc2UiLDYwMjA5KSxxdWVzdGlvbjphKCJxdWVzdGlvbiIsNjAyMTApLHF1b3RlOmEoInF1b3RlIiw2MDIxMSkscmFkaW9Ub3dlcjphKCJyYWRpby10b3dlciIsNjAyMTIpLHJlYWN0aW9uczphKCJyZWFjdGlvbnMiLDYwMjEzKSxyZWZlcmVuY2VzOmEoInJlZmVyZW5jZXMiLDYwMjE0KSxyZWZyZXNoOmEoInJlZnJlc2giLDYwMjE1KSxyZWdleDphKCJyZWdleCIsNjAyMTYpLHJlbW90ZUV4cGxvcmVyOmEoInJlbW90ZS1leHBsb3JlciIsNjAyMTcpLHJlbW90ZTphKCJyZW1vdGUiLDYwMjE4KSxyZW1vdmU6YSgicmVtb3ZlIiw2MDIxOSkscmVwbGFjZUFsbDphKCJyZXBsYWNlLWFsbCIsNjAyMjApLHJlcGxhY2U6YSgicmVwbGFjZSIsNjAyMjEpLHJlcG9DbG9uZTphKCJyZXBvLWNsb25lIiw2MDIyMikscmVwb0ZvcmNlUHVzaDphKCJyZXBvLWZvcmNlLXB1c2giLDYwMjIzKSxyZXBvUHVsbDphKCJyZXBvLXB1bGwiLDYwMjI0KSxyZXBvUHVzaDphKCJyZXBvLXB1c2giLDYwMjI1KSxyZXBvcnQ6YSgicmVwb3J0Iiw2MDIyNikscmVxdWVzdENoYW5nZXM6YSgicmVxdWVzdC1jaGFuZ2VzIiw2MDIyNykscm9ja2V0OmEoInJvY2tldCIsNjAyMjgpLHJvb3RGb2xkZXJPcGVuZWQ6YSgicm9vdC1mb2xkZXItb3BlbmVkIiw2MDIyOSkscm9vdEZvbGRlcjphKCJyb290LWZvbGRlciIsNjAyMzApLHJzczphKCJyc3MiLDYwMjMxKSxydWJ5OmEoInJ1YnkiLDYwMjMyKSxzYXZlQWxsOmEoInNhdmUtYWxsIiw2MDIzMyksc2F2ZUFzOmEoInNhdmUtYXMiLDYwMjM0KSxzYXZlOmEoInNhdmUiLDYwMjM1KSxzY3JlZW5GdWxsOmEoInNjcmVlbi1mdWxsIiw2MDIzNiksc2NyZWVuTm9ybWFsOmEoInNjcmVlbi1ub3JtYWwiLDYwMjM3KSxzZWFyY2hTdG9wOmEoInNlYXJjaC1zdG9wIiw2MDIzOCksc2VydmVyOmEoInNlcnZlciIsNjAyNDApLHNldHRpbmdzR2VhcjphKCJzZXR0aW5ncy1nZWFyIiw2MDI0MSksc2V0dGluZ3M6YSgic2V0dGluZ3MiLDYwMjQyKSxzaGllbGQ6YSgic2hpZWxkIiw2MDI0Myksc21pbGV5OmEoInNtaWxleSIsNjAyNDQpLHNvcnRQcmVjZWRlbmNlOmEoInNvcnQtcHJlY2VkZW5jZSIsNjAyNDUpLHNwbGl0SG9yaXpvbnRhbDphKCJzcGxpdC1ob3Jpem9udGFsIiw2MDI0Niksc3BsaXRWZXJ0aWNhbDphKCJzcGxpdC12ZXJ0aWNhbCIsNjAyNDcpLHNxdWlycmVsOmEoInNxdWlycmVsIiw2MDI0OCksc3RhckZ1bGw6YSgic3Rhci1mdWxsIiw2MDI0OSksc3RhckhhbGY6YSgic3Rhci1oYWxmIiw2MDI1MCksc3ltYm9sQ2xhc3M6YSgic3ltYm9sLWNsYXNzIiw2MDI1MSksc3ltYm9sQ29sb3I6YSgic3ltYm9sLWNvbG9yIiw2MDI1Miksc3ltYm9sQ29uc3RhbnQ6YSgic3ltYm9sLWNvbnN0YW50Iiw2MDI1Myksc3ltYm9sRW51bU1lbWJlcjphKCJzeW1ib2wtZW51bS1tZW1iZXIiLDYwMjU0KSxzeW1ib2xGaWVsZDphKCJzeW1ib2wtZmllbGQiLDYwMjU1KSxzeW1ib2xGaWxlOmEoInN5bWJvbC1maWxlIiw2MDI1Niksc3ltYm9sSW50ZXJmYWNlOmEoInN5bWJvbC1pbnRlcmZhY2UiLDYwMjU3KSxzeW1ib2xLZXl3b3JkOmEoInN5bWJvbC1rZXl3b3JkIiw2MDI1OCksc3ltYm9sTWlzYzphKCJzeW1ib2wtbWlzYyIsNjAyNTkpLHN5bWJvbE9wZXJhdG9yOmEoInN5bWJvbC1vcGVyYXRvciIsNjAyNjApLHN5bWJvbFByb3BlcnR5OmEoInN5bWJvbC1wcm9wZXJ0eSIsNjAyNjEpLHdyZW5jaDphKCJ3cmVuY2giLDYwMjYxKSx3cmVuY2hTdWJhY3Rpb246YSgid3JlbmNoLXN1YmFjdGlvbiIsNjAyNjEpLHN5bWJvbFNuaXBwZXQ6YSgic3ltYm9sLXNuaXBwZXQiLDYwMjYyKSx0YXNrbGlzdDphKCJ0YXNrbGlzdCIsNjAyNjMpLHRlbGVzY29wZTphKCJ0ZWxlc2NvcGUiLDYwMjY0KSx0ZXh0U2l6ZTphKCJ0ZXh0LXNpemUiLDYwMjY1KSx0aHJlZUJhcnM6YSgidGhyZWUtYmFycyIsNjAyNjYpLHRodW1ic2Rvd246YSgidGh1bWJzZG93biIsNjAyNjcpLHRodW1ic3VwOmEoInRodW1ic3VwIiw2MDI2OCksdG9vbHM6YSgidG9vbHMiLDYwMjY5KSx0cmlhbmdsZURvd246YSgidHJpYW5nbGUtZG93biIsNjAyNzApLHRyaWFuZ2xlTGVmdDphKCJ0cmlhbmdsZS1sZWZ0Iiw2MDI3MSksdHJpYW5nbGVSaWdodDphKCJ0cmlhbmdsZS1yaWdodCIsNjAyNzIpLHRyaWFuZ2xlVXA6YSgidHJpYW5nbGUtdXAiLDYwMjczKSx0d2l0dGVyOmEoInR3aXR0ZXIiLDYwMjc0KSx1bmZvbGQ6YSgidW5mb2xkIiw2MDI3NSksdW5sb2NrOmEoInVubG9jayIsNjAyNzYpLHVubXV0ZTphKCJ1bm11dGUiLDYwMjc3KSx1bnZlcmlmaWVkOmEoInVudmVyaWZpZWQiLDYwMjc4KSx2ZXJpZmllZDphKCJ2ZXJpZmllZCIsNjAyNzkpLHZlcnNpb25zOmEoInZlcnNpb25zIiw2MDI4MCksdm1BY3RpdmU6YSgidm0tYWN0aXZlIiw2MDI4MSksdm1PdXRsaW5lOmEoInZtLW91dGxpbmUiLDYwMjgyKSx2bVJ1bm5pbmc6YSgidm0tcnVubmluZyIsNjAyODMpLHdhdGNoOmEoIndhdGNoIiw2MDI4NCksd2hpdGVzcGFjZTphKCJ3aGl0ZXNwYWNlIiw2MDI4NSksd2hvbGVXb3JkOmEoIndob2xlLXdvcmQiLDYwMjg2KSx3aW5kb3c6YSgid2luZG93Iiw2MDI4Nyksd29yZFdyYXA6YSgid29yZC13cmFwIiw2MDI4OCksem9vbUluOmEoInpvb20taW4iLDYwMjg5KSx6b29tT3V0OmEoInpvb20tb3V0Iiw2MDI5MCksbGlzdEZpbHRlcjphKCJsaXN0LWZpbHRlciIsNjAyOTEpLGxpc3RGbGF0OmEoImxpc3QtZmxhdCIsNjAyOTIpLGxpc3RTZWxlY3Rpb246YSgibGlzdC1zZWxlY3Rpb24iLDYwMjkzKSxzZWxlY3Rpb246YSgic2VsZWN0aW9uIiw2MDI5MyksbGlzdFRyZWU6YSgibGlzdC10cmVlIiw2MDI5NCksZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIsNjAyOTUpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uOmEoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLDYwMjk2KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tZGlzYWJsZWQiLDYwMjk2KSxkZWJ1Z1N0YWNrZnJhbWVBY3RpdmU6YSgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLDYwMjk3KSxjaXJjbGVTbWFsbEZpbGxlZDphKCJjaXJjbGUtc21hbGwtZmlsbGVkIiw2MDI5OCksZGVidWdTdGFja2ZyYW1lRG90OmEoImRlYnVnLXN0YWNrZnJhbWUtZG90Iiw2MDI5OCksdGVybWluYWxEZWNvcmF0aW9uTWFyazphKCJ0ZXJtaW5hbC1kZWNvcmF0aW9uLW1hcmsiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWU6YSgiZGVidWctc3RhY2tmcmFtZSIsNjAyOTkpLGRlYnVnU3RhY2tmcmFtZUZvY3VzZWQ6YSgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIiw2MDI5OSksZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ6YSgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIsNjAzMDApLHN5bWJvbFN0cmluZzphKCJzeW1ib2wtc3RyaW5nIiw2MDMwMSksZGVidWdSZXZlcnNlQ29udGludWU6YSgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIsNjAzMDIpLGRlYnVnU3RlcEJhY2s6YSgiZGVidWctc3RlcC1iYWNrIiw2MDMwMyksZGVidWdSZXN0YXJ0RnJhbWU6YSgiZGVidWctcmVzdGFydC1mcmFtZSIsNjAzMDQpLGRlYnVnQWx0OmEoImRlYnVnLWFsdCIsNjAzMDUpLGNhbGxJbmNvbWluZzphKCJjYWxsLWluY29taW5nIiw2MDMwNiksY2FsbE91dGdvaW5nOmEoImNhbGwtb3V0Z29pbmciLDYwMzA3KSxtZW51OmEoIm1lbnUiLDYwMzA4KSxleHBhbmRBbGw6YSgiZXhwYW5kLWFsbCIsNjAzMDkpLGZlZWRiYWNrOmEoImZlZWRiYWNrIiw2MDMxMCksZ2l0UHVsbFJlcXVlc3RSZXZpZXdlcjphKCJnaXQtcHVsbC1yZXF1ZXN0LXJldmlld2VyIiw2MDMxMCksZ3JvdXBCeVJlZlR5cGU6YSgiZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzExKSx1bmdyb3VwQnlSZWZUeXBlOmEoInVuZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzEyKSxhY2NvdW50OmEoImFjY291bnQiLDYwMzEzKSxnaXRQdWxsUmVxdWVzdEFzc2lnbmVlOmEoImdpdC1wdWxsLXJlcXVlc3QtYXNzaWduZWUiLDYwMzEzKSxiZWxsRG90OmEoImJlbGwtZG90Iiw2MDMxNCksZGVidWdDb25zb2xlOmEoImRlYnVnLWNvbnNvbGUiLDYwMzE1KSxsaWJyYXJ5OmEoImxpYnJhcnkiLDYwMzE2KSxvdXRwdXQ6YSgib3V0cHV0Iiw2MDMxNykscnVuQWxsOmEoInJ1bi1hbGwiLDYwMzE4KSxzeW5jSWdub3JlZDphKCJzeW5jLWlnbm9yZWQiLDYwMzE5KSxwaW5uZWQ6YSgicGlubmVkIiw2MDMyMCksZ2l0aHViSW52ZXJ0ZWQ6YSgiZ2l0aHViLWludmVydGVkIiw2MDMyMSksc2VydmVyUHJvY2VzczphKCJzZXJ2ZXItcHJvY2VzcyIsNjAzMjIpLHNlcnZlckVudmlyb25tZW50OmEoInNlcnZlci1lbnZpcm9ubWVudCIsNjAzMjMpLHBhc3M6YSgicGFzcyIsNjAzMjQpLGlzc3VlQ2xvc2VkOmEoImlzc3VlLWNsb3NlZCIsNjAzMjQpLHN0b3BDaXJjbGU6YSgic3RvcC1jaXJjbGUiLDYwMzI1KSxwbGF5Q2lyY2xlOmEoInBsYXktY2lyY2xlIiw2MDMyNikscmVjb3JkOmEoInJlY29yZCIsNjAzMjcpLGRlYnVnQWx0U21hbGw6YSgiZGVidWctYWx0LXNtYWxsIiw2MDMyOCksdm1Db25uZWN0OmEoInZtLWNvbm5lY3QiLDYwMzI5KSxjbG91ZDphKCJjbG91ZCIsNjAzMzApLG1lcmdlOmEoIm1lcmdlIiw2MDMzMSksZXhwb3J0OmEoImV4cG9ydCIsNjAzMzIpLGdyYXBoTGVmdDphKCJncmFwaC1sZWZ0Iiw2MDMzMyksbWFnbmV0OmEoIm1hZ25ldCIsNjAzMzQpLG5vdGVib29rOmEoIm5vdGVib29rIiw2MDMzNSkscmVkbzphKCJyZWRvIiw2MDMzNiksY2hlY2tBbGw6YSgiY2hlY2stYWxsIiw2MDMzNykscGlubmVkRGlydHk6YSgicGlubmVkLWRpcnR5Iiw2MDMzOCkscGFzc0ZpbGxlZDphKCJwYXNzLWZpbGxlZCIsNjAzMzkpLGNpcmNsZUxhcmdlRmlsbGVkOmEoImNpcmNsZS1sYXJnZS1maWxsZWQiLDYwMzQwKSxjaXJjbGVMYXJnZTphKCJjaXJjbGUtbGFyZ2UiLDYwMzQxKSxjaXJjbGVMYXJnZU91dGxpbmU6YSgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLDYwMzQxKSxjb21iaW5lOmEoImNvbWJpbmUiLDYwMzQyKSxnYXRoZXI6YSgiZ2F0aGVyIiw2MDM0MiksdGFibGU6YSgidGFibGUiLDYwMzQzKSx2YXJpYWJsZUdyb3VwOmEoInZhcmlhYmxlLWdyb3VwIiw2MDM0NCksdHlwZUhpZXJhcmNoeTphKCJ0eXBlLWhpZXJhcmNoeSIsNjAzNDUpLHR5cGVIaWVyYXJjaHlTdWI6YSgidHlwZS1oaWVyYXJjaHktc3ViIiw2MDM0NiksdHlwZUhpZXJhcmNoeVN1cGVyOmEoInR5cGUtaGllcmFyY2h5LXN1cGVyIiw2MDM0NyksZ2l0UHVsbFJlcXVlc3RDcmVhdGU6YSgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLDYwMzQ4KSxydW5BYm92ZTphKCJydW4tYWJvdmUiLDYwMzQ5KSxydW5CZWxvdzphKCJydW4tYmVsb3ciLDYwMzUwKSxub3RlYm9va1RlbXBsYXRlOmEoIm5vdGVib29rLXRlbXBsYXRlIiw2MDM1MSksZGVidWdSZXJ1bjphKCJkZWJ1Zy1yZXJ1biIsNjAzNTIpLHdvcmtzcGFjZVRydXN0ZWQ6YSgid29ya3NwYWNlLXRydXN0ZWQiLDYwMzUzKSx3b3Jrc3BhY2VVbnRydXN0ZWQ6YSgid29ya3NwYWNlLXVudHJ1c3RlZCIsNjAzNTQpLHdvcmtzcGFjZVVua25vd246YSgid29ya3NwYWNlLXVua25vd24iLDYwMzU1KSx0ZXJtaW5hbENtZDphKCJ0ZXJtaW5hbC1jbWQiLDYwMzU2KSx0ZXJtaW5hbERlYmlhbjphKCJ0ZXJtaW5hbC1kZWJpYW4iLDYwMzU3KSx0ZXJtaW5hbExpbnV4OmEoInRlcm1pbmFsLWxpbnV4Iiw2MDM1OCksdGVybWluYWxQb3dlcnNoZWxsOmEoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLDYwMzU5KSx0ZXJtaW5hbFRtdXg6YSgidGVybWluYWwtdG11eCIsNjAzNjApLHRlcm1pbmFsVWJ1bnR1OmEoInRlcm1pbmFsLXVidW50dSIsNjAzNjEpLHRlcm1pbmFsQmFzaDphKCJ0ZXJtaW5hbC1iYXNoIiw2MDM2MiksYXJyb3dTd2FwOmEoImFycm93LXN3YXAiLDYwMzYzKSxjb3B5OmEoImNvcHkiLDYwMzY0KSxwZXJzb25BZGQ6YSgicGVyc29uLWFkZCIsNjAzNjUpLGZpbHRlckZpbGxlZDphKCJmaWx0ZXItZmlsbGVkIiw2MDM2Niksd2FuZDphKCJ3YW5kIiw2MDM2NyksZGVidWdMaW5lQnlMaW5lOmEoImRlYnVnLWxpbmUtYnktbGluZSIsNjAzNjgpLGluc3BlY3Q6YSgiaW5zcGVjdCIsNjAzNjkpLGxheWVyczphKCJsYXllcnMiLDYwMzcwKSxsYXllcnNEb3Q6YSgibGF5ZXJzLWRvdCIsNjAzNzEpLGxheWVyc0FjdGl2ZTphKCJsYXllcnMtYWN0aXZlIiw2MDM3MiksY29tcGFzczphKCJjb21wYXNzIiw2MDM3MyksY29tcGFzc0RvdDphKCJjb21wYXNzLWRvdCIsNjAzNzQpLGNvbXBhc3NBY3RpdmU6YSgiY29tcGFzcy1hY3RpdmUiLDYwMzc1KSxhenVyZTphKCJhenVyZSIsNjAzNzYpLGlzc3VlRHJhZnQ6YSgiaXNzdWUtZHJhZnQiLDYwMzc3KSxnaXRQdWxsUmVxdWVzdENsb3NlZDphKCJnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZCIsNjAzNzgpLGdpdFB1bGxSZXF1ZXN0RHJhZnQ6YSgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIsNjAzNzkpLGRlYnVnQWxsOmEoImRlYnVnLWFsbCIsNjAzODApLGRlYnVnQ292ZXJhZ2U6YSgiZGVidWctY292ZXJhZ2UiLDYwMzgxKSxydW5FcnJvcnM6YSgicnVuLWVycm9ycyIsNjAzODIpLGZvbGRlckxpYnJhcnk6YSgiZm9sZGVyLWxpYnJhcnkiLDYwMzgzKSxkZWJ1Z0NvbnRpbnVlU21hbGw6YSgiZGVidWctY29udGludWUtc21hbGwiLDYwMzg0KSxiZWFrZXJTdG9wOmEoImJlYWtlci1zdG9wIiw2MDM4NSksZ3JhcGhMaW5lOmEoImdyYXBoLWxpbmUiLDYwMzg2KSxncmFwaFNjYXR0ZXI6YSgiZ3JhcGgtc2NhdHRlciIsNjAzODcpLHBpZUNoYXJ0OmEoInBpZS1jaGFydCIsNjAzODgpLGJyYWNrZXQ6YSgiYnJhY2tldCIsNjAxNzUpLGJyYWNrZXREb3Q6YSgiYnJhY2tldC1kb3QiLDYwMzg5KSxicmFja2V0RXJyb3I6YSgiYnJhY2tldC1lcnJvciIsNjAzOTApLGxvY2tTbWFsbDphKCJsb2NrLXNtYWxsIiw2MDM5MSksYXp1cmVEZXZvcHM6YSgiYXp1cmUtZGV2b3BzIiw2MDM5MiksdmVyaWZpZWRGaWxsZWQ6YSgidmVyaWZpZWQtZmlsbGVkIiw2MDM5MyksbmV3bGluZTphKCJuZXdsaW5lIiw2MDM5NCksbGF5b3V0OmEoImxheW91dCIsNjAzOTUpLGxheW91dEFjdGl2aXR5YmFyTGVmdDphKCJsYXlvdXQtYWN0aXZpdHliYXItbGVmdCIsNjAzOTYpLGxheW91dEFjdGl2aXR5YmFyUmlnaHQ6YSgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iiw2MDM5NyksbGF5b3V0UGFuZWxMZWZ0OmEoImxheW91dC1wYW5lbC1sZWZ0Iiw2MDM5OCksbGF5b3V0UGFuZWxDZW50ZXI6YSgibGF5b3V0LXBhbmVsLWNlbnRlciIsNjAzOTkpLGxheW91dFBhbmVsSnVzdGlmeTphKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIsNjA0MDApLGxheW91dFBhbmVsUmlnaHQ6YSgibGF5b3V0LXBhbmVsLXJpZ2h0Iiw2MDQwMSksbGF5b3V0UGFuZWw6YSgibGF5b3V0LXBhbmVsIiw2MDQwMiksbGF5b3V0U2lkZWJhckxlZnQ6YSgibGF5b3V0LXNpZGViYXItbGVmdCIsNjA0MDMpLGxheW91dFNpZGViYXJSaWdodDphKCJsYXlvdXQtc2lkZWJhci1yaWdodCIsNjA0MDQpLGxheW91dFN0YXR1c2JhcjphKCJsYXlvdXQtc3RhdHVzYmFyIiw2MDQwNSksbGF5b3V0TWVudWJhcjphKCJsYXlvdXQtbWVudWJhciIsNjA0MDYpLGxheW91dENlbnRlcmVkOmEoImxheW91dC1jZW50ZXJlZCIsNjA0MDcpLHRhcmdldDphKCJ0YXJnZXQiLDYwNDA4KSxpbmRlbnQ6YSgiaW5kZW50Iiw2MDQwOSkscmVjb3JkU21hbGw6YSgicmVjb3JkLXNtYWxsIiw2MDQxMCksZXJyb3JTbWFsbDphKCJlcnJvci1zbWFsbCIsNjA0MTEpLHRlcm1pbmFsRGVjb3JhdGlvbkVycm9yOmEoInRlcm1pbmFsLWRlY29yYXRpb24tZXJyb3IiLDYwNDExKSxhcnJvd0NpcmNsZURvd246YSgiYXJyb3ctY2lyY2xlLWRvd24iLDYwNDEyKSxhcnJvd0NpcmNsZUxlZnQ6YSgiYXJyb3ctY2lyY2xlLWxlZnQiLDYwNDEzKSxhcnJvd0NpcmNsZVJpZ2h0OmEoImFycm93LWNpcmNsZS1yaWdodCIsNjA0MTQpLGFycm93Q2lyY2xlVXA6YSgiYXJyb3ctY2lyY2xlLXVwIiw2MDQxNSksbGF5b3V0U2lkZWJhclJpZ2h0T2ZmOmEoImxheW91dC1zaWRlYmFyLXJpZ2h0LW9mZiIsNjA0MTYpLGxheW91dFBhbmVsT2ZmOmEoImxheW91dC1wYW5lbC1vZmYiLDYwNDE3KSxsYXlvdXRTaWRlYmFyTGVmdE9mZjphKCJsYXlvdXQtc2lkZWJhci1sZWZ0LW9mZiIsNjA0MTgpLGJsYW5rOmEoImJsYW5rIiw2MDQxOSksaGVhcnRGaWxsZWQ6YSgiaGVhcnQtZmlsbGVkIiw2MDQyMCksbWFwOmEoIm1hcCIsNjA0MjEpLG1hcEhvcml6b250YWw6YSgibWFwLWhvcml6b250YWwiLDYwNDIxKSxmb2xkSG9yaXpvbnRhbDphKCJmb2xkLWhvcml6b250YWwiLDYwNDIxKSxtYXBGaWxsZWQ6YSgibWFwLWZpbGxlZCIsNjA0MjIpLG1hcEhvcml6b250YWxGaWxsZWQ6YSgibWFwLWhvcml6b250YWwtZmlsbGVkIiw2MDQyMiksZm9sZEhvcml6b250YWxGaWxsZWQ6YSgiZm9sZC1ob3Jpem9udGFsLWZpbGxlZCIsNjA0MjIpLGNpcmNsZVNtYWxsOmEoImNpcmNsZS1zbWFsbCIsNjA0MjMpLGJlbGxTbGFzaDphKCJiZWxsLXNsYXNoIiw2MDQyNCksYmVsbFNsYXNoRG90OmEoImJlbGwtc2xhc2gtZG90Iiw2MDQyNSksY29tbWVudFVucmVzb2x2ZWQ6YSgiY29tbWVudC11bnJlc29sdmVkIiw2MDQyNiksZ2l0UHVsbFJlcXVlc3RHb1RvQ2hhbmdlczphKCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLDYwNDI3KSxnaXRQdWxsUmVxdWVzdE5ld0NoYW5nZXM6YSgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIsNjA0MjgpLHNlYXJjaEZ1enp5OmEoInNlYXJjaC1mdXp6eSIsNjA0MjkpLGNvbW1lbnREcmFmdDphKCJjb21tZW50LWRyYWZ0Iiw2MDQzMCksc2VuZDphKCJzZW5kIiw2MDQzMSksc3BhcmtsZTphKCJzcGFya2xlIiw2MDQzMiksaW5zZXJ0OmEoImluc2VydCIsNjA0MzMpLG1pYzphKCJtaWMiLDYwNDM0KSx0aHVtYnNkb3duRmlsbGVkOmEoInRodW1ic2Rvd24tZmlsbGVkIiw2MDQzNSksdGh1bWJzdXBGaWxsZWQ6YSgidGh1bWJzdXAtZmlsbGVkIiw2MDQzNiksY29mZmVlOmEoImNvZmZlZSIsNjA0MzcpLHNuYWtlOmEoInNuYWtlIiw2MDQzOCksZ2FtZTphKCJnYW1lIiw2MDQzOSksdnI6YSgidnIiLDYwNDQwKSxjaGlwOmEoImNoaXAiLDYwNDQxKSxwaWFubzphKCJwaWFubyIsNjA0NDIpLG11c2ljOmEoIm11c2ljIiw2MDQ0MyksbWljRmlsbGVkOmEoIm1pYy1maWxsZWQiLDYwNDQ0KSxyZXBvRmV0Y2g6YSgicmVwby1mZXRjaCIsNjA0NDUpLGNvcGlsb3Q6YSgiY29waWxvdCIsNjA0NDYpLGxpZ2h0YnVsYlNwYXJrbGU6YSgibGlnaHRidWxiLXNwYXJrbGUiLDYwNDQ3KSxyb2JvdDphKCJyb2JvdCIsNjA0NDgpLHNwYXJrbGVGaWxsZWQ6YSgic3BhcmtsZS1maWxsZWQiLDYwNDQ5KSxkaWZmU2luZ2xlOmEoImRpZmYtc2luZ2xlIiw2MDQ1MCksZGlmZk11bHRpcGxlOmEoImRpZmYtbXVsdGlwbGUiLDYwNDUxKSxzdXJyb3VuZFdpdGg6YSgic3Vycm91bmQtd2l0aCIsNjA0NTIpLHNoYXJlOmEoInNoYXJlIiw2MDQ1MyksZ2l0U3Rhc2g6YSgiZ2l0LXN0YXNoIiw2MDQ1NCksZ2l0U3Rhc2hBcHBseTphKCJnaXQtc3Rhc2gtYXBwbHkiLDYwNDU1KSxnaXRTdGFzaFBvcDphKCJnaXQtc3Rhc2gtcG9wIiw2MDQ1NiksdnNjb2RlOmEoInZzY29kZSIsNjA0NTcpLHZzY29kZUluc2lkZXJzOmEoInZzY29kZS1pbnNpZGVycyIsNjA0NTgpLGNvZGVPc3M6YSgiY29kZS1vc3MiLDYwNDU5KSxydW5Db3ZlcmFnZTphKCJydW4tY292ZXJhZ2UiLDYwNDYwKSxydW5BbGxDb3ZlcmFnZTphKCJydW4tYWxsLWNvdmVyYWdlIiw2MDQ2MSksY292ZXJhZ2U6YSgiY292ZXJhZ2UiLDYwNDYyKSxnaXRodWJQcm9qZWN0OmEoImdpdGh1Yi1wcm9qZWN0Iiw2MDQ2MyksbWFwVmVydGljYWw6YSgibWFwLXZlcnRpY2FsIiw2MDQ2NCksZm9sZFZlcnRpY2FsOmEoImZvbGQtdmVydGljYWwiLDYwNDY0KSxtYXBWZXJ0aWNhbEZpbGxlZDphKCJtYXAtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSksZm9sZFZlcnRpY2FsRmlsbGVkOmEoImZvbGQtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSl9LE5pPXtkaWFsb2dFcnJvcjphKCJkaWFsb2ctZXJyb3IiLCJlcnJvciIpLGRpYWxvZ1dhcm5pbmc6YSgiZGlhbG9nLXdhcm5pbmciLCJ3YXJuaW5nIiksZGlhbG9nSW5mbzphKCJkaWFsb2ctaW5mbyIsImluZm8iKSxkaWFsb2dDbG9zZTphKCJkaWFsb2ctY2xvc2UiLCJjbG9zZSIpLHRyZWVJdGVtRXhwYW5kZWQ6YSgidHJlZS1pdGVtLWV4cGFuZGVkIiwiY2hldnJvbi1kb3duIiksdHJlZUZpbHRlck9uVHlwZU9uOmEoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLCJsaXN0LWZpbHRlciIpLHRyZWVGaWx0ZXJPblR5cGVPZmY6YSgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLCJsaXN0LXNlbGVjdGlvbiIpLHRyZWVGaWx0ZXJDbGVhcjphKCJ0cmVlLWZpbHRlci1jbGVhciIsImNsb3NlIiksdHJlZUl0ZW1Mb2FkaW5nOmEoInRyZWUtaXRlbS1sb2FkaW5nIiwibG9hZGluZyIpLG1lbnVTZWxlY3Rpb246YSgibWVudS1zZWxlY3Rpb24iLCJjaGVjayIpLG1lbnVTdWJtZW51OmEoIm1lbnUtc3VibWVudSIsImNoZXZyb24tcmlnaHQiKSxtZW51QmFyTW9yZTphKCJtZW51YmFyLW1vcmUiLCJtb3JlIiksc2Nyb2xsYmFyQnV0dG9uTGVmdDphKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLCJ0cmlhbmdsZS1sZWZ0Iiksc2Nyb2xsYmFyQnV0dG9uUmlnaHQ6YSgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsInRyaWFuZ2xlLXJpZ2h0Iiksc2Nyb2xsYmFyQnV0dG9uVXA6YSgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsInRyaWFuZ2xlLXVwIiksc2Nyb2xsYmFyQnV0dG9uRG93bjphKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLCJ0cmlhbmdsZS1kb3duIiksdG9vbEJhck1vcmU6YSgidG9vbGJhci1tb3JlIiwibW9yZSIpLHF1aWNrSW5wdXRCYWNrOmEoInF1aWNrLWlucHV0LWJhY2siLCJhcnJvdy1sZWZ0IiksZHJvcERvd25CdXR0b246YSgiZHJvcC1kb3duLWJ1dHRvbiIsNjAwODQpLHN5bWJvbEN1c3RvbUNvbG9yOmEoInN5bWJvbC1jdXN0b21jb2xvciIsNjAyNTIpLGV4cG9ydEljb246YSgiZXhwb3J0Iiw2MDMzMiksd29ya3NwYWNlVW5zcGVjaWZpZWQ6YSgid29ya3NwYWNlLXVuc3BlY2lmaWVkIiw2MDM1NSksbmV3TGluZTphKCJuZXdsaW5lIiw2MDM5NCksdGh1bWJzRG93bkZpbGxlZDphKCJ0aHVtYnNkb3duLWZpbGxlZCIsNjA0MzUpLHRodW1ic1VwRmlsbGVkOmEoInRodW1ic3VwLWZpbGxlZCIsNjA0MzYpLGdpdEZldGNoOmEoImdpdC1mZXRjaCIsNjA0NDUpLGxpZ2h0YnVsYlNwYXJrbGVBdXRvZml4OmEoImxpZ2h0YnVsYi1zcGFya2xlLWF1dG9maXgiLDYwNDQ3KSxkZWJ1Z0JyZWFrcG9pbnRQZW5kaW5nOmEoImRlYnVnLWJyZWFrcG9pbnQtcGVuZGluZyIsNjAzNzcpfSxNPXsuLi5MaSwuLi5OaX07Y2xhc3MgU2l7Y29uc3RydWN0b3IoKXt0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cz1uZXcgTWFwLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBzZSx0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9aGFuZGxlQ2hhbmdlKHQpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6dCxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3Rlcih0LG4pe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5zZXQodCxuKSx0aGlzLmhhbmRsZUNoYW5nZShbdF0pLEtlKCgpPT57dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KHQpPT09biYmKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmRlbGV0ZSh0KSx0aGlzLmhhbmRsZUNoYW5nZShbdF0pKX0pfWdldCh0KXtyZXR1cm4gdGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KHQpfHxudWxsfXJlZ2lzdGVyRmFjdG9yeSh0LG4pe3ZhciByOyhyPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCkpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5kaXNwb3NlKCk7Y29uc3Qgcz1uZXcgQ2kodGhpcyx0LG4pO3JldHVybiB0aGlzLl9mYWN0b3JpZXMuc2V0KHQscyksS2UoKCk9Pntjb25zdCBpPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7IWl8fGkhPT1zfHwodGhpcy5fZmFjdG9yaWVzLmRlbGV0ZSh0KSxpLmRpc3Bvc2UoKSl9KX1hc3luYyBnZXRPckNyZWF0ZSh0KXtjb25zdCBuPXRoaXMuZ2V0KHQpO2lmKG4pcmV0dXJuIG47Y29uc3Qgcj10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO3JldHVybiFyfHxyLmlzUmVzb2x2ZWQ/bnVsbDooYXdhaXQgci5yZXNvbHZlKCksdGhpcy5nZXQodCkpfWlzUmVzb2x2ZWQodCl7aWYodGhpcy5nZXQodCkpcmV0dXJuITA7Y29uc3Qgcj10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO3JldHVybiEhKCFyfHxyLmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKHQpe3RoaXMuX2NvbG9yTWFwPXQsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fWNsYXNzIENpIGV4dGVuZHMgV2V7Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1jb25zdHJ1Y3Rvcih0LG4scil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT10LHRoaXMuX2xhbmd1YWdlSWQ9bix0aGlzLl9mYWN0b3J5PXIsdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfWFzeW5jIHJlc29sdmUoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVByb21pc2V8fCh0aGlzLl9yZXNvbHZlUHJvbWlzZT10aGlzLl9jcmVhdGUoKSksdGhpcy5fcmVzb2x2ZVByb21pc2V9YXN5bmMgX2NyZWF0ZSgpe2NvbnN0IHQ9YXdhaXQgdGhpcy5fZmFjdG9yeS50b2tlbml6YXRpb25TdXBwb3J0O3RoaXMuX2lzUmVzb2x2ZWQ9ITAsdCYmIXRoaXMuX2lzRGlzcG9zZWQmJnRoaXMuX3JlZ2lzdGVyKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMuX2xhbmd1YWdlSWQsdCkpfX1jbGFzcyBBaXtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5vZmZzZXQ9dCx0aGlzLnR5cGU9bix0aGlzLmxhbmd1YWdlPXIsdGhpcy5fdG9rZW5CcmFuZD12b2lkIDB9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5vZmZzZXQrIiwgIit0aGlzLnR5cGUrIikifX12YXIgQW47KGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLE0uc3ltYm9sTWV0aG9kKSx0LnNldCgxLE0uc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsTS5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoMyxNLnN5bWJvbEZpZWxkKSx0LnNldCg0LE0uc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsTS5zeW1ib2xDbGFzcyksdC5zZXQoNixNLnN5bWJvbFN0cnVjdCksdC5zZXQoNyxNLnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxNLnN5bWJvbE1vZHVsZSksdC5zZXQoOSxNLnN5bWJvbFByb3BlcnR5KSx0LnNldCgxMCxNLnN5bWJvbEV2ZW50KSx0LnNldCgxMSxNLnN5bWJvbE9wZXJhdG9yKSx0LnNldCgxMixNLnN5bWJvbFVuaXQpLHQuc2V0KDEzLE0uc3ltYm9sVmFsdWUpLHQuc2V0KDE1LE0uc3ltYm9sRW51bSksdC5zZXQoMTQsTS5zeW1ib2xDb25zdGFudCksdC5zZXQoMTUsTS5zeW1ib2xFbnVtKSx0LnNldCgxNixNLnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDE3LE0uc3ltYm9sS2V5d29yZCksdC5zZXQoMjcsTS5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxNLnN5bWJvbFRleHQpLHQuc2V0KDE5LE0uc3ltYm9sQ29sb3IpLHQuc2V0KDIwLE0uc3ltYm9sRmlsZSksdC5zZXQoMjEsTS5zeW1ib2xSZWZlcmVuY2UpLHQuc2V0KDIyLE0uc3ltYm9sQ3VzdG9tQ29sb3IpLHQuc2V0KDIzLE0uc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxNLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLHQuc2V0KDI1LE0uYWNjb3VudCksdC5zZXQoMjYsTS5pc3N1ZXMpO2Z1bmN0aW9uIG4oaSl7bGV0IGw9dC5nZXQoaSk7cmV0dXJuIGx8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIENvbXBsZXRpb25JdGVtS2luZCAiK2kpLGw9TS5zeW1ib2xQcm9wZXJ0eSksbH1lLnRvSWNvbj1uO2NvbnN0IHI9bmV3IE1hcDtyLnNldCgibWV0aG9kIiwwKSxyLnNldCgiZnVuY3Rpb24iLDEpLHIuc2V0KCJjb25zdHJ1Y3RvciIsMiksci5zZXQoImZpZWxkIiwzKSxyLnNldCgidmFyaWFibGUiLDQpLHIuc2V0KCJjbGFzcyIsNSksci5zZXQoInN0cnVjdCIsNiksci5zZXQoImludGVyZmFjZSIsNyksci5zZXQoIm1vZHVsZSIsOCksci5zZXQoInByb3BlcnR5Iiw5KSxyLnNldCgiZXZlbnQiLDEwKSxyLnNldCgib3BlcmF0b3IiLDExKSxyLnNldCgidW5pdCIsMTIpLHIuc2V0KCJ2YWx1ZSIsMTMpLHIuc2V0KCJjb25zdGFudCIsMTQpLHIuc2V0KCJlbnVtIiwxNSksci5zZXQoImVudW0tbWVtYmVyIiwxNiksci5zZXQoImVudW1NZW1iZXIiLDE2KSxyLnNldCgia2V5d29yZCIsMTcpLHIuc2V0KCJzbmlwcGV0IiwyNyksci5zZXQoInRleHQiLDE4KSxyLnNldCgiY29sb3IiLDE5KSxyLnNldCgiZmlsZSIsMjApLHIuc2V0KCJyZWZlcmVuY2UiLDIxKSxyLnNldCgiY3VzdG9tY29sb3IiLDIyKSxyLnNldCgiZm9sZGVyIiwyMyksci5zZXQoInR5cGUtcGFyYW1ldGVyIiwyNCksci5zZXQoInR5cGVQYXJhbWV0ZXIiLDI0KSxyLnNldCgiYWNjb3VudCIsMjUpLHIuc2V0KCJpc3N1ZSIsMjYpO2Z1bmN0aW9uIHMoaSxsKXtsZXQgbz1yLmdldChpKTtyZXR1cm4gdHlwZW9mIG8+InUiJiYhbCYmKG89OSksb31lLmZyb21TdHJpbmc9c30pKEFufHwoQW49e30pKTt2YXIgUm47KGZ1bmN0aW9uKGUpe2VbZS5BdXRvbWF0aWM9MF09IkF1dG9tYXRpYyIsZVtlLkV4cGxpY2l0PTFdPSJFeHBsaWNpdCJ9KShSbnx8KFJuPXt9KSk7dmFyIHluOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5QYXN0ZUFzPTFdPSJQYXN0ZUFzIn0pKHlufHwoeW49e30pKTt2YXIgRW47KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MV09Ikludm9rZSIsZVtlLlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLGVbZS5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0pKEVufHwoRW49e30pKTt2YXIgTW47KGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KShNbnx8KE1uPXt9KSksSCgiQXJyYXkiLCJhcnJheSIpLEgoIkJvb2xlYW4iLCJib29sZWFuIiksSCgiQ2xhc3MiLCJjbGFzcyIpLEgoIkNvbnN0YW50IiwiY29uc3RhbnQiKSxIKCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiksSCgiRW51bSIsImVudW1lcmF0aW9uIiksSCgiRW51bU1lbWJlciIsImVudW1lcmF0aW9uIG1lbWJlciIpLEgoIkV2ZW50IiwiZXZlbnQiKSxIKCJGaWVsZCIsImZpZWxkIiksSCgiRmlsZSIsImZpbGUiKSxIKCJGdW5jdGlvbiIsImZ1bmN0aW9uIiksSCgiSW50ZXJmYWNlIiwiaW50ZXJmYWNlIiksSCgiS2V5Iiwia2V5IiksSCgiTWV0aG9kIiwibWV0aG9kIiksSCgiTW9kdWxlIiwibW9kdWxlIiksSCgiTmFtZXNwYWNlIiwibmFtZXNwYWNlIiksSCgiTnVsbCIsIm51bGwiKSxIKCJOdW1iZXIiLCJudW1iZXIiKSxIKCJPYmplY3QiLCJvYmplY3QiKSxIKCJPcGVyYXRvciIsIm9wZXJhdG9yIiksSCgiUGFja2FnZSIsInBhY2thZ2UiKSxIKCJQcm9wZXJ0eSIsInByb3BlcnR5IiksSCgiU3RyaW5nIiwic3RyaW5nIiksSCgiU3RydWN0Iiwic3RydWN0IiksSCgiVHlwZVBhcmFtZXRlciIsInR5cGUgcGFyYW1ldGVyIiksSCgiVmFyaWFibGUiLCJ2YXJpYWJsZSIpO3ZhciBrbjsoZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwO3Quc2V0KDAsTS5zeW1ib2xGaWxlKSx0LnNldCgxLE0uc3ltYm9sTW9kdWxlKSx0LnNldCgyLE0uc3ltYm9sTmFtZXNwYWNlKSx0LnNldCgzLE0uc3ltYm9sUGFja2FnZSksdC5zZXQoNCxNLnN5bWJvbENsYXNzKSx0LnNldCg1LE0uc3ltYm9sTWV0aG9kKSx0LnNldCg2LE0uc3ltYm9sUHJvcGVydHkpLHQuc2V0KDcsTS5zeW1ib2xGaWVsZCksdC5zZXQoOCxNLnN5bWJvbENvbnN0cnVjdG9yKSx0LnNldCg5LE0uc3ltYm9sRW51bSksdC5zZXQoMTAsTS5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLE0uc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDEyLE0uc3ltYm9sVmFyaWFibGUpLHQuc2V0KDEzLE0uc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LE0uc3ltYm9sU3RyaW5nKSx0LnNldCgxNSxNLnN5bWJvbE51bWJlciksdC5zZXQoMTYsTS5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxNLnN5bWJvbEFycmF5KSx0LnNldCgxOCxNLnN5bWJvbE9iamVjdCksdC5zZXQoMTksTS5zeW1ib2xLZXkpLHQuc2V0KDIwLE0uc3ltYm9sTnVsbCksdC5zZXQoMjEsTS5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgyMixNLnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsTS5zeW1ib2xFdmVudCksdC5zZXQoMjQsTS5zeW1ib2xPcGVyYXRvciksdC5zZXQoMjUsTS5zeW1ib2xUeXBlUGFyYW1ldGVyKTtmdW5jdGlvbiBuKHIpe2xldCBzPXQuZ2V0KHIpO3JldHVybiBzfHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBTeW1ib2xLaW5kICIrcikscz1NLnN5bWJvbFByb3BlcnR5KSxzfWUudG9JY29uPW59KShrbnx8KGtuPXt9KSk7dmFyIEZuOyhmdW5jdGlvbihlKXtlW2UuQUlHZW5lcmF0ZWQ9MV09IkFJR2VuZXJhdGVkIn0pKEZufHwoRm49e30pKTt2YXIgUG47KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIW58fHR5cGVvZiBuIT0ib2JqZWN0Ij8hMTp0eXBlb2Ygbi5pZD09InN0cmluZyImJnR5cGVvZiBuLnRpdGxlPT0ic3RyaW5nIn1lLmlzPXR9KShQbnx8KFBuPXt9KSk7dmFyIERuOyhmdW5jdGlvbihlKXtlW2UuVHlwZT0xXT0iVHlwZSIsZVtlLlBhcmFtZXRlcj0yXT0iUGFyYW1ldGVyIn0pKERufHwoRG49e30pKSxuZXcgU2k7dmFyIFRuOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5BdXRvbWF0aWM9MV09IkF1dG9tYXRpYyJ9KShUbnx8KFRuPXt9KSk7dmFyIFZuOyhmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifSkoVm58fChWbj17fSkpO3ZhciBCbjsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KShCbnx8KEJuPXt9KSk7dmFyIHFuOyhmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXBXaGl0ZXNwYWNlPTFdPSJLZWVwV2hpdGVzcGFjZSIsZVtlLkluc2VydEFzU25pcHBldD00XT0iSW5zZXJ0QXNTbmlwcGV0In0pKHFufHwocW49e30pKTt2YXIgSW47KGZ1bmN0aW9uKGUpe2VbZS5NZXRob2Q9MF09Ik1ldGhvZCIsZVtlLkZ1bmN0aW9uPTFdPSJGdW5jdGlvbiIsZVtlLkNvbnN0cnVjdG9yPTJdPSJDb25zdHJ1Y3RvciIsZVtlLkZpZWxkPTNdPSJGaWVsZCIsZVtlLlZhcmlhYmxlPTRdPSJWYXJpYWJsZSIsZVtlLkNsYXNzPTVdPSJDbGFzcyIsZVtlLlN0cnVjdD02XT0iU3RydWN0IixlW2UuSW50ZXJmYWNlPTddPSJJbnRlcmZhY2UiLGVbZS5Nb2R1bGU9OF09Ik1vZHVsZSIsZVtlLlByb3BlcnR5PTldPSJQcm9wZXJ0eSIsZVtlLkV2ZW50PTEwXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0xMV09Ik9wZXJhdG9yIixlW2UuVW5pdD0xMl09IlVuaXQiLGVbZS5WYWx1ZT0xM109IlZhbHVlIixlW2UuQ29uc3RhbnQ9MTRdPSJDb25zdGFudCIsZVtlLkVudW09MTVdPSJFbnVtIixlW2UuRW51bU1lbWJlcj0xNl09IkVudW1NZW1iZXIiLGVbZS5LZXl3b3JkPTE3XT0iS2V5d29yZCIsZVtlLlRleHQ9MThdPSJUZXh0IixlW2UuQ29sb3I9MTldPSJDb2xvciIsZVtlLkZpbGU9MjBdPSJGaWxlIixlW2UuUmVmZXJlbmNlPTIxXT0iUmVmZXJlbmNlIixlW2UuQ3VzdG9tY29sb3I9MjJdPSJDdXN0b21jb2xvciIsZVtlLkZvbGRlcj0yM109IkZvbGRlciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjRdPSJUeXBlUGFyYW1ldGVyIixlW2UuVXNlcj0yNV09IlVzZXIiLGVbZS5Jc3N1ZT0yNl09Iklzc3VlIixlW2UuU25pcHBldD0yN109IlNuaXBwZXQifSkoSW58fChJbj17fSkpO3ZhciBVbjsoZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSkoVW58fChVbj17fSkpO3ZhciBIbjsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0xXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnM9Ml09IlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnMifSkoSG58fChIbj17fSkpO3ZhciBXbjsoZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KShXbnx8KFduPXt9KSk7dmFyIHpuOyhmdW5jdGlvbihlKXtlW2UuTm90U2V0PTBdPSJOb3RTZXQiLGVbZS5Db250ZW50Rmx1c2g9MV09IkNvbnRlbnRGbHVzaCIsZVtlLlJlY292ZXJGcm9tTWFya2Vycz0yXT0iUmVjb3ZlckZyb21NYXJrZXJzIixlW2UuRXhwbGljaXQ9M109IkV4cGxpY2l0IixlW2UuUGFzdGU9NF09IlBhc3RlIixlW2UuVW5kbz01XT0iVW5kbyIsZVtlLlJlZG89Nl09IlJlZG8ifSkoem58fCh6bj17fSkpO3ZhciAkbjsoZnVuY3Rpb24oZSl7ZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifSkoJG58fCgkbj17fSkpO3ZhciBPbjsoZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0pKE9ufHwoT249e30pKTt2YXIgR247KGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuS2VlcD0xXT0iS2VlcCIsZVtlLkJyYWNrZXRzPTJdPSJCcmFja2V0cyIsZVtlLkFkdmFuY2VkPTNdPSJBZHZhbmNlZCIsZVtlLkZ1bGw9NF09IkZ1bGwifSkoR258fChHbj17fSkpO3ZhciBqbjsoZnVuY3Rpb24oZSl7ZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3Rlcj0wXT0iYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyIixlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXI9MV09ImFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyIixlW2UuYWNjZXNzaWJpbGl0eVN1cHBvcnQ9Ml09ImFjY2Vzc2liaWxpdHlTdXBwb3J0IixlW2UuYWNjZXNzaWJpbGl0eVBhZ2VTaXplPTNdPSJhY2Nlc3NpYmlsaXR5UGFnZVNpemUiLGVbZS5hcmlhTGFiZWw9NF09ImFyaWFMYWJlbCIsZVtlLmFyaWFSZXF1aXJlZD01XT0iYXJpYVJlcXVpcmVkIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz02XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nQ29tbWVudHM9N109ImF1dG9DbG9zaW5nQ29tbWVudHMiLGVbZS5zY3JlZW5SZWFkZXJBbm5vdW5jZUlubGluZVN1Z2dlc3Rpb249OF09InNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbiIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTldPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9MTBdPSJhdXRvQ2xvc2luZ092ZXJ0eXBlIixlW2UuYXV0b0Nsb3NpbmdRdW90ZXM9MTFdPSJhdXRvQ2xvc2luZ1F1b3RlcyIsZVtlLmF1dG9JbmRlbnQ9MTJdPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEzXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTE0XT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTVdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xNl09Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE3XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MThdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE5XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0yMF09ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbG9yRGVjb3JhdG9yc0xpbWl0PTIxXT0iY29sb3JEZWNvcmF0b3JzTGltaXQiLGVbZS5jb2x1bW5TZWxlY3Rpb249MjJdPSJjb2x1bW5TZWxlY3Rpb24iLGVbZS5jb21tZW50cz0yM109ImNvbW1lbnRzIixlW2UuY29udGV4dG1lbnU9MjRdPSJjb250ZXh0bWVudSIsZVtlLmNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nPTI1XT0iY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmciLGVbZS5jdXJzb3JCbGlua2luZz0yNl09ImN1cnNvckJsaW5raW5nIixlW2UuY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb249MjddPSJjdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbiIsZVtlLmN1cnNvclN0eWxlPTI4XT0iY3Vyc29yU3R5bGUiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzPTI5XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lcyIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXNTdHlsZT0zMF09ImN1cnNvclN1cnJvdW5kaW5nTGluZXNTdHlsZSIsZVtlLmN1cnNvcldpZHRoPTMxXT0iY3Vyc29yV2lkdGgiLGVbZS5kaXNhYmxlTGF5ZXJIaW50aW5nPTMyXT0iZGlzYWJsZUxheWVySGludGluZyIsZVtlLmRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zPTMzXT0iZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnMiLGVbZS5kb21SZWFkT25seT0zNF09ImRvbVJlYWRPbmx5IixlW2UuZHJhZ0FuZERyb3A9MzVdPSJkcmFnQW5kRHJvcCIsZVtlLmRyb3BJbnRvRWRpdG9yPTM2XT0iZHJvcEludG9FZGl0b3IiLGVbZS5lbXB0eVNlbGVjdGlvbkNsaXBib2FyZD0zN109ImVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkIixlW2UuZXhwZXJpbWVudGFsV2hpdGVzcGFjZVJlbmRlcmluZz0zOF09ImV4cGVyaW1lbnRhbFdoaXRlc3BhY2VSZW5kZXJpbmciLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zOV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTQwXT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD00MV09ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz00Ml09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz00M109ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDRdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQ1XT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQ2XT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDddPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDhdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ5XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTUwXT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTUxXT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTUyXT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTUzXT0iZm9udFdlaWdodCIsZVtlLmZvbnRWYXJpYXRpb25zPTU0XT0iZm9udFZhcmlhdGlvbnMiLGVbZS5mb3JtYXRPblBhc3RlPTU1XT0iZm9ybWF0T25QYXN0ZSIsZVtlLmZvcm1hdE9uVHlwZT01Nl09ImZvcm1hdE9uVHlwZSIsZVtlLmdseXBoTWFyZ2luPTU3XT0iZ2x5cGhNYXJnaW4iLGVbZS5nb3RvTG9jYXRpb249NThdPSJnb3RvTG9jYXRpb24iLGVbZS5oaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyPTU5XT0iaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlciIsZVtlLmhvdmVyPTYwXT0iaG92ZXIiLGVbZS5pbkRpZmZFZGl0b3I9NjFdPSJpbkRpZmZFZGl0b3IiLGVbZS5pbmxpbmVTdWdnZXN0PTYyXT0iaW5saW5lU3VnZ2VzdCIsZVtlLmlubGluZUVkaXQ9NjNdPSJpbmxpbmVFZGl0IixlW2UubGV0dGVyU3BhY2luZz02NF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NjVdPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02Nl09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02N109ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02OF09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02OV09ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTcwXT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTcxXT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTcyXT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NzNdPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT03NF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NzVdPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03Nl09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTc3XT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03OF09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTc5XT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm11bHRpQ3Vyc29yTGltaXQ9ODBdPSJtdWx0aUN1cnNvckxpbWl0IixlW2Uub2NjdXJyZW5jZXNIaWdobGlnaHQ9ODFdPSJvY2N1cnJlbmNlc0hpZ2hsaWdodCIsZVtlLm92ZXJ2aWV3UnVsZXJCb3JkZXI9ODJdPSJvdmVydmlld1J1bGVyQm9yZGVyIixlW2Uub3ZlcnZpZXdSdWxlckxhbmVzPTgzXT0ib3ZlcnZpZXdSdWxlckxhbmVzIixlW2UucGFkZGluZz04NF09InBhZGRpbmciLGVbZS5wYXN0ZUFzPTg1XT0icGFzdGVBcyIsZVtlLnBhcmFtZXRlckhpbnRzPTg2XT0icGFyYW1ldGVySGludHMiLGVbZS5wZWVrV2lkZ2V0RGVmYXVsdEZvY3VzPTg3XT0icGVla1dpZGdldERlZmF1bHRGb2N1cyIsZVtlLmRlZmluaXRpb25MaW5rT3BlbnNJblBlZWs9ODhdPSJkZWZpbml0aW9uTGlua09wZW5zSW5QZWVrIixlW2UucXVpY2tTdWdnZXN0aW9ucz04OV09InF1aWNrU3VnZ2VzdGlvbnMiLGVbZS5xdWlja1N1Z2dlc3Rpb25zRGVsYXk9OTBdPSJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLGVbZS5yZWFkT25seT05MV09InJlYWRPbmx5IixlW2UucmVhZE9ubHlNZXNzYWdlPTkyXT0icmVhZE9ubHlNZXNzYWdlIixlW2UucmVuYW1lT25UeXBlPTkzXT0icmVuYW1lT25UeXBlIixlW2UucmVuZGVyQ29udHJvbENoYXJhY3RlcnM9OTRdPSJyZW5kZXJDb250cm9sQ2hhcmFjdGVycyIsZVtlLnJlbmRlckZpbmFsTmV3bGluZT05NV09InJlbmRlckZpbmFsTmV3bGluZSIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHQ9OTZdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0IixlW2UucmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXM9OTddPSJyZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cyIsZVtlLnJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucz05OF09InJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucyIsZVtlLnJlbmRlcldoaXRlc3BhY2U9OTldPSJyZW5kZXJXaGl0ZXNwYWNlIixlW2UucmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZz0xMDBdPSJyZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nIixlW2Uucm91bmRlZFNlbGVjdGlvbj0xMDFdPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTEwMl09InJ1bGVycyIsZVtlLnNjcm9sbGJhcj0xMDNdPSJzY3JvbGxiYXIiLGVbZS5zY3JvbGxCZXlvbmRMYXN0Q29sdW1uPTEwNF09InNjcm9sbEJleW9uZExhc3RDb2x1bW4iLGVbZS5zY3JvbGxCZXlvbmRMYXN0TGluZT0xMDVdPSJzY3JvbGxCZXlvbmRMYXN0TGluZSIsZVtlLnNjcm9sbFByZWRvbWluYW50QXhpcz0xMDZdPSJzY3JvbGxQcmVkb21pbmFudEF4aXMiLGVbZS5zZWxlY3Rpb25DbGlwYm9hcmQ9MTA3XT0ic2VsZWN0aW9uQ2xpcGJvYXJkIixlW2Uuc2VsZWN0aW9uSGlnaGxpZ2h0PTEwOF09InNlbGVjdGlvbkhpZ2hsaWdodCIsZVtlLnNlbGVjdE9uTGluZU51bWJlcnM9MTA5XT0ic2VsZWN0T25MaW5lTnVtYmVycyIsZVtlLnNob3dGb2xkaW5nQ29udHJvbHM9MTEwXT0ic2hvd0ZvbGRpbmdDb250cm9scyIsZVtlLnNob3dVbnVzZWQ9MTExXT0ic2hvd1VudXNlZCIsZVtlLnNuaXBwZXRTdWdnZXN0aW9ucz0xMTJdPSJzbmlwcGV0U3VnZ2VzdGlvbnMiLGVbZS5zbWFydFNlbGVjdD0xMTNdPSJzbWFydFNlbGVjdCIsZVtlLnNtb290aFNjcm9sbGluZz0xMTRdPSJzbW9vdGhTY3JvbGxpbmciLGVbZS5zdGlja3lTY3JvbGw9MTE1XT0ic3RpY2t5U2Nyb2xsIixlW2Uuc3RpY2t5VGFiU3RvcHM9MTE2XT0ic3RpY2t5VGFiU3RvcHMiLGVbZS5zdG9wUmVuZGVyaW5nTGluZUFmdGVyPTExN109InN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXIiLGVbZS5zdWdnZXN0PTExOF09InN1Z2dlc3QiLGVbZS5zdWdnZXN0Rm9udFNpemU9MTE5XT0ic3VnZ2VzdEZvbnRTaXplIixlW2Uuc3VnZ2VzdExpbmVIZWlnaHQ9MTIwXT0ic3VnZ2VzdExpbmVIZWlnaHQiLGVbZS5zdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycz0xMjFdPSJzdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycyIsZVtlLnN1Z2dlc3RTZWxlY3Rpb249MTIyXT0ic3VnZ2VzdFNlbGVjdGlvbiIsZVtlLnRhYkNvbXBsZXRpb249MTIzXT0idGFiQ29tcGxldGlvbiIsZVtlLnRhYkluZGV4PTEyNF09InRhYkluZGV4IixlW2UudW5pY29kZUhpZ2hsaWdodGluZz0xMjVdPSJ1bmljb2RlSGlnaGxpZ2h0aW5nIixlW2UudW51c3VhbExpbmVUZXJtaW5hdG9ycz0xMjZdPSJ1bnVzdWFsTGluZVRlcm1pbmF0b3JzIixlW2UudXNlU2hhZG93RE9NPTEyN109InVzZVNoYWRvd0RPTSIsZVtlLnVzZVRhYlN0b3BzPTEyOF09InVzZVRhYlN0b3BzIixlW2Uud29yZEJyZWFrPTEyOV09IndvcmRCcmVhayIsZVtlLndvcmRTZWdtZW50ZXJMb2NhbGVzPTEzMF09IndvcmRTZWdtZW50ZXJMb2NhbGVzIixlW2Uud29yZFNlcGFyYXRvcnM9MTMxXT0id29yZFNlcGFyYXRvcnMiLGVbZS53b3JkV3JhcD0xMzJdPSJ3b3JkV3JhcCIsZVtlLndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnM9MTMzXT0id29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzPTEzNF09IndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBDb2x1bW49MTM1XT0id29yZFdyYXBDb2x1bW4iLGVbZS53b3JkV3JhcE92ZXJyaWRlMT0xMzZdPSJ3b3JkV3JhcE92ZXJyaWRlMSIsZVtlLndvcmRXcmFwT3ZlcnJpZGUyPTEzN109IndvcmRXcmFwT3ZlcnJpZGUyIixlW2Uud3JhcHBpbmdJbmRlbnQ9MTM4XT0id3JhcHBpbmdJbmRlbnQiLGVbZS53cmFwcGluZ1N0cmF0ZWd5PTEzOV09IndyYXBwaW5nU3RyYXRlZ3kiLGVbZS5zaG93RGVwcmVjYXRlZD0xNDBdPSJzaG93RGVwcmVjYXRlZCIsZVtlLmlubGF5SGludHM9MTQxXT0iaW5sYXlIaW50cyIsZVtlLmVkaXRvckNsYXNzTmFtZT0xNDJdPSJlZGl0b3JDbGFzc05hbWUiLGVbZS5waXhlbFJhdGlvPTE0M109InBpeGVsUmF0aW8iLGVbZS50YWJGb2N1c01vZGU9MTQ0XT0idGFiRm9jdXNNb2RlIixlW2UubGF5b3V0SW5mbz0xNDVdPSJsYXlvdXRJbmZvIixlW2Uud3JhcHBpbmdJbmZvPTE0Nl09IndyYXBwaW5nSW5mbyIsZVtlLmRlZmF1bHRDb2xvckRlY29yYXRvcnM9MTQ3XT0iZGVmYXVsdENvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbG9yRGVjb3JhdG9yc0FjdGl2YXRlZE9uPTE0OF09ImNvbG9yRGVjb3JhdG9yc0FjdGl2YXRlZE9uIixlW2UuaW5saW5lQ29tcGxldGlvbnNBY2Nlc3NpYmlsaXR5VmVyYm9zZT0xNDldPSJpbmxpbmVDb21wbGV0aW9uc0FjY2Vzc2liaWxpdHlWZXJib3NlIn0pKGpufHwoam49e30pKTt2YXIgUW47KGZ1bmN0aW9uKGUpe2VbZS5UZXh0RGVmaW5lZD0wXT0iVGV4dERlZmluZWQiLGVbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0pKFFufHwoUW49e30pKTt2YXIgWG47KGZ1bmN0aW9uKGUpe2VbZS5MRj0wXT0iTEYiLGVbZS5DUkxGPTFdPSJDUkxGIn0pKFhufHwoWG49e30pKTt2YXIgSm47KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD0zXT0iUmlnaHQifSkoSm58fChKbj17fSkpO3ZhciBZbjsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0pKFlufHwoWW49e30pKTt2YXIgWm47KGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifSkoWm58fChabj17fSkpO3ZhciBLbjsoZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KShLbnx8KEtuPXt9KSk7dmFyIGVyOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifSkoZXJ8fChlcj17fSkpO3ZhciB0cjsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuQXV0b21hdGljPTFdPSJBdXRvbWF0aWMifSkodHJ8fCh0cj17fSkpO3ZhciBJdDsoZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLkYyMD03OF09IkYyMCIsZVtlLkYyMT03OV09IkYyMSIsZVtlLkYyMj04MF09IkYyMiIsZVtlLkYyMz04MV09IkYyMyIsZVtlLkYyND04Ml09IkYyNCIsZVtlLk51bUxvY2s9ODNdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz04NF09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODVdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04Nl09IkVxdWFsIixlW2UuQ29tbWE9ODddPSJDb21tYSIsZVtlLk1pbnVzPTg4XT0iTWludXMiLGVbZS5QZXJpb2Q9ODldPSJQZXJpb2QiLGVbZS5TbGFzaD05MF09IlNsYXNoIixlW2UuQmFja3F1b3RlPTkxXT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9OTJdPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD05M109IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD05NF09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTk1XT0iUXVvdGUiLGVbZS5PRU1fOD05Nl09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05N109IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTk4XT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTldPSJOdW1wYWQxIixlW2UuTnVtcGFkMj0xMDBdPSJOdW1wYWQyIixlW2UuTnVtcGFkMz0xMDFdPSJOdW1wYWQzIixlW2UuTnVtcGFkND0xMDJdPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT0xMDNdPSJOdW1wYWQ1IixlW2UuTnVtcGFkNj0xMDRdPSJOdW1wYWQ2IixlW2UuTnVtcGFkNz0xMDVdPSJOdW1wYWQ3IixlW2UuTnVtcGFkOD0xMDZdPSJOdW1wYWQ4IixlW2UuTnVtcGFkOT0xMDddPSJOdW1wYWQ5IixlW2UuTnVtcGFkTXVsdGlwbHk9MTA4XT0iTnVtcGFkTXVsdGlwbHkiLGVbZS5OdW1wYWRBZGQ9MTA5XT0iTnVtcGFkQWRkIixlW2UuTlVNUEFEX1NFUEFSQVRPUj0xMTBdPSJOVU1QQURfU0VQQVJBVE9SIixlW2UuTnVtcGFkU3VidHJhY3Q9MTExXT0iTnVtcGFkU3VidHJhY3QiLGVbZS5OdW1wYWREZWNpbWFsPTExMl09Ik51bXBhZERlY2ltYWwiLGVbZS5OdW1wYWREaXZpZGU9MTEzXT0iTnVtcGFkRGl2aWRlIixlW2UuS0VZX0lOX0NPTVBPU0lUSU9OPTExNF09IktFWV9JTl9DT01QT1NJVElPTiIsZVtlLkFCTlRfQzE9MTE1XT0iQUJOVF9DMSIsZVtlLkFCTlRfQzI9MTE2XT0iQUJOVF9DMiIsZVtlLkF1ZGlvVm9sdW1lTXV0ZT0xMTddPSJBdWRpb1ZvbHVtZU11dGUiLGVbZS5BdWRpb1ZvbHVtZVVwPTExOF09IkF1ZGlvVm9sdW1lVXAiLGVbZS5BdWRpb1ZvbHVtZURvd249MTE5XT0iQXVkaW9Wb2x1bWVEb3duIixlW2UuQnJvd3NlclNlYXJjaD0xMjBdPSJCcm93c2VyU2VhcmNoIixlW2UuQnJvd3NlckhvbWU9MTIxXT0iQnJvd3NlckhvbWUiLGVbZS5Ccm93c2VyQmFjaz0xMjJdPSJCcm93c2VyQmFjayIsZVtlLkJyb3dzZXJGb3J3YXJkPTEyM109IkJyb3dzZXJGb3J3YXJkIixlW2UuTWVkaWFUcmFja05leHQ9MTI0XT0iTWVkaWFUcmFja05leHQiLGVbZS5NZWRpYVRyYWNrUHJldmlvdXM9MTI1XT0iTWVkaWFUcmFja1ByZXZpb3VzIixlW2UuTWVkaWFTdG9wPTEyNl09Ik1lZGlhU3RvcCIsZVtlLk1lZGlhUGxheVBhdXNlPTEyN109Ik1lZGlhUGxheVBhdXNlIixlW2UuTGF1bmNoTWVkaWFQbGF5ZXI9MTI4XT0iTGF1bmNoTWVkaWFQbGF5ZXIiLGVbZS5MYXVuY2hNYWlsPTEyOV09IkxhdW5jaE1haWwiLGVbZS5MYXVuY2hBcHAyPTEzMF09IkxhdW5jaEFwcDIiLGVbZS5DbGVhcj0xMzFdPSJDbGVhciIsZVtlLk1BWF9WQUxVRT0xMzJdPSJNQVhfVkFMVUUifSkoSXR8fChJdD17fSkpO3ZhciBVdDsoZnVuY3Rpb24oZSl7ZVtlLkhpbnQ9MV09IkhpbnQiLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz00XT0iV2FybmluZyIsZVtlLkVycm9yPThdPSJFcnJvciJ9KShVdHx8KFV0PXt9KSk7dmFyIEh0OyhmdW5jdGlvbihlKXtlW2UuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixlW2UuRGVwcmVjYXRlZD0yXT0iRGVwcmVjYXRlZCJ9KShIdHx8KEh0PXt9KSk7dmFyIG5yOyhmdW5jdGlvbihlKXtlW2UuSW5saW5lPTFdPSJJbmxpbmUiLGVbZS5HdXR0ZXI9Ml09Ikd1dHRlciJ9KShucnx8KG5yPXt9KSk7dmFyIHJyOyhmdW5jdGlvbihlKXtlW2UuTm9ybWFsPTFdPSJOb3JtYWwiLGVbZS5VbmRlcmxpbmVkPTJdPSJVbmRlcmxpbmVkIn0pKHJyfHwocnI9e30pKTt2YXIgc3I7KGZ1bmN0aW9uKGUpe2VbZS5VTktOT1dOPTBdPSJVTktOT1dOIixlW2UuVEVYVEFSRUE9MV09IlRFWFRBUkVBIixlW2UuR1VUVEVSX0dMWVBIX01BUkdJTj0yXT0iR1VUVEVSX0dMWVBIX01BUkdJTiIsZVtlLkdVVFRFUl9MSU5FX05VTUJFUlM9M109IkdVVFRFUl9MSU5FX05VTUJFUlMiLGVbZS5HVVRURVJfTElORV9ERUNPUkFUSU9OUz00XT0iR1VUVEVSX0xJTkVfREVDT1JBVElPTlMiLGVbZS5HVVRURVJfVklFV19aT05FPTVdPSJHVVRURVJfVklFV19aT05FIixlW2UuQ09OVEVOVF9URVhUPTZdPSJDT05URU5UX1RFWFQiLGVbZS5DT05URU5UX0VNUFRZPTddPSJDT05URU5UX0VNUFRZIixlW2UuQ09OVEVOVF9WSUVXX1pPTkU9OF09IkNPTlRFTlRfVklFV19aT05FIixlW2UuQ09OVEVOVF9XSURHRVQ9OV09IkNPTlRFTlRfV0lER0VUIixlW2UuT1ZFUlZJRVdfUlVMRVI9MTBdPSJPVkVSVklFV19SVUxFUiIsZVtlLlNDUk9MTEJBUj0xMV09IlNDUk9MTEJBUiIsZVtlLk9WRVJMQVlfV0lER0VUPTEyXT0iT1ZFUkxBWV9XSURHRVQiLGVbZS5PVVRTSURFX0VESVRPUj0xM109Ik9VVFNJREVfRURJVE9SIn0pKHNyfHwoc3I9e30pKTt2YXIgaXI7KGZ1bmN0aW9uKGUpe2VbZS5BSUdlbmVyYXRlZD0xXT0iQUlHZW5lcmF0ZWQifSkoaXJ8fChpcj17fSkpO3ZhciBhcjsoZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KShhcnx8KGFyPXt9KSk7dmFyIGxyOyhmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KShscnx8KGxyPXt9KSk7dmFyIG9yOyhmdW5jdGlvbihlKXtlW2UuV29yZD0wXT0iV29yZCIsZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5TdWdnZXN0PTJdPSJTdWdnZXN0In0pKG9yfHwob3I9e30pKTt2YXIgdXI7KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTBdPSJMZWZ0IixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTm9uZT0yXT0iTm9uZSIsZVtlLkxlZnRPZkluamVjdGVkVGV4dD0zXT0iTGVmdE9mSW5qZWN0ZWRUZXh0IixlW2UuUmlnaHRPZkluamVjdGVkVGV4dD00XT0iUmlnaHRPZkluamVjdGVkVGV4dCJ9KSh1cnx8KHVyPXt9KSk7dmFyIGNyOyhmdW5jdGlvbihlKXtlW2UuT2ZmPTBdPSJPZmYiLGVbZS5Pbj0xXT0iT24iLGVbZS5SZWxhdGl2ZT0yXT0iUmVsYXRpdmUiLGVbZS5JbnRlcnZhbD0zXT0iSW50ZXJ2YWwiLGVbZS5DdXN0b209NF09IkN1c3RvbSJ9KShjcnx8KGNyPXt9KSk7dmFyIGhyOyhmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLlRleHQ9MV09IlRleHQiLGVbZS5CbG9ja3M9Ml09IkJsb2NrcyJ9KShocnx8KGhyPXt9KSk7dmFyIGZyOyhmdW5jdGlvbihlKXtlW2UuU21vb3RoPTBdPSJTbW9vdGgiLGVbZS5JbW1lZGlhdGU9MV09IkltbWVkaWF0ZSJ9KShmcnx8KGZyPXt9KSk7dmFyIGRyOyhmdW5jdGlvbihlKXtlW2UuQXV0bz0xXT0iQXV0byIsZVtlLkhpZGRlbj0yXT0iSGlkZGVuIixlW2UuVmlzaWJsZT0zXT0iVmlzaWJsZSJ9KShkcnx8KGRyPXt9KSk7dmFyIFd0OyhmdW5jdGlvbihlKXtlW2UuTFRSPTBdPSJMVFIiLGVbZS5SVEw9MV09IlJUTCJ9KShXdHx8KFd0PXt9KSk7dmFyIG1yOyhmdW5jdGlvbihlKXtlLk9mZj0ib2ZmIixlLk9uQ29kZT0ib25Db2RlIixlLk9uPSJvbiJ9KShtcnx8KG1yPXt9KSk7dmFyIGdyOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTJdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuQ29udGVudENoYW5nZT0zXT0iQ29udGVudENoYW5nZSJ9KShncnx8KGdyPXt9KSk7dmFyIGJyOyhmdW5jdGlvbihlKXtlW2UuRmlsZT0wXT0iRmlsZSIsZVtlLk1vZHVsZT0xXT0iTW9kdWxlIixlW2UuTmFtZXNwYWNlPTJdPSJOYW1lc3BhY2UiLGVbZS5QYWNrYWdlPTNdPSJQYWNrYWdlIixlW2UuQ2xhc3M9NF09IkNsYXNzIixlW2UuTWV0aG9kPTVdPSJNZXRob2QiLGVbZS5Qcm9wZXJ0eT02XT0iUHJvcGVydHkiLGVbZS5GaWVsZD03XT0iRmllbGQiLGVbZS5Db25zdHJ1Y3Rvcj04XT0iQ29uc3RydWN0b3IiLGVbZS5FbnVtPTldPSJFbnVtIixlW2UuSW50ZXJmYWNlPTEwXT0iSW50ZXJmYWNlIixlW2UuRnVuY3Rpb249MTFdPSJGdW5jdGlvbiIsZVtlLlZhcmlhYmxlPTEyXT0iVmFyaWFibGUiLGVbZS5Db25zdGFudD0xM109IkNvbnN0YW50IixlW2UuU3RyaW5nPTE0XT0iU3RyaW5nIixlW2UuTnVtYmVyPTE1XT0iTnVtYmVyIixlW2UuQm9vbGVhbj0xNl09IkJvb2xlYW4iLGVbZS5BcnJheT0xN109IkFycmF5IixlW2UuT2JqZWN0PTE4XT0iT2JqZWN0IixlW2UuS2V5PTE5XT0iS2V5IixlW2UuTnVsbD0yMF09Ik51bGwiLGVbZS5FbnVtTWVtYmVyPTIxXT0iRW51bU1lbWJlciIsZVtlLlN0cnVjdD0yMl09IlN0cnVjdCIsZVtlLkV2ZW50PTIzXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0yNF09Ik9wZXJhdG9yIixlW2UuVHlwZVBhcmFtZXRlcj0yNV09IlR5cGVQYXJhbWV0ZXIifSkoYnJ8fChicj17fSkpO3ZhciBfcjsoZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSkoX3J8fChfcj17fSkpO3ZhciB4cjsoZnVuY3Rpb24oZSl7ZVtlLkhpZGRlbj0wXT0iSGlkZGVuIixlW2UuQmxpbms9MV09IkJsaW5rIixlW2UuU21vb3RoPTJdPSJTbW9vdGgiLGVbZS5QaGFzZT0zXT0iUGhhc2UiLGVbZS5FeHBhbmQ9NF09IkV4cGFuZCIsZVtlLlNvbGlkPTVdPSJTb2xpZCJ9KSh4cnx8KHhyPXt9KSk7dmFyIHByOyhmdW5jdGlvbihlKXtlW2UuTGluZT0xXT0iTGluZSIsZVtlLkJsb2NrPTJdPSJCbG9jayIsZVtlLlVuZGVybGluZT0zXT0iVW5kZXJsaW5lIixlW2UuTGluZVRoaW49NF09IkxpbmVUaGluIixlW2UuQmxvY2tPdXRsaW5lPTVdPSJCbG9ja091dGxpbmUiLGVbZS5VbmRlcmxpbmVUaGluPTZdPSJVbmRlcmxpbmVUaGluIn0pKHByfHwocHI9e30pKTt2YXIgdnI7KGZ1bmN0aW9uKGUpe2VbZS5BbHdheXNHcm93c1doZW5UeXBpbmdBdEVkZ2VzPTBdPSJBbHdheXNHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzPTFdPSJOZXZlckdyb3dzV2hlblR5cGluZ0F0RWRnZXMiLGVbZS5Hcm93c09ubHlXaGVuVHlwaW5nQmVmb3JlPTJdPSJHcm93c09ubHlXaGVuVHlwaW5nQmVmb3JlIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyPTNdPSJHcm93c09ubHlXaGVuVHlwaW5nQWZ0ZXIifSkodnJ8fCh2cj17fSkpO3ZhciB3cjsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5TYW1lPTFdPSJTYW1lIixlW2UuSW5kZW50PTJdPSJJbmRlbnQiLGVbZS5EZWVwSW5kZW50PTNdPSJEZWVwSW5kZW50In0pKHdyfHwod3I9e30pKTtjbGFzcyBPZXtzdGF0aWMgY2hvcmQodCxuKXtyZXR1cm4gd2kodCxuKX19T2UuQ3RybENtZD0yMDQ4LE9lLlNoaWZ0PTEwMjQsT2UuQWx0PTUxMixPZS5XaW5DdHJsPTI1NjtmdW5jdGlvbiBSaSgpe3JldHVybntlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6X2ksRW1pdHRlcjpzZSxLZXlDb2RlOkl0LEtleU1vZDpPZSxQb3NpdGlvbjpKLFJhbmdlOlAsU2VsZWN0aW9uOnRlLFNlbGVjdGlvbkRpcmVjdGlvbjpXdCxNYXJrZXJTZXZlcml0eTpVdCxNYXJrZXJUYWc6SHQsVXJpOk5lLFRva2VuOkFpfX12YXIgTHI7Y2xhc3MgeWl7Y29uc3RydWN0b3IoKXt0aGlzW0xyXT0iTGlua2VkTWFwIix0aGlzLl9tYXA9bmV3IE1hcCx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGU9MH1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZSsrfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5faGVhZCYmIXRoaXMuX3RhaWx9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1nZXQgZmlyc3QoKXt2YXIgdDtyZXR1cm4odD10aGlzLl9oZWFkKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQudmFsdWV9Z2V0IGxhc3QoKXt2YXIgdDtyZXR1cm4odD10aGlzLl90YWlsKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQudmFsdWV9aGFzKHQpe3JldHVybiB0aGlzLl9tYXAuaGFzKHQpfWdldCh0LG49MCl7Y29uc3Qgcj10aGlzLl9tYXAuZ2V0KHQpO2lmKHIpcmV0dXJuIG4hPT0wJiZ0aGlzLnRvdWNoKHIsbiksci52YWx1ZX1zZXQodCxuLHI9MCl7bGV0IHM9dGhpcy5fbWFwLmdldCh0KTtpZihzKXMudmFsdWU9bixyIT09MCYmdGhpcy50b3VjaChzLHIpO2Vsc2V7c3dpdGNoKHM9e2tleTp0LHZhbHVlOm4sbmV4dDp2b2lkIDAscHJldmlvdXM6dm9pZCAwfSxyKXtjYXNlIDA6dGhpcy5hZGRJdGVtTGFzdChzKTticmVhaztjYXNlIDE6dGhpcy5hZGRJdGVtRmlyc3Qocyk7YnJlYWs7Y2FzZSAyOnRoaXMuYWRkSXRlbUxhc3Qocyk7YnJlYWs7ZGVmYXVsdDp0aGlzLmFkZEl0ZW1MYXN0KHMpO2JyZWFrfXRoaXMuX21hcC5zZXQodCxzKSx0aGlzLl9zaXplKyt9cmV0dXJuIHRoaXN9ZGVsZXRlKHQpe3JldHVybiEhdGhpcy5yZW1vdmUodCl9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtpZihuKXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKHQpLHRoaXMucmVtb3ZlSXRlbShuKSx0aGlzLl9zaXplLS0sbi52YWx1ZX1zaGlmdCgpe2lmKCF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbClyZXR1cm47aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7Y29uc3QgdD10aGlzLl9oZWFkO3JldHVybiB0aGlzLl9tYXAuZGVsZXRlKHQua2V5KSx0aGlzLnJlbW92ZUl0ZW0odCksdGhpcy5fc2l6ZS0tLHQudmFsdWV9Zm9yRWFjaCh0LG4pe2NvbnN0IHI9dGhpcy5fc3RhdGU7bGV0IHM9dGhpcy5faGVhZDtmb3IoO3M7KXtpZihuP3QuYmluZChuKShzLnZhbHVlLHMua2V5LHRoaXMpOnQocy52YWx1ZSxzLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7cz1zLm5leHR9fWtleXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IHM9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHN9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYocil7Y29uc3QgaT17dmFsdWU6ci5rZXksZG9uZTohMX07cmV0dXJuIHI9ci5uZXh0LGl9ZWxzZSByZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHN9dmFsdWVzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBzPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBzfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKHIpe2NvbnN0IGk9e3ZhbHVlOnIudmFsdWUsZG9uZTohMX07cmV0dXJuIHI9ci5uZXh0LGl9ZWxzZSByZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHN9ZW50cmllcygpe2NvbnN0IHQ9dGhpcyxuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Y29uc3Qgcz17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gc30sbmV4dCgpe2lmKHQuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihyKXtjb25zdCBpPXt2YWx1ZTpbci5rZXksci52YWx1ZV0sZG9uZTohMX07cmV0dXJuIHI9ci5uZXh0LGl9ZWxzZSByZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHN9WyhMcj1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZCh0KXtpZih0Pj10aGlzLnNpemUpcmV0dXJuO2lmKHQ9PT0wKXt0aGlzLmNsZWFyKCk7cmV0dXJufWxldCBuPXRoaXMuX2hlYWQscj10aGlzLnNpemU7Zm9yKDtuJiZyPnQ7KXRoaXMuX21hcC5kZWxldGUobi5rZXkpLG49bi5uZXh0LHItLTt0aGlzLl9oZWFkPW4sdGhpcy5fc2l6ZT1yLG4mJihuLnByZXZpb3VzPXZvaWQgMCksdGhpcy5fc3RhdGUrK31hZGRJdGVtRmlyc3QodCl7aWYoIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsKXRoaXMuX3RhaWw9dDtlbHNlIGlmKHRoaXMuX2hlYWQpdC5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz10O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0aGlzLl9oZWFkPXQsdGhpcy5fc3RhdGUrK31hZGRJdGVtTGFzdCh0KXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpdGhpcy5faGVhZD10O2Vsc2UgaWYodGhpcy5fdGFpbCl0LnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PXQ7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3RoaXMuX3RhaWw9dCx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0odCl7aWYodD09PXRoaXMuX2hlYWQmJnQ9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYodD09PXRoaXMuX2hlYWQpe2lmKCF0Lm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0Lm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9dC5uZXh0fWVsc2UgaWYodD09PXRoaXMuX3RhaWwpe2lmKCF0LnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPXQucHJldmlvdXN9ZWxzZXtjb25zdCBuPXQubmV4dCxyPXQucHJldmlvdXM7aWYoIW58fCFyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7bi5wcmV2aW91cz1yLHIubmV4dD1ufXQubmV4dD12b2lkIDAsdC5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaCh0LG4pe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKCEobiE9PTEmJm4hPT0yKSl7aWYobj09PTEpe2lmKHQ9PT10aGlzLl9oZWFkKXJldHVybjtjb25zdCByPXQubmV4dCxzPXQucHJldmlvdXM7dD09PXRoaXMuX3RhaWw/KHMubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1zKTooci5wcmV2aW91cz1zLHMubmV4dD1yKSx0LnByZXZpb3VzPXZvaWQgMCx0Lm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPXQsdGhpcy5faGVhZD10LHRoaXMuX3N0YXRlKyt9ZWxzZSBpZihuPT09Mil7aWYodD09PXRoaXMuX3RhaWwpcmV0dXJuO2NvbnN0IHI9dC5uZXh0LHM9dC5wcmV2aW91czt0PT09dGhpcy5faGVhZD8oci5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1yKTooci5wcmV2aW91cz1zLHMubmV4dD1yKSx0Lm5leHQ9dm9pZCAwLHQucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9dCx0aGlzLl90YWlsPXQsdGhpcy5fc3RhdGUrK319fXRvSlNPTigpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuZm9yRWFjaCgobixyKT0+e3QucHVzaChbcixuXSl9KSx0fWZyb21KU09OKHQpe3RoaXMuY2xlYXIoKTtmb3IoY29uc3RbbixyXW9mIHQpdGhpcy5zZXQobixyKX19Y2xhc3MgRWkgZXh0ZW5kcyB5aXtjb25zdHJ1Y3Rvcih0LG49MSl7c3VwZXIoKSx0aGlzLl9saW1pdD10LHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsbiksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdCh0KXt0aGlzLl9saW1pdD10LHRoaXMuY2hlY2tUcmltKCl9Z2V0KHQsbj0yKXtyZXR1cm4gc3VwZXIuZ2V0KHQsbil9cGVlayh0KXtyZXR1cm4gc3VwZXIuZ2V0KHQsMCl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldCh0LG4sMiksdGhpcy5jaGVja1RyaW0oKSx0aGlzfWNoZWNrVHJpbSgpe3RoaXMuc2l6ZT50aGlzLl9saW1pdCYmdGhpcy50cmltT2xkKE1hdGgucm91bmQodGhpcy5fbGltaXQqdGhpcy5fcmF0aW8pKX19Y2xhc3MgTWl7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfWFkZCh0LG4pe2xldCByPXRoaXMubWFwLmdldCh0KTtyfHwocj1uZXcgU2V0LHRoaXMubWFwLnNldCh0LHIpKSxyLmFkZChuKX1kZWxldGUodCxuKXtjb25zdCByPXRoaXMubWFwLmdldCh0KTtyJiYoci5kZWxldGUobiksci5zaXplPT09MCYmdGhpcy5tYXAuZGVsZXRlKHQpKX1mb3JFYWNoKHQsbil7Y29uc3Qgcj10aGlzLm1hcC5nZXQodCk7ciYmci5mb3JFYWNoKG4pfWdldCh0KXtjb25zdCBuPXRoaXMubWFwLmdldCh0KTtyZXR1cm4gbnx8bmV3IFNldH19bmV3IEVpKDEwKTt2YXIgTnI7KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD00XT0iUmlnaHQiLGVbZS5GdWxsPTddPSJGdWxsIn0pKE5yfHwoTnI9e30pKTt2YXIgU3I7KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD0zXT0iUmlnaHQifSkoU3J8fChTcj17fSkpO3ZhciBDcjsoZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KShDcnx8KENyPXt9KSk7ZnVuY3Rpb24ga2koZSx0LG4scixzKXtpZihyPT09MClyZXR1cm4hMDtjb25zdCBpPXQuY2hhckNvZGVBdChyLTEpO2lmKGUuZ2V0KGkpIT09MHx8aT09PTEzfHxpPT09MTApcmV0dXJuITA7aWYocz4wKXtjb25zdCBsPXQuY2hhckNvZGVBdChyKTtpZihlLmdldChsKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gRmkoZSx0LG4scixzKXtpZihyK3M9PT1uKXJldHVybiEwO2NvbnN0IGk9dC5jaGFyQ29kZUF0KHIrcyk7aWYoZS5nZXQoaSkhPT0wfHxpPT09MTN8fGk9PT0xMClyZXR1cm4hMDtpZihzPjApe2NvbnN0IGw9dC5jaGFyQ29kZUF0KHIrcy0xKTtpZihlLmdldChsKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gUGkoZSx0LG4scixzKXtyZXR1cm4ga2koZSx0LG4scixzKSYmRmkoZSx0LG4scixzKX1jbGFzcyBEaXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3dvcmRTZXBhcmF0b3JzPXQsdGhpcy5fc2VhcmNoUmVnZXg9bix0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KHQpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD10LHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dCh0KXtjb25zdCBuPXQubGVuZ3RoO2xldCByO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09bnx8KHI9dGhpcy5fc2VhcmNoUmVnZXguZXhlYyh0KSwhcikpcmV0dXJuIG51bGw7Y29uc3Qgcz1yLmluZGV4LGk9clswXS5sZW5ndGg7aWYocz09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKGk9PT0wKXtTcyh0LG4sdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT42NTUzNT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xO2NvbnRpbnVlfXJldHVybiBudWxsfWlmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9cyx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9aSwhdGhpcy5fd29yZFNlcGFyYXRvcnN8fFBpKHRoaXMuX3dvcmRTZXBhcmF0b3JzLHQsbixzLGkpKXJldHVybiByfXdoaWxlKHIpO3JldHVybiBudWxsfX1mdW5jdGlvbiBUaShlLHQ9IlVucmVhY2hhYmxlIil7dGhyb3cgbmV3IEVycm9yKHQpfWZ1bmN0aW9uIGh0KGUpe2lmKCFlKCkpe2RlYnVnZ2VyO2UoKSxZdChuZXcgY2UoIkFzc2VydGlvbiBGYWlsZWQiKSl9fWZ1bmN0aW9uIEFyKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgtMTspe2NvbnN0IHI9ZVtuXSxzPWVbbisxXTtpZighdChyLHMpKXJldHVybiExO24rK31yZXR1cm4hMH1jbGFzcyBWaXtzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQsbixyKXtjb25zdCBzPXI/ci5zdGFydExpbmVOdW1iZXI6MSxpPXI/ci5lbmRMaW5lTnVtYmVyOnQuZ2V0TGluZUNvdW50KCksbD1uZXcgUnIobiksbz1sLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgdTtvPT09ImFsbE5vbkJhc2ljQXNjaWkiP3U9bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6dT1uZXcgUmVnRXhwKGAke0JpKEFycmF5LmZyb20obykpfWAsImciKTtjb25zdCBjPW5ldyBEaShudWxsLHUpLGg9W107bGV0IGY9ITEsZCxtPTAsZz0wLHg9MDtlOmZvcihsZXQgdj1zLE49aTt2PD1OO3YrKyl7Y29uc3QgUz10LmdldExpbmVDb250ZW50KHYpLF89Uy5sZW5ndGg7Yy5yZXNldCgwKTtkbyBpZihkPWMubmV4dChTKSxkKXtsZXQgTD1kLmluZGV4LHA9ZC5pbmRleCtkWzBdLmxlbmd0aDtpZihMPjApe2NvbnN0IEk9Uy5jaGFyQ29kZUF0KEwtMSk7UnQoSSkmJkwtLX1pZihwKzE8Xyl7Y29uc3QgST1TLmNoYXJDb2RlQXQocC0xKTtSdChJKSYmcCsrfWNvbnN0IFI9Uy5zdWJzdHJpbmcoTCxwKTtsZXQgeT1GdChMKzEsdm4sUywwKTt5JiZ5LmVuZENvbHVtbjw9TCsxJiYoeT1udWxsKTtjb25zdCBFPWwuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShSLHk/eS53b3JkOm51bGwpO2lmKEUhPT0wKXtpZihFPT09Mz9tKys6RT09PTI/ZysrOkU9PT0xP3grKzpUaSgpLGgubGVuZ3RoPj0xZTMpe2Y9ITA7YnJlYWsgZX1oLnB1c2gobmV3IFAodixMKzEsdixwKzEpKX19d2hpbGUoZCl9cmV0dXJue3JhbmdlczpoLGhhc01vcmU6ZixhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDptLGludmlzaWJsZUNoYXJhY3RlckNvdW50Omcsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50Onh9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbih0LG4pe2NvbnN0IHI9bmV3IFJyKG4pO3N3aXRjaChyLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkodCxudWxsKSl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMjpyZXR1cm57a2luZDoxfTtjYXNlIDM6e2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKSxsPXIuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShpKSxvPUxlLmdldExvY2FsZXMoKS5maWx0ZXIodT0+IUxlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLm4uYWxsb3dlZExvY2FsZXMsdV0pKS5pc0FtYmlndW91cyhpKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChsKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6b319Y2FzZSAxOnJldHVybntraW5kOjJ9fX19ZnVuY3Rpb24gQmkoZSx0KXtyZXR1cm5gWyR7eHMoZS5tYXAocj0+U3RyaW5nLmZyb21Db2RlUG9pbnQocikpLmpvaW4oIiIpKX1dYH1jbGFzcyBScntjb25zdHJ1Y3Rvcih0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLmFsbG93ZWRDb2RlUG9pbnRzPW5ldyBTZXQodC5hbGxvd2VkQ29kZVBvaW50cyksdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzPUxlLmdldEluc3RhbmNlKG5ldyBTZXQodC5hbGxvd2VkTG9jYWxlcykpfWdldENhbmRpZGF0ZUNvZGVQb2ludHMoKXtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4iYWxsTm9uQmFzaWNBc2NpaSI7Y29uc3QgdD1uZXcgU2V0O2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzKWZvcihjb25zdCBuIG9mIGRlLmNvZGVQb2ludHMpeXIoU3RyaW5nLmZyb21Db2RlUG9pbnQobikpfHx0LmFkZChuKTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgbiBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSl0LmFkZChuKTtmb3IoY29uc3QgbiBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKXQuZGVsZXRlKG4pO3JldHVybiB0fXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkodCxuKXtjb25zdCByPXQuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMocikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IHM9ITEsaT0hMTtpZihuKWZvcihjb25zdCBsIG9mIG4pe2NvbnN0IG89bC5jb2RlUG9pbnRBdCgwKSx1PUFzKGwpO3M9c3x8dSwhdSYmIXRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhvKSYmIWRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG8pJiYoaT0hMCl9cmV0dXJuIXMmJmk/MDp0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmIXlyKHQpJiZkZS5pc0ludmlzaWJsZUNoYXJhY3RlcihyKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMocik/MzowfX1mdW5jdGlvbiB5cihlKXtyZXR1cm4gZT09PSIgInx8ZT09PWAKYHx8ZT09PSIJIn1jbGFzcyBmdHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jaGFuZ2VzPXQsdGhpcy5tb3Zlcz1uLHRoaXMuaGl0VGltZW91dD1yfX1jbGFzcyBxaXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubGluZVJhbmdlTWFwcGluZz10LHRoaXMuY2hhbmdlcz1ufX1jbGFzcyBWe3N0YXRpYyBhZGRSYW5nZSh0LG4pe2xldCByPTA7Zm9yKDtyPG4ubGVuZ3RoJiZuW3JdLmVuZEV4Y2x1c2l2ZTx0LnN0YXJ0OylyKys7bGV0IHM9cjtmb3IoO3M8bi5sZW5ndGgmJm5bc10uc3RhcnQ8PXQuZW5kRXhjbHVzaXZlOylzKys7aWYocj09PXMpbi5zcGxpY2UociwwLHQpO2Vsc2V7Y29uc3QgaT1NYXRoLm1pbih0LnN0YXJ0LG5bcl0uc3RhcnQpLGw9TWF0aC5tYXgodC5lbmRFeGNsdXNpdmUsbltzLTFdLmVuZEV4Y2x1c2l2ZSk7bi5zcGxpY2UocixzLXIsbmV3IFYoaSxsKSl9fXN0YXRpYyB0cnlDcmVhdGUodCxuKXtpZighKHQ+bikpcmV0dXJuIG5ldyBWKHQsbil9c3RhdGljIG9mTGVuZ3RoKHQpe3JldHVybiBuZXcgVigwLHQpfXN0YXRpYyBvZlN0YXJ0QW5kTGVuZ3RoKHQsbil7cmV0dXJuIG5ldyBWKHQsdCtuKX1jb25zdHJ1Y3Rvcih0LG4pe2lmKHRoaXMuc3RhcnQ9dCx0aGlzLmVuZEV4Y2x1c2l2ZT1uLHQ+bil0aHJvdyBuZXcgY2UoYEludmFsaWQgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuc3RhcnQ9PT10aGlzLmVuZEV4Y2x1c2l2ZX1kZWx0YSh0KXtyZXR1cm4gbmV3IFYodGhpcy5zdGFydCt0LHRoaXMuZW5kRXhjbHVzaXZlK3QpfWRlbHRhU3RhcnQodCl7cmV0dXJuIG5ldyBWKHRoaXMuc3RhcnQrdCx0aGlzLmVuZEV4Y2x1c2l2ZSl9ZGVsdGFFbmQodCl7cmV0dXJuIG5ldyBWKHRoaXMuc3RhcnQsdGhpcy5lbmRFeGNsdXNpdmUrdCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZEV4Y2x1c2l2ZS10aGlzLnN0YXJ0fXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnR9LCAke3RoaXMuZW5kRXhjbHVzaXZlfSlgfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLnN0YXJ0PD10JiZ0PHRoaXMuZW5kRXhjbHVzaXZlfWpvaW4odCl7cmV0dXJuIG5ldyBWKE1hdGgubWluKHRoaXMuc3RhcnQsdC5zdGFydCksTWF0aC5tYXgodGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpKX1pbnRlcnNlY3QodCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0LHQuc3RhcnQpLHI9TWF0aC5taW4odGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpO2lmKG48PXIpcmV0dXJuIG5ldyBWKG4scil9aW50ZXJzZWN0cyh0KXtjb25zdCBuPU1hdGgubWF4KHRoaXMuc3RhcnQsdC5zdGFydCkscj1NYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZSx0LmVuZEV4Y2x1c2l2ZSk7cmV0dXJuIG48cn1pc0JlZm9yZSh0KXtyZXR1cm4gdGhpcy5lbmRFeGNsdXNpdmU8PXQuc3RhcnR9aXNBZnRlcih0KXtyZXR1cm4gdGhpcy5zdGFydD49dC5lbmRFeGNsdXNpdmV9c2xpY2UodCl7cmV0dXJuIHQuc2xpY2UodGhpcy5zdGFydCx0aGlzLmVuZEV4Y2x1c2l2ZSl9c3Vic3RyaW5nKHQpe3JldHVybiB0LnN1YnN0cmluZyh0aGlzLnN0YXJ0LHRoaXMuZW5kRXhjbHVzaXZlKX1jbGlwKHQpe2lmKHRoaXMuaXNFbXB0eSl0aHJvdyBuZXcgY2UoYEludmFsaWQgY2xpcHBpbmcgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApO3JldHVybiBNYXRoLm1heCh0aGlzLnN0YXJ0LE1hdGgubWluKHRoaXMuZW5kRXhjbHVzaXZlLTEsdCkpfWNsaXBDeWNsaWModCl7aWYodGhpcy5pc0VtcHR5KXRocm93IG5ldyBjZShgSW52YWxpZCBjbGlwcGluZyByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCk7cmV0dXJuIHQ8dGhpcy5zdGFydD90aGlzLmVuZEV4Y2x1c2l2ZS0odGhpcy5zdGFydC10KSV0aGlzLmxlbmd0aDp0Pj10aGlzLmVuZEV4Y2x1c2l2ZT90aGlzLnN0YXJ0Kyh0LXRoaXMuc3RhcnQpJXRoaXMubGVuZ3RoOnR9Zm9yRWFjaCh0KXtmb3IobGV0IG49dGhpcy5zdGFydDtuPHRoaXMuZW5kRXhjbHVzaXZlO24rKyl0KG4pfX1mdW5jdGlvbiBWZShlLHQpe2NvbnN0IG49R2UoZSx0KTtyZXR1cm4gbj09PS0xP3ZvaWQgMDplW25dfWZ1bmN0aW9uIEdlKGUsdCxuPTAscj1lLmxlbmd0aCl7bGV0IHM9bixpPXI7Zm9yKDtzPGk7KXtjb25zdCBsPU1hdGguZmxvb3IoKHMraSkvMik7dChlW2xdKT9zPWwrMTppPWx9cmV0dXJuIHMtMX1mdW5jdGlvbiBJaShlLHQpe2NvbnN0IG49enQoZSx0KTtyZXR1cm4gbj09PWUubGVuZ3RoP3ZvaWQgMDplW25dfWZ1bmN0aW9uIHp0KGUsdCxuPTAscj1lLmxlbmd0aCl7bGV0IHM9bixpPXI7Zm9yKDtzPGk7KXtjb25zdCBsPU1hdGguZmxvb3IoKHMraSkvMik7dChlW2xdKT9pPWw6cz1sKzF9cmV0dXJuIHN9Y2xhc3MgamV7Y29uc3RydWN0b3IodCl7dGhpcy5fYXJyYXk9dCx0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4PTB9ZmluZExhc3RNb25vdG9ub3VzKHQpe2lmKGplLmFzc2VydEludmFyaWFudHMpe2lmKHRoaXMuX3ByZXZGaW5kTGFzdFByZWRpY2F0ZSl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fYXJyYXkpaWYodGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlKHIpJiYhdChyKSl0aHJvdyBuZXcgRXJyb3IoIk1vbm90b25vdXNBcnJheTogY3VycmVudCBwcmVkaWNhdGUgbXVzdCBiZSB3ZWFrZXIgdGhhbiAob3IgZXF1YWwgdG8pIHRoZSBwcmV2aW91cyBwcmVkaWNhdGUuIil9dGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlPXR9Y29uc3Qgbj1HZSh0aGlzLl9hcnJheSx0LHRoaXMuX2ZpbmRMYXN0TW9ub3Rvbm91c0xhc3RJZHgpO3JldHVybiB0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4PW4rMSxuPT09LTE/dm9pZCAwOnRoaXMuX2FycmF5W25dfX1qZS5hc3NlcnRJbnZhcmlhbnRzPSExO2NsYXNzIER7c3RhdGljIGZyb21SYW5nZUluY2x1c2l2ZSh0KXtyZXR1cm4gbmV3IEQodC5zdGFydExpbmVOdW1iZXIsdC5lbmRMaW5lTnVtYmVyKzEpfXN0YXRpYyBqb2luTWFueSh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuW107bGV0IG49bmV3IHVlKHRbMF0uc2xpY2UoKSk7Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspbj1uLmdldFVuaW9uKG5ldyB1ZSh0W3JdLnNsaWNlKCkpKTtyZXR1cm4gbi5yYW5nZXN9c3RhdGljIGpvaW4odCl7aWYodC5sZW5ndGg9PT0wKXRocm93IG5ldyBjZSgibGluZVJhbmdlcyBjYW5ub3QgYmUgZW1wdHkiKTtsZXQgbj10WzBdLnN0YXJ0TGluZU51bWJlcixyPXRbMF0uZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtmb3IobGV0IHM9MTtzPHQubGVuZ3RoO3MrKyluPU1hdGgubWluKG4sdFtzXS5zdGFydExpbmVOdW1iZXIpLHI9TWF0aC5tYXgocix0W3NdLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO3JldHVybiBuZXcgRChuLHIpfXN0YXRpYyBvZkxlbmd0aCh0LG4pe3JldHVybiBuZXcgRCh0LHQrbil9c3RhdGljIGRlc2VyaWFsaXplKHQpe3JldHVybiBuZXcgRCh0WzBdLHRbMV0pfWNvbnN0cnVjdG9yKHQsbil7aWYodD5uKXRocm93IG5ldyBjZShgc3RhcnRMaW5lTnVtYmVyICR7dH0gY2Fubm90IGJlIGFmdGVyIGVuZExpbmVOdW1iZXJFeGNsdXNpdmUgJHtufWApO3RoaXMuc3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPW59Y29udGFpbnModCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD10JiZ0PHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1kZWx0YSh0KXtyZXR1cm4gbmV3IEQodGhpcy5zdGFydExpbmVOdW1iZXIrdCx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrdCl9ZGVsdGFMZW5ndGgodCl7cmV0dXJuIG5ldyBEKHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSt0KX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS10aGlzLnN0YXJ0TGluZU51bWJlcn1qb2luKHQpe3JldHVybiBuZXcgRChNYXRoLm1pbih0aGlzLnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0TGluZU51bWJlciksTWF0aC5tYXgodGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnRMaW5lTnVtYmVyfSwke3RoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX0pYH1pbnRlcnNlY3QodCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0TGluZU51bWJlcikscj1NYXRoLm1pbih0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtpZihuPD1yKXJldHVybiBuZXcgRChuLHIpfWludGVyc2VjdHNTdHJpY3QodCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmdC5zdGFydExpbmVOdW1iZXI8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfW92ZXJsYXBPclRvdWNoKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZ0LnN0YXJ0TGluZU51bWJlcjw9dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWVxdWFscyh0KXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXRvSW5jbHVzaXZlUmFuZ2UoKXtyZXR1cm4gdGhpcy5pc0VtcHR5P251bGw6bmV3IFAodGhpcy5zdGFydExpbmVOdW1iZXIsMSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUil9dG9FeGNsdXNpdmVSYW5nZSgpe3JldHVybiBuZXcgUCh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKX1tYXBUb0xpbmVBcnJheSh0KXtjb25zdCBuPVtdO2ZvcihsZXQgcj10aGlzLnN0YXJ0TGluZU51bWJlcjtyPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtyKyspbi5wdXNoKHQocikpO3JldHVybiBufWZvckVhY2godCl7Zm9yKGxldCBuPXRoaXMuc3RhcnRMaW5lTnVtYmVyO248dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO24rKyl0KG4pfXNlcmlhbGl6ZSgpe3JldHVyblt0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmVdfWluY2x1ZGVzKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9dCYmdDx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9dG9PZmZzZXRSYW5nZSgpe3JldHVybiBuZXcgVih0aGlzLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xKX19Y2xhc3MgdWV7Y29uc3RydWN0b3IodD1bXSl7dGhpcy5fbm9ybWFsaXplZFJhbmdlcz10fWdldCByYW5nZXMoKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplZFJhbmdlc31hZGRSYW5nZSh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IG49enQodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxzPT5zLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PXQuc3RhcnRMaW5lTnVtYmVyKSxyPUdlKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMscz0+cy5zdGFydExpbmVOdW1iZXI8PXQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkrMTtpZihuPT09cil0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLnNwbGljZShuLDAsdCk7ZWxzZSBpZihuPT09ci0xKXtjb25zdCBzPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl07dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tuXT1zLmpvaW4odCl9ZWxzZXtjb25zdCBzPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl0uam9pbih0aGlzLl9ub3JtYWxpemVkUmFuZ2VzW3ItMV0pLmpvaW4odCk7dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5zcGxpY2UobixyLW4scyl9fWNvbnRhaW5zKHQpe2NvbnN0IG49VmUodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxyPT5yLnN0YXJ0TGluZU51bWJlcjw9dCk7cmV0dXJuISFuJiZuLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+dH1pbnRlcnNlY3RzKHQpe2NvbnN0IG49VmUodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxyPT5yLnN0YXJ0TGluZU51bWJlcjx0LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO3JldHVybiEhbiYmbi5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPnQuc3RhcnRMaW5lTnVtYmVyfWdldFVuaW9uKHQpe2lmKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPT09MClyZXR1cm4gdDtpZih0Ll9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aD09PTApcmV0dXJuIHRoaXM7Y29uc3Qgbj1bXTtsZXQgcj0wLHM9MCxpPW51bGw7Zm9yKDtyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RofHxzPHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoOyl7bGV0IGw9bnVsbDtpZihyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoJiZzPHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoKXtjb25zdCBvPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0sdT10Ll9ub3JtYWxpemVkUmFuZ2VzW3NdO28uc3RhcnRMaW5lTnVtYmVyPHUuc3RhcnRMaW5lTnVtYmVyPyhsPW8scisrKToobD11LHMrKyl9ZWxzZSByPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPyhsPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0scisrKToobD10Ll9ub3JtYWxpemVkUmFuZ2VzW3NdLHMrKyk7aT09PW51bGw/aT1sOmkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49bC5zdGFydExpbmVOdW1iZXI/aT1uZXcgRChpLnN0YXJ0TGluZU51bWJlcixNYXRoLm1heChpLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSk6KG4ucHVzaChpKSxpPWwpfXJldHVybiBpIT09bnVsbCYmbi5wdXNoKGkpLG5ldyB1ZShuKX1zdWJ0cmFjdEZyb20odCl7Y29uc3Qgbj16dCh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLGw9PmwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49dC5zdGFydExpbmVOdW1iZXIpLHI9R2UodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxsPT5sLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSsxO2lmKG49PT1yKXJldHVybiBuZXcgdWUoW3RdKTtjb25zdCBzPVtdO2xldCBpPXQuc3RhcnRMaW5lTnVtYmVyO2ZvcihsZXQgbD1uO2w8cjtsKyspe2NvbnN0IG89dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tsXTtvLnN0YXJ0TGluZU51bWJlcj5pJiZzLnB1c2gobmV3IEQoaSxvLnN0YXJ0TGluZU51bWJlcikpLGk9by5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXJldHVybiBpPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmcy5wdXNoKG5ldyBEKGksdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSksbmV3IHVlKHMpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubWFwKHQ9PnQudG9TdHJpbmcoKSkuam9pbigiLCAiKX1nZXRJbnRlcnNlY3Rpb24odCl7Y29uc3Qgbj1bXTtsZXQgcj0wLHM9MDtmb3IoO3I8dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGgmJnM8dC5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg7KXtjb25zdCBpPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0sbD10Ll9ub3JtYWxpemVkUmFuZ2VzW3NdLG89aS5pbnRlcnNlY3QobCk7byYmIW8uaXNFbXB0eSYmbi5wdXNoKG8pLGkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU/cisrOnMrK31yZXR1cm4gbmV3IHVlKG4pfWdldFdpdGhEZWx0YSh0KXtyZXR1cm4gbmV3IHVlKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubWFwKG49Pm4uZGVsdGEodCkpKX19Y2xhc3MgbGV7c3RhdGljIGludmVyc2UodCxuLHIpe2NvbnN0IHM9W107bGV0IGk9MSxsPTE7Zm9yKGNvbnN0IHUgb2YgdCl7Y29uc3QgYz1uZXcgbGUobmV3IEQoaSx1Lm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciksbmV3IEQobCx1Lm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpO2MubW9kaWZpZWQuaXNFbXB0eXx8cy5wdXNoKGMpLGk9dS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGw9dS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWNvbnN0IG89bmV3IGxlKG5ldyBEKGksbisxKSxuZXcgRChsLHIrMSkpO3JldHVybiBvLm1vZGlmaWVkLmlzRW1wdHl8fHMucHVzaChvKSxzfXN0YXRpYyBjbGlwKHQsbixyKXtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IGw9aS5vcmlnaW5hbC5pbnRlcnNlY3Qobiksbz1pLm1vZGlmaWVkLmludGVyc2VjdChyKTtsJiYhbC5pc0VtcHR5JiZvJiYhby5pc0VtcHR5JiZzLnB1c2gobmV3IGxlKGwsbykpfXJldHVybiBzfWNvbnN0cnVjdG9yKHQsbil7dGhpcy5vcmlnaW5hbD10LHRoaXMubW9kaWZpZWQ9bn10b1N0cmluZygpe3JldHVybmB7JHt0aGlzLm9yaWdpbmFsLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWQudG9TdHJpbmcoKX19YH1mbGlwKCl7cmV0dXJuIG5ldyBsZSh0aGlzLm1vZGlmaWVkLHRoaXMub3JpZ2luYWwpfWpvaW4odCl7cmV0dXJuIG5ldyBsZSh0aGlzLm9yaWdpbmFsLmpvaW4odC5vcmlnaW5hbCksdGhpcy5tb2RpZmllZC5qb2luKHQubW9kaWZpZWQpKX19Y2xhc3MgaGUgZXh0ZW5kcyBsZXtzdGF0aWMgZnJvbVJhbmdlTWFwcGluZ3ModCl7Y29uc3Qgbj1ELmpvaW4odC5tYXAocz0+RC5mcm9tUmFuZ2VJbmNsdXNpdmUocy5vcmlnaW5hbFJhbmdlKSkpLHI9RC5qb2luKHQubWFwKHM9PkQuZnJvbVJhbmdlSW5jbHVzaXZlKHMubW9kaWZpZWRSYW5nZSkpKTtyZXR1cm4gbmV3IGhlKG4scix0KX1jb25zdHJ1Y3Rvcih0LG4scil7c3VwZXIodCxuKSx0aGlzLmlubmVyQ2hhbmdlcz1yfWZsaXAoKXt2YXIgdDtyZXR1cm4gbmV3IGhlKHRoaXMubW9kaWZpZWQsdGhpcy5vcmlnaW5hbCwodD10aGlzLmlubmVyQ2hhbmdlcyk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0Lm1hcChuPT5uLmZsaXAoKSkpfXdpdGhJbm5lckNoYW5nZXNGcm9tTGluZVJhbmdlcygpe3JldHVybiBuZXcgaGUodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLFtuZXcgQmUodGhpcy5vcmlnaW5hbC50b0V4Y2x1c2l2ZVJhbmdlKCksdGhpcy5tb2RpZmllZC50b0V4Y2x1c2l2ZVJhbmdlKCkpXSl9fWNsYXNzIEJle2NvbnN0cnVjdG9yKHQsbil7dGhpcy5vcmlnaW5hbFJhbmdlPXQsdGhpcy5tb2RpZmllZFJhbmdlPW59dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbFJhbmdlLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWRSYW5nZS50b1N0cmluZygpfX1gfWZsaXAoKXtyZXR1cm4gbmV3IEJlKHRoaXMubW9kaWZpZWRSYW5nZSx0aGlzLm9yaWdpbmFsUmFuZ2UpfX1jb25zdCBVaT0zO2NsYXNzIEhpe2NvbXB1dGVEaWZmKHQsbixyKXt2YXIgcztjb25zdCBsPW5ldyAkaSh0LG4se21heENvbXB1dGF0aW9uVGltZTpyLm1heENvbXB1dGF0aW9uVGltZU1zLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOnIuaWdub3JlVHJpbVdoaXRlc3BhY2Usc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITB9KS5jb21wdXRlRGlmZigpLG89W107bGV0IHU9bnVsbDtmb3IoY29uc3QgYyBvZiBsLmNoYW5nZXMpe2xldCBoO2Mub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MD9oPW5ldyBEKGMub3JpZ2luYWxTdGFydExpbmVOdW1iZXIrMSxjLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyKzEpOmg9bmV3IEQoYy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcixjLm9yaWdpbmFsRW5kTGluZU51bWJlcisxKTtsZXQgZjtjLm1vZGlmaWVkRW5kTGluZU51bWJlcj09PTA/Zj1uZXcgRChjLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyKzEsYy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcisxKTpmPW5ldyBEKGMubW9kaWZpZWRTdGFydExpbmVOdW1iZXIsYy5tb2RpZmllZEVuZExpbmVOdW1iZXIrMSk7bGV0IGQ9bmV3IGhlKGgsZiwocz1jLmNoYXJDaGFuZ2VzKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMubWFwKG09Pm5ldyBCZShuZXcgUChtLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyLG0ub3JpZ2luYWxTdGFydENvbHVtbixtLm9yaWdpbmFsRW5kTGluZU51bWJlcixtLm9yaWdpbmFsRW5kQ29sdW1uKSxuZXcgUChtLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLG0ubW9kaWZpZWRTdGFydENvbHVtbixtLm1vZGlmaWVkRW5kTGluZU51bWJlcixtLm1vZGlmaWVkRW5kQ29sdW1uKSkpKTt1JiYodS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09ZC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXJ8fHUub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWQub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSYmKGQ9bmV3IGhlKHUub3JpZ2luYWwuam9pbihkLm9yaWdpbmFsKSx1Lm1vZGlmaWVkLmpvaW4oZC5tb2RpZmllZCksdS5pbm5lckNoYW5nZXMmJmQuaW5uZXJDaGFuZ2VzP3UuaW5uZXJDaGFuZ2VzLmNvbmNhdChkLmlubmVyQ2hhbmdlcyk6dm9pZCAwKSxvLnBvcCgpKSxvLnB1c2goZCksdT1kfXJldHVybiBodCgoKT0+QXIobywoYyxoKT0+aC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItYy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09aC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItYy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZjLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8aC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXImJmMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxoLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpLG5ldyBmdChvLFtdLGwucXVpdEVhcmx5KX19ZnVuY3Rpb24gRXIoZSx0LG4scil7cmV0dXJuIG5ldyBnZShlLHQsbikuQ29tcHV0ZURpZmYocil9bGV0IE1yPWNsYXNze2NvbnN0cnVjdG9yKHQpe2NvbnN0IG49W10scj1bXTtmb3IobGV0IHM9MCxpPXQubGVuZ3RoO3M8aTtzKyspbltzXT0kdCh0W3NdLDEpLHJbc109T3QodFtzXSwxKTt0aGlzLmxpbmVzPXQsdGhpcy5fc3RhcnRDb2x1bW5zPW4sdGhpcy5fZW5kQ29sdW1ucz1yfWdldEVsZW1lbnRzKCl7Y29uc3QgdD1bXTtmb3IobGV0IG49MCxyPXRoaXMubGluZXMubGVuZ3RoO248cjtuKyspdFtuXT10aGlzLmxpbmVzW25dLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbbl0tMSx0aGlzLl9lbmRDb2x1bW5zW25dLTEpO3JldHVybiB0fWdldFN0cmljdEVsZW1lbnQodCl7cmV0dXJuIHRoaXMubGluZXNbdF19Z2V0U3RhcnRMaW5lTnVtYmVyKHQpe3JldHVybiB0KzF9Z2V0RW5kTGluZU51bWJlcih0KXtyZXR1cm4gdCsxfWNyZWF0ZUNoYXJTZXF1ZW5jZSh0LG4scil7Y29uc3Qgcz1bXSxpPVtdLGw9W107bGV0IG89MDtmb3IobGV0IHU9bjt1PD1yO3UrKyl7Y29uc3QgYz10aGlzLmxpbmVzW3VdLGg9dD90aGlzLl9zdGFydENvbHVtbnNbdV06MSxmPXQ/dGhpcy5fZW5kQ29sdW1uc1t1XTpjLmxlbmd0aCsxO2ZvcihsZXQgZD1oO2Q8ZjtkKyspc1tvXT1jLmNoYXJDb2RlQXQoZC0xKSxpW29dPXUrMSxsW29dPWQsbysrOyF0JiZ1PHImJihzW29dPTEwLGlbb109dSsxLGxbb109Yy5sZW5ndGgrMSxvKyspfXJldHVybiBuZXcgV2kocyxpLGwpfX07Y2xhc3MgV2l7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuX2NoYXJDb2Rlcz10LHRoaXMuX2xpbmVOdW1iZXJzPW4sdGhpcy5fY29sdW1ucz1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKHQsbik9Pih0PT09MTA/IlxcbiI6U3RyaW5nLmZyb21DaGFyQ29kZSh0KSkrYC0oJHt0aGlzLl9saW5lTnVtYmVyc1tuXX0sJHt0aGlzLl9jb2x1bW5zW25dfSlgKS5qb2luKCIsICIpKyJdIn1fYXNzZXJ0SW5kZXgodCxuKXtpZih0PDB8fHQ+PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBpbmRleCIpfWdldEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX2NoYXJDb2Rlc31nZXRTdGFydExpbmVOdW1iZXIodCl7cmV0dXJuIHQ+MCYmdD09PXRoaXMuX2xpbmVOdW1iZXJzLmxlbmd0aD90aGlzLmdldEVuZExpbmVOdW1iZXIodC0xKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9saW5lTnVtYmVycyksdGhpcy5fbGluZU51bWJlcnNbdF0pfWdldEVuZExpbmVOdW1iZXIodCl7cmV0dXJuIHQ9PT0tMT90aGlzLmdldFN0YXJ0TGluZU51bWJlcih0KzEpOih0aGlzLl9hc3NlcnRJbmRleCh0LHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9jaGFyQ29kZXNbdF09PT0xMD90aGlzLl9saW5lTnVtYmVyc1t0XSsxOnRoaXMuX2xpbmVOdW1iZXJzW3RdKX1nZXRTdGFydENvbHVtbih0KXtyZXR1cm4gdD4wJiZ0PT09dGhpcy5fY29sdW1ucy5sZW5ndGg/dGhpcy5nZXRFbmRDb2x1bW4odC0xKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9jb2x1bW5zKSx0aGlzLl9jb2x1bW5zW3RdKX1nZXRFbmRDb2x1bW4odCl7cmV0dXJuIHQ9PT0tMT90aGlzLmdldFN0YXJ0Q29sdW1uKHQrMSk6KHRoaXMuX2Fzc2VydEluZGV4KHQsdGhpcy5fY29sdW1ucyksdGhpcy5fY2hhckNvZGVzW3RdPT09MTA/MTp0aGlzLl9jb2x1bW5zW3RdKzEpfX1jbGFzcyBxZXtjb25zdHJ1Y3Rvcih0LG4scixzLGksbCxvLHUpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9dCx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49bix0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1yLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cyx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWwsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXV9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKHQsbixyKXtjb25zdCBzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksaT1uLmdldFN0YXJ0Q29sdW1uKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSksbz1uLmdldEVuZENvbHVtbih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSx1PXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksYz1yLmdldFN0YXJ0Q29sdW1uKHQubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSksZj1yLmdldEVuZENvbHVtbih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IHFlKHMsaSxsLG8sdSxjLGgsZil9fWZ1bmN0aW9uIHppKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IHQ9W2VbMF1dO2xldCBuPXRbMF07Zm9yKGxldCByPTEscz1lLmxlbmd0aDtyPHM7cisrKXtjb25zdCBpPWVbcl0sbD1pLm9yaWdpbmFsU3RhcnQtKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSxvPWkubW9kaWZpZWRTdGFydC0obi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKGwsbyk8VWk/KG4ub3JpZ2luYWxMZW5ndGg9aS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGgtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KToodC5wdXNoKGkpLG49aSl9cmV0dXJuIHR9Y2xhc3MgUWV7Y29uc3RydWN0b3IodCxuLHIscyxpKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9bix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXIsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cyx0aGlzLmNoYXJDaGFuZ2VzPWl9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KHQsbixyLHMsaSxsLG8pe2xldCB1LGMsaCxmLGQ7aWYobi5vcmlnaW5hbExlbmd0aD09PTA/KHU9ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KS0xLGM9MCk6KHU9ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KSxjPXIuZ2V0RW5kTGluZU51bWJlcihuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSksbi5tb2RpZmllZExlbmd0aD09PTA/KGg9cy5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KS0xLGY9MCk6KGg9cy5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KSxmPXMuZ2V0RW5kTGluZU51bWJlcihuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aC0xKSksbCYmbi5vcmlnaW5hbExlbmd0aD4wJiZuLm9yaWdpbmFsTGVuZ3RoPDIwJiZuLm1vZGlmaWVkTGVuZ3RoPjAmJm4ubW9kaWZpZWRMZW5ndGg8MjAmJmkoKSl7Y29uc3QgbT1yLmNyZWF0ZUNoYXJTZXF1ZW5jZSh0LG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSxnPXMuY3JlYXRlQ2hhclNlcXVlbmNlKHQsbi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLTEpO2lmKG0uZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCYmZy5nZXRFbGVtZW50cygpLmxlbmd0aD4wKXtsZXQgeD1FcihtLGcsaSwhMCkuY2hhbmdlcztvJiYoeD16aSh4KSksZD1bXTtmb3IobGV0IHY9MCxOPXgubGVuZ3RoO3Y8Tjt2KyspZC5wdXNoKHFlLmNyZWF0ZUZyb21EaWZmQ2hhbmdlKHhbdl0sbSxnKSl9fXJldHVybiBuZXcgUWUodSxjLGgsZixkKX19Y2xhc3MgJGl7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9dCx0aGlzLm1vZGlmaWVkTGluZXM9bix0aGlzLm9yaWdpbmFsPW5ldyBNcih0KSx0aGlzLm1vZGlmaWVkPW5ldyBNcihuKSx0aGlzLmNvbnRpbnVlTGluZURpZmY9a3Ioci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1rcihyLm1heENvbXB1dGF0aW9uVGltZT09PTA/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKHRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoPT09MSYmdGhpcy5vcmlnaW5hbC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aD09PTEmJnRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoPT09MD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6dm9pZCAwfV19O2lmKHRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoPT09MSYmdGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6dm9pZCAwfV19O2NvbnN0IHQ9RXIodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxuPXQuY2hhbmdlcyxyPXQucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IG89W107Zm9yKGxldCB1PTAsYz1uLmxlbmd0aDt1PGM7dSsrKW8ucHVzaChRZS5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG5bdV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczpvfX1jb25zdCBzPVtdO2xldCBpPTAsbD0wO2ZvcihsZXQgbz0tMSx1PW4ubGVuZ3RoO288dTtvKyspe2NvbnN0IGM9bysxPHU/bltvKzFdOm51bGwsaD1jP2Mub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLGY9Yz9jLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtmb3IoO2k8aCYmbDxmOyl7Y29uc3QgZD10aGlzLm9yaWdpbmFsTGluZXNbaV0sbT10aGlzLm1vZGlmaWVkTGluZXNbbF07aWYoZCE9PW0pe3tsZXQgZz0kdChkLDEpLHg9JHQobSwxKTtmb3IoO2c+MSYmeD4xOyl7Y29uc3Qgdj1kLmNoYXJDb2RlQXQoZy0yKSxOPW0uY2hhckNvZGVBdCh4LTIpO2lmKHYhPT1OKWJyZWFrO2ctLSx4LS19KGc+MXx8eD4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShzLGkrMSwxLGcsbCsxLDEseCl9e2xldCBnPU90KGQsMSkseD1PdChtLDEpO2NvbnN0IHY9ZC5sZW5ndGgrMSxOPW0ubGVuZ3RoKzE7Zm9yKDtnPHYmJng8Tjspe2NvbnN0IFM9ZC5jaGFyQ29kZUF0KGctMSksXz1kLmNoYXJDb2RlQXQoeC0xKTtpZihTIT09XylicmVhaztnKysseCsrfShnPHZ8fHg8TikmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UocyxpKzEsZyx2LGwrMSx4LE4pfX1pKyssbCsrfWMmJihzLnB1c2goUWUuY3JlYXRlRnJvbURpZmZSZXN1bHQodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSxjLHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlQ2hhckRpZmYsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzKSksaSs9Yy5vcmlnaW5hbExlbmd0aCxsKz1jLm1vZGlmaWVkTGVuZ3RoKX1yZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczpzfX1fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixzLGksbCxvKXtpZih0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixzLGksbCxvKSlyZXR1cm47bGV0IHU7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJih1PVtuZXcgcWUobixyLG4scyxpLGwsaSxvKV0pLHQucHVzaChuZXcgUWUobixuLGksaSx1KSl9X21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLHMsaSxsLG8pe2NvbnN0IHU9dC5sZW5ndGg7aWYodT09PTApcmV0dXJuITE7Y29uc3QgYz10W3UtMV07cmV0dXJuIGMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MHx8Yy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT0wPyExOmMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09biYmYy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT1pPyh0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBxZShuLHIsbixzLGksbCxpLG8pKSwhMCk6Yy5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PW4mJmMubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pPyhjLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLGMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPWksdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMucHVzaChuZXcgcWUobixyLG4scyxpLGwsaSxvKSksITApOiExfX1mdW5jdGlvbiAkdChlLHQpe2NvbnN0IG49dnMoZSk7cmV0dXJuIG49PT0tMT90Om4rMX1mdW5jdGlvbiBPdChlLHQpe2NvbnN0IG49d3MoZSk7cmV0dXJuIG49PT0tMT90Om4rMn1mdW5jdGlvbiBrcihlKXtpZihlPT09MClyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1jbGFzcyBmZXtzdGF0aWMgdHJpdmlhbCh0LG4pe3JldHVybiBuZXcgZmUoW25ldyB6KFYub2ZMZW5ndGgodC5sZW5ndGgpLFYub2ZMZW5ndGgobi5sZW5ndGgpKV0sITEpfXN0YXRpYyB0cml2aWFsVGltZWRPdXQodCxuKXtyZXR1cm4gbmV3IGZlKFtuZXcgeihWLm9mTGVuZ3RoKHQubGVuZ3RoKSxWLm9mTGVuZ3RoKG4ubGVuZ3RoKSldLCEwKX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZGlmZnM9dCx0aGlzLmhpdFRpbWVvdXQ9bn19Y2xhc3MgentzdGF0aWMgaW52ZXJ0KHQsbil7Y29uc3Qgcj1bXTtyZXR1cm4gbmkodCwocyxpKT0+e3IucHVzaCh6LmZyb21PZmZzZXRQYWlycyhzP3MuZ2V0RW5kRXhjbHVzaXZlcygpOm5lLnplcm8saT9pLmdldFN0YXJ0cygpOm5ldyBuZShuLChzP3Muc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1zLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU6MCkrbikpKX0pLHJ9c3RhdGljIGZyb21PZmZzZXRQYWlycyh0LG4pe3JldHVybiBuZXcgeihuZXcgVih0Lm9mZnNldDEsbi5vZmZzZXQxKSxuZXcgVih0Lm9mZnNldDIsbi5vZmZzZXQyKSl9Y29uc3RydWN0b3IodCxuKXt0aGlzLnNlcTFSYW5nZT10LHRoaXMuc2VxMlJhbmdlPW59c3dhcCgpe3JldHVybiBuZXcgeih0aGlzLnNlcTJSYW5nZSx0aGlzLnNlcTFSYW5nZSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnNlcTFSYW5nZX0gPC0+ICR7dGhpcy5zZXEyUmFuZ2V9YH1qb2luKHQpe3JldHVybiBuZXcgeih0aGlzLnNlcTFSYW5nZS5qb2luKHQuc2VxMVJhbmdlKSx0aGlzLnNlcTJSYW5nZS5qb2luKHQuc2VxMlJhbmdlKSl9ZGVsdGEodCl7cmV0dXJuIHQ9PT0wP3RoaXM6bmV3IHoodGhpcy5zZXExUmFuZ2UuZGVsdGEodCksdGhpcy5zZXEyUmFuZ2UuZGVsdGEodCkpfWRlbHRhU3RhcnQodCl7cmV0dXJuIHQ9PT0wP3RoaXM6bmV3IHoodGhpcy5zZXExUmFuZ2UuZGVsdGFTdGFydCh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YVN0YXJ0KHQpKX1kZWx0YUVuZCh0KXtyZXR1cm4gdD09PTA/dGhpczpuZXcgeih0aGlzLnNlcTFSYW5nZS5kZWx0YUVuZCh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YUVuZCh0KSl9aW50ZXJzZWN0KHQpe2NvbnN0IG49dGhpcy5zZXExUmFuZ2UuaW50ZXJzZWN0KHQuc2VxMVJhbmdlKSxyPXRoaXMuc2VxMlJhbmdlLmludGVyc2VjdCh0LnNlcTJSYW5nZSk7aWYoISghbnx8IXIpKXJldHVybiBuZXcgeihuLHIpfWdldFN0YXJ0cygpe3JldHVybiBuZXcgbmUodGhpcy5zZXExUmFuZ2Uuc3RhcnQsdGhpcy5zZXEyUmFuZ2Uuc3RhcnQpfWdldEVuZEV4Y2x1c2l2ZXMoKXtyZXR1cm4gbmV3IG5lKHRoaXMuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSx0aGlzLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUpfX1jbGFzcyBuZXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMub2Zmc2V0MT10LHRoaXMub2Zmc2V0Mj1ufXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5vZmZzZXQxfSA8LT4gJHt0aGlzLm9mZnNldDJ9YH1kZWx0YSh0KXtyZXR1cm4gdD09PTA/dGhpczpuZXcgbmUodGhpcy5vZmZzZXQxK3QsdGhpcy5vZmZzZXQyK3QpfWVxdWFscyh0KXtyZXR1cm4gdGhpcy5vZmZzZXQxPT09dC5vZmZzZXQxJiZ0aGlzLm9mZnNldDI9PT10Lm9mZnNldDJ9fW5lLnplcm89bmV3IG5lKDAsMCksbmUubWF4PW5ldyBuZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7Y2xhc3MgWGV7aXNWYWxpZCgpe3JldHVybiEwfX1YZS5pbnN0YW5jZT1uZXcgWGU7Y2xhc3MgT2l7Y29uc3RydWN0b3IodCl7aWYodGhpcy50aW1lb3V0PXQsdGhpcy5zdGFydFRpbWU9RGF0ZS5ub3coKSx0aGlzLnZhbGlkPSEwLHQ8PTApdGhyb3cgbmV3IGNlKCJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUiKX1pc1ZhbGlkKCl7aWYoIShEYXRlLm5vdygpLXRoaXMuc3RhcnRUaW1lPHRoaXMudGltZW91dCkmJnRoaXMudmFsaWQpe3RoaXMudmFsaWQ9ITE7ZGVidWdnZXJ9cmV0dXJuIHRoaXMudmFsaWR9fWNsYXNzIEd0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PW4sdGhpcy5hcnJheT1bXSx0aGlzLmFycmF5PW5ldyBBcnJheSh0Km4pfWdldCh0LG4pe3JldHVybiB0aGlzLmFycmF5W3Qrbip0aGlzLndpZHRoXX1zZXQodCxuLHIpe3RoaXMuYXJyYXlbdCtuKnRoaXMud2lkdGhdPXJ9fWZ1bmN0aW9uIGp0KGUpe3JldHVybiBlPT09MzJ8fGU9PT05fWNsYXNzIElle3N0YXRpYyBnZXRLZXkodCl7bGV0IG49dGhpcy5jaHJLZXlzLmdldCh0KTtyZXR1cm4gbj09PXZvaWQgMCYmKG49dGhpcy5jaHJLZXlzLnNpemUsdGhpcy5jaHJLZXlzLnNldCh0LG4pKSxufWNvbnN0cnVjdG9yKHQsbixyKXt0aGlzLnJhbmdlPXQsdGhpcy5saW5lcz1uLHRoaXMuc291cmNlPXIsdGhpcy5oaXN0b2dyYW09W107bGV0IHM9MDtmb3IobGV0IGk9dC5zdGFydExpbmVOdW1iZXItMTtpPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xO2krKyl7Y29uc3QgbD1uW2ldO2ZvcihsZXQgdT0wO3U8bC5sZW5ndGg7dSsrKXtzKys7Y29uc3QgYz1sW3VdLGg9SWUuZ2V0S2V5KGMpO3RoaXMuaGlzdG9ncmFtW2hdPSh0aGlzLmhpc3RvZ3JhbVtoXXx8MCkrMX1zKys7Y29uc3Qgbz1JZS5nZXRLZXkoYApgKTt0aGlzLmhpc3RvZ3JhbVtvXT0odGhpcy5oaXN0b2dyYW1bb118fDApKzF9dGhpcy50b3RhbENvdW50PXN9Y29tcHV0ZVNpbWlsYXJpdHkodCl7dmFyIG4scjtsZXQgcz0wO2NvbnN0IGk9TWF0aC5tYXgodGhpcy5oaXN0b2dyYW0ubGVuZ3RoLHQuaGlzdG9ncmFtLmxlbmd0aCk7Zm9yKGxldCBsPTA7bDxpO2wrKylzKz1NYXRoLmFicygoKG49dGhpcy5oaXN0b2dyYW1bbF0pIT09bnVsbCYmbiE9PXZvaWQgMD9uOjApLSgocj10Lmhpc3RvZ3JhbVtsXSkhPT1udWxsJiZyIT09dm9pZCAwP3I6MCkpO3JldHVybiAxLXMvKHRoaXMudG90YWxDb3VudCt0LnRvdGFsQ291bnQpfX1JZS5jaHJLZXlzPW5ldyBNYXA7Y2xhc3MgR2l7Y29tcHV0ZSh0LG4scj1YZS5pbnN0YW5jZSxzKXtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gZmUudHJpdmlhbCh0LG4pO2NvbnN0IGk9bmV3IEd0KHQubGVuZ3RoLG4ubGVuZ3RoKSxsPW5ldyBHdCh0Lmxlbmd0aCxuLmxlbmd0aCksbz1uZXcgR3QodC5sZW5ndGgsbi5sZW5ndGgpO2ZvcihsZXQgZz0wO2c8dC5sZW5ndGg7ZysrKWZvcihsZXQgeD0wO3g8bi5sZW5ndGg7eCsrKXtpZighci5pc1ZhbGlkKCkpcmV0dXJuIGZlLnRyaXZpYWxUaW1lZE91dCh0LG4pO2NvbnN0IHY9Zz09PTA/MDppLmdldChnLTEseCksTj14PT09MD8wOmkuZ2V0KGcseC0xKTtsZXQgUzt0LmdldEVsZW1lbnQoZyk9PT1uLmdldEVsZW1lbnQoeCk/KGc9PT0wfHx4PT09MD9TPTA6Uz1pLmdldChnLTEseC0xKSxnPjAmJng+MCYmbC5nZXQoZy0xLHgtMSk9PT0zJiYoUys9by5nZXQoZy0xLHgtMSkpLFMrPXM/cyhnLHgpOjEpOlM9LTE7Y29uc3QgXz1NYXRoLm1heCh2LE4sUyk7aWYoXz09PVMpe2NvbnN0IEw9Zz4wJiZ4PjA/by5nZXQoZy0xLHgtMSk6MDtvLnNldChnLHgsTCsxKSxsLnNldChnLHgsMyl9ZWxzZSBfPT09dj8oby5zZXQoZyx4LDApLGwuc2V0KGcseCwxKSk6Xz09PU4mJihvLnNldChnLHgsMCksbC5zZXQoZyx4LDIpKTtpLnNldChnLHgsXyl9Y29uc3QgdT1bXTtsZXQgYz10Lmxlbmd0aCxoPW4ubGVuZ3RoO2Z1bmN0aW9uIGYoZyx4KXsoZysxIT09Y3x8eCsxIT09aCkmJnUucHVzaChuZXcgeihuZXcgVihnKzEsYyksbmV3IFYoeCsxLGgpKSksYz1nLGg9eH1sZXQgZD10Lmxlbmd0aC0xLG09bi5sZW5ndGgtMTtmb3IoO2Q+PTAmJm0+PTA7KWwuZ2V0KGQsbSk9PT0zPyhmKGQsbSksZC0tLG0tLSk6bC5nZXQoZCxtKT09PTE/ZC0tOm0tLTtyZXR1cm4gZigtMSwtMSksdS5yZXZlcnNlKCksbmV3IGZlKHUsITEpfX1jbGFzcyBGcntjb21wdXRlKHQsbixyPVhlLmluc3RhbmNlKXtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gZmUudHJpdmlhbCh0LG4pO2NvbnN0IHM9dCxpPW47ZnVuY3Rpb24gbCh4LHYpe2Zvcig7eDxzLmxlbmd0aCYmdjxpLmxlbmd0aCYmcy5nZXRFbGVtZW50KHgpPT09aS5nZXRFbGVtZW50KHYpOyl4KyssdisrO3JldHVybiB4fWxldCBvPTA7Y29uc3QgdT1uZXcgamk7dS5zZXQoMCxsKDAsMCkpO2NvbnN0IGM9bmV3IFFpO2Muc2V0KDAsdS5nZXQoMCk9PT0wP251bGw6bmV3IFByKG51bGwsMCwwLHUuZ2V0KDApKSk7bGV0IGg9MDtlOmZvcig7Oyl7aWYobysrLCFyLmlzVmFsaWQoKSlyZXR1cm4gZmUudHJpdmlhbFRpbWVkT3V0KHMsaSk7Y29uc3QgeD0tTWF0aC5taW4obyxpLmxlbmd0aCtvJTIpLHY9TWF0aC5taW4obyxzLmxlbmd0aCtvJTIpO2ZvcihoPXg7aDw9djtoKz0yKXtjb25zdCBOPWg9PT12Py0xOnUuZ2V0KGgrMSksUz1oPT09eD8tMTp1LmdldChoLTEpKzEsXz1NYXRoLm1pbihNYXRoLm1heChOLFMpLHMubGVuZ3RoKSxMPV8taDtpZihfPnMubGVuZ3RofHxMPmkubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHA9bChfLEwpO3Uuc2V0KGgscCk7Y29uc3QgUj1fPT09Tj9jLmdldChoKzEpOmMuZ2V0KGgtMSk7aWYoYy5zZXQoaCxwIT09Xz9uZXcgUHIoUixfLEwscC1fKTpSKSx1LmdldChoKT09PXMubGVuZ3RoJiZ1LmdldChoKS1oPT09aS5sZW5ndGgpYnJlYWsgZX19bGV0IGY9Yy5nZXQoaCk7Y29uc3QgZD1bXTtsZXQgbT1zLmxlbmd0aCxnPWkubGVuZ3RoO2Zvcig7Oyl7Y29uc3QgeD1mP2YueCtmLmxlbmd0aDowLHY9Zj9mLnkrZi5sZW5ndGg6MDtpZigoeCE9PW18fHYhPT1nKSYmZC5wdXNoKG5ldyB6KG5ldyBWKHgsbSksbmV3IFYodixnKSkpLCFmKWJyZWFrO209Zi54LGc9Zi55LGY9Zi5wcmV2fXJldHVybiBkLnJldmVyc2UoKSxuZXcgZmUoZCwhMSl9fWNsYXNzIFBye2NvbnN0cnVjdG9yKHQsbixyLHMpe3RoaXMucHJldj10LHRoaXMueD1uLHRoaXMueT1yLHRoaXMubGVuZ3RoPXN9fWNsYXNzIGppe2NvbnN0cnVjdG9yKCl7dGhpcy5wb3NpdGl2ZUFycj1uZXcgSW50MzJBcnJheSgxMCksdGhpcy5uZWdhdGl2ZUFycj1uZXcgSW50MzJBcnJheSgxMCl9Z2V0KHQpe3JldHVybiB0PDA/KHQ9LXQtMSx0aGlzLm5lZ2F0aXZlQXJyW3RdKTp0aGlzLnBvc2l0aXZlQXJyW3RdfXNldCh0LG4pe2lmKHQ8MCl7aWYodD0tdC0xLHQ+PXRoaXMubmVnYXRpdmVBcnIubGVuZ3RoKXtjb25zdCByPXRoaXMubmVnYXRpdmVBcnI7dGhpcy5uZWdhdGl2ZUFycj1uZXcgSW50MzJBcnJheShyLmxlbmd0aCoyKSx0aGlzLm5lZ2F0aXZlQXJyLnNldChyKX10aGlzLm5lZ2F0aXZlQXJyW3RdPW59ZWxzZXtpZih0Pj10aGlzLnBvc2l0aXZlQXJyLmxlbmd0aCl7Y29uc3Qgcj10aGlzLnBvc2l0aXZlQXJyO3RoaXMucG9zaXRpdmVBcnI9bmV3IEludDMyQXJyYXkoci5sZW5ndGgqMiksdGhpcy5wb3NpdGl2ZUFyci5zZXQocil9dGhpcy5wb3NpdGl2ZUFyclt0XT1ufX19Y2xhc3MgUWl7Y29uc3RydWN0b3IoKXt0aGlzLnBvc2l0aXZlQXJyPVtdLHRoaXMubmVnYXRpdmVBcnI9W119Z2V0KHQpe3JldHVybiB0PDA/KHQ9LXQtMSx0aGlzLm5lZ2F0aXZlQXJyW3RdKTp0aGlzLnBvc2l0aXZlQXJyW3RdfXNldCh0LG4pe3Q8MD8odD0tdC0xLHRoaXMubmVnYXRpdmVBcnJbdF09bik6dGhpcy5wb3NpdGl2ZUFyclt0XT1ufX1jbGFzcyBkdHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5saW5lcz10LHRoaXMuY29uc2lkZXJXaGl0ZXNwYWNlQ2hhbmdlcz1yLHRoaXMuZWxlbWVudHM9W10sdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmU9W10sdGhpcy5hZGRpdGlvbmFsT2Zmc2V0QnlMaW5lPVtdO2xldCBzPSExO24uc3RhcnQ+MCYmbi5lbmRFeGNsdXNpdmU+PXQubGVuZ3RoJiYobj1uZXcgVihuLnN0YXJ0LTEsbi5lbmRFeGNsdXNpdmUpLHM9ITApLHRoaXMubGluZVJhbmdlPW4sdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVbMF09MDtmb3IobGV0IGk9dGhpcy5saW5lUmFuZ2Uuc3RhcnQ7aTx0aGlzLmxpbmVSYW5nZS5lbmRFeGNsdXNpdmU7aSsrKXtsZXQgbD10W2ldLG89MDtpZihzKW89bC5sZW5ndGgsbD0iIixzPSExO2Vsc2UgaWYoIXIpe2NvbnN0IHU9bC50cmltU3RhcnQoKTtvPWwubGVuZ3RoLXUubGVuZ3RoLGw9dS50cmltRW5kKCl9dGhpcy5hZGRpdGlvbmFsT2Zmc2V0QnlMaW5lLnB1c2gobyk7Zm9yKGxldCB1PTA7dTxsLmxlbmd0aDt1KyspdGhpcy5lbGVtZW50cy5wdXNoKGwuY2hhckNvZGVBdCh1KSk7aTx0Lmxlbmd0aC0xJiYodGhpcy5lbGVtZW50cy5wdXNoKDEwKSx0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZVtpLXRoaXMubGluZVJhbmdlLnN0YXJ0KzFdPXRoaXMuZWxlbWVudHMubGVuZ3RoKX10aGlzLmFkZGl0aW9uYWxPZmZzZXRCeUxpbmUucHVzaCgwKX10b1N0cmluZygpe3JldHVybmBTbGljZTogIiR7dGhpcy50ZXh0fSJgfWdldCB0ZXh0KCl7cmV0dXJuIHRoaXMuZ2V0VGV4dChuZXcgVigwLHRoaXMubGVuZ3RoKSl9Z2V0VGV4dCh0KXtyZXR1cm4gdGhpcy5lbGVtZW50cy5zbGljZSh0LnN0YXJ0LHQuZW5kRXhjbHVzaXZlKS5tYXAobj0+U3RyaW5nLmZyb21DaGFyQ29kZShuKSkuam9pbigiIil9Z2V0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy5lbGVtZW50c1t0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUodCl7Y29uc3Qgbj1Ucih0PjA/dGhpcy5lbGVtZW50c1t0LTFdOi0xKSxyPVRyKHQ8dGhpcy5lbGVtZW50cy5sZW5ndGg/dGhpcy5lbGVtZW50c1t0XTotMSk7aWYobj09PTcmJnI9PT04KXJldHVybiAwO2lmKG49PT04KXJldHVybiAxNTA7bGV0IHM9MDtyZXR1cm4gbiE9PXImJihzKz0xMCxuPT09MCYmcj09PTEmJihzKz0xKSkscys9RHIobikscys9RHIociksc310cmFuc2xhdGVPZmZzZXQodCl7aWYodGhpcy5saW5lUmFuZ2UuaXNFbXB0eSlyZXR1cm4gbmV3IEoodGhpcy5saW5lUmFuZ2Uuc3RhcnQrMSwxKTtjb25zdCBuPUdlKHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lLHI9PnI8PXQpO3JldHVybiBuZXcgSih0aGlzLmxpbmVSYW5nZS5zdGFydCtuKzEsdC10aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZVtuXSt0aGlzLmFkZGl0aW9uYWxPZmZzZXRCeUxpbmVbbl0rMSl9dHJhbnNsYXRlUmFuZ2UodCl7cmV0dXJuIFAuZnJvbVBvc2l0aW9ucyh0aGlzLnRyYW5zbGF0ZU9mZnNldCh0LnN0YXJ0KSx0aGlzLnRyYW5zbGF0ZU9mZnNldCh0LmVuZEV4Y2x1c2l2ZSkpfWZpbmRXb3JkQ29udGFpbmluZyh0KXtpZih0PDB8fHQ+PXRoaXMuZWxlbWVudHMubGVuZ3RofHwhUXQodGhpcy5lbGVtZW50c1t0XSkpcmV0dXJuO2xldCBuPXQ7Zm9yKDtuPjAmJlF0KHRoaXMuZWxlbWVudHNbbi0xXSk7KW4tLTtsZXQgcj10O2Zvcig7cjx0aGlzLmVsZW1lbnRzLmxlbmd0aCYmUXQodGhpcy5lbGVtZW50c1tyXSk7KXIrKztyZXR1cm4gbmV3IFYobixyKX1jb3VudExpbmVzSW4odCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuZW5kRXhjbHVzaXZlKS5saW5lTnVtYmVyLXRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuc3RhcnQpLmxpbmVOdW1iZXJ9aXNTdHJvbmdseUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuZWxlbWVudHNbdF09PT10aGlzLmVsZW1lbnRzW25dfWV4dGVuZFRvRnVsbExpbmVzKHQpe3ZhciBuLHI7Y29uc3Qgcz0obj1WZSh0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZSxsPT5sPD10LnN0YXJ0KSkhPT1udWxsJiZuIT09dm9pZCAwP246MCxpPShyPUlpKHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lLGw9PnQuZW5kRXhjbHVzaXZlPD1sKSkhPT1udWxsJiZyIT09dm9pZCAwP3I6dGhpcy5lbGVtZW50cy5sZW5ndGg7cmV0dXJuIG5ldyBWKHMsaSl9fWZ1bmN0aW9uIFF0KGUpe3JldHVybiBlPj05NyYmZTw9MTIyfHxlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01N31jb25zdCBYaT17MDowLDE6MCwyOjAsMzoxMCw0OjIsNTozMCw2OjMsNzoxMCw4OjEwfTtmdW5jdGlvbiBEcihlKXtyZXR1cm4gWGlbZV19ZnVuY3Rpb24gVHIoZSl7cmV0dXJuIGU9PT0xMD84OmU9PT0xMz83Omp0KGUpPzY6ZT49OTcmJmU8PTEyMj8wOmU+PTY1JiZlPD05MD8xOmU+PTQ4JiZlPD01Nz8yOmU9PT0tMT8zOmU9PT00NHx8ZT09PTU5PzU6NH1mdW5jdGlvbiBKaShlLHQsbixyLHMsaSl7bGV0e21vdmVzOmwsZXhjbHVkZWRDaGFuZ2VzOm99PVppKGUsdCxuLGkpO2lmKCFpLmlzVmFsaWQoKSlyZXR1cm5bXTtjb25zdCB1PWUuZmlsdGVyKGg9PiFvLmhhcyhoKSksYz1LaSh1LHIscyx0LG4saSk7cmV0dXJuIHNpKGwsYyksbD1lMShsKSxsPWwuZmlsdGVyKGg9Pntjb25zdCBmPWgub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLnNsaWNlKHQpLm1hcChtPT5tLnRyaW0oKSk7cmV0dXJuIGYuam9pbihgCmApLmxlbmd0aD49MTUmJllpKGYsbT0+bS5sZW5ndGg+PTIpPj0yfSksbD10MShlLGwpLGx9ZnVuY3Rpb24gWWkoZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpdChyKSYmbisrO3JldHVybiBufWZ1bmN0aW9uIFppKGUsdCxuLHIpe2NvbnN0IHM9W10saT1lLmZpbHRlcih1PT51Lm1vZGlmaWVkLmlzRW1wdHkmJnUub3JpZ2luYWwubGVuZ3RoPj0zKS5tYXAodT0+bmV3IEllKHUub3JpZ2luYWwsdCx1KSksbD1uZXcgU2V0KGUuZmlsdGVyKHU9PnUub3JpZ2luYWwuaXNFbXB0eSYmdS5tb2RpZmllZC5sZW5ndGg+PTMpLm1hcCh1PT5uZXcgSWUodS5tb2RpZmllZCxuLHUpKSksbz1uZXcgU2V0O2Zvcihjb25zdCB1IG9mIGkpe2xldCBjPS0xLGg7Zm9yKGNvbnN0IGYgb2YgbCl7Y29uc3QgZD11LmNvbXB1dGVTaW1pbGFyaXR5KGYpO2Q+YyYmKGM9ZCxoPWYpfWlmKGM+LjkmJmgmJihsLmRlbGV0ZShoKSxzLnB1c2gobmV3IGxlKHUucmFuZ2UsaC5yYW5nZSkpLG8uYWRkKHUuc291cmNlKSxvLmFkZChoLnNvdXJjZSkpLCFyLmlzVmFsaWQoKSlyZXR1cm57bW92ZXM6cyxleGNsdWRlZENoYW5nZXM6b319cmV0dXJue21vdmVzOnMsZXhjbHVkZWRDaGFuZ2VzOm99fWZ1bmN0aW9uIEtpKGUsdCxuLHIscyxpKXtjb25zdCBsPVtdLG89bmV3IE1pO2Zvcihjb25zdCBkIG9mIGUpZm9yKGxldCBtPWQub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyO208ZC5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTI7bSsrKXtjb25zdCBnPWAke3RbbS0xXX06JHt0W20rMS0xXX06JHt0W20rMi0xXX1gO28uYWRkKGcse3JhbmdlOm5ldyBEKG0sbSszKX0pfWNvbnN0IHU9W107ZS5zb3J0KGl0KGQ9PmQubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLGF0KSk7Zm9yKGNvbnN0IGQgb2YgZSl7bGV0IG09W107Zm9yKGxldCBnPWQubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyO2c8ZC5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTI7ZysrKXtjb25zdCB4PWAke25bZy0xXX06JHtuW2crMS0xXX06JHtuW2crMi0xXX1gLHY9bmV3IEQoZyxnKzMpLE49W107by5mb3JFYWNoKHgsKHtyYW5nZTpTfSk9Pntmb3IoY29uc3QgTCBvZiBtKWlmKEwub3JpZ2luYWxMaW5lUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSsxPT09Uy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZMLm1vZGlmaWVkTGluZVJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrMT09PXYuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSl7TC5vcmlnaW5hbExpbmVSYW5nZT1uZXcgRChMLm9yaWdpbmFsTGluZVJhbmdlLnN0YXJ0TGluZU51bWJlcixTLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLEwubW9kaWZpZWRMaW5lUmFuZ2U9bmV3IEQoTC5tb2RpZmllZExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsdi5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSxOLnB1c2goTCk7cmV0dXJufWNvbnN0IF89e21vZGlmaWVkTGluZVJhbmdlOnYsb3JpZ2luYWxMaW5lUmFuZ2U6U307dS5wdXNoKF8pLE4ucHVzaChfKX0pLG09Tn1pZighaS5pc1ZhbGlkKCkpcmV0dXJuW119dS5zb3J0KGlpKGl0KGQ9PmQubW9kaWZpZWRMaW5lUmFuZ2UubGVuZ3RoLGF0KSkpO2NvbnN0IGM9bmV3IHVlLGg9bmV3IHVlO2Zvcihjb25zdCBkIG9mIHUpe2NvbnN0IG09ZC5tb2RpZmllZExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXItZC5vcmlnaW5hbExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsZz1jLnN1YnRyYWN0RnJvbShkLm1vZGlmaWVkTGluZVJhbmdlKSx4PWguc3VidHJhY3RGcm9tKGQub3JpZ2luYWxMaW5lUmFuZ2UpLmdldFdpdGhEZWx0YShtKSx2PWcuZ2V0SW50ZXJzZWN0aW9uKHgpO2Zvcihjb25zdCBOIG9mIHYucmFuZ2VzKXtpZihOLmxlbmd0aDwzKWNvbnRpbnVlO2NvbnN0IFM9TixfPU4uZGVsdGEoLW0pO2wucHVzaChuZXcgbGUoXyxTKSksYy5hZGRSYW5nZShTKSxoLmFkZFJhbmdlKF8pfX1sLnNvcnQoaXQoZD0+ZC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsYXQpKTtjb25zdCBmPW5ldyBqZShlKTtmb3IobGV0IGQ9MDtkPGwubGVuZ3RoO2QrKyl7Y29uc3QgbT1sW2RdLGc9Zi5maW5kTGFzdE1vbm90b25vdXMoUj0+Ui5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI8PW0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSx4PVZlKGUsUj0+Ui5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI8PW0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSx2PU1hdGgubWF4KG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLWcub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLXgubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSxOPWYuZmluZExhc3RNb25vdG9ub3VzKFI9PlIub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksUz1WZShlLFI9PlIubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksXz1NYXRoLm1heChOLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtbS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLFMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS1tLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO2xldCBMO2ZvcihMPTA7TDx2O0wrKyl7Y29uc3QgUj1tLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1MLTEseT1tLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1MLTE7aWYoUj5yLmxlbmd0aHx8eT5zLmxlbmd0aHx8Yy5jb250YWlucyh5KXx8aC5jb250YWlucyhSKXx8IVZyKHJbUi0xXSxzW3ktMV0saSkpYnJlYWt9TD4wJiYoaC5hZGRSYW5nZShuZXcgRChtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1MLG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSksYy5hZGRSYW5nZShuZXcgRChtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1MLG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSkpO2xldCBwO2ZvcihwPTA7cDxfO3ArKyl7Y29uc3QgUj1tLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrcCx5PW0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStwO2lmKFI+ci5sZW5ndGh8fHk+cy5sZW5ndGh8fGMuY29udGFpbnMoeSl8fGguY29udGFpbnMoUil8fCFWcihyW1ItMV0sc1t5LTFdLGkpKWJyZWFrfXA+MCYmKGguYWRkUmFuZ2UobmV3IEQobS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStwKSksYy5hZGRSYW5nZShuZXcgRChtLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3ApKSksKEw+MHx8cD4wKSYmKGxbZF09bmV3IGxlKG5ldyBEKG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLUwsbS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3ApLG5ldyBEKG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLUwsbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3ApKSl9cmV0dXJuIGx9ZnVuY3Rpb24gVnIoZSx0LG4pe2lmKGUudHJpbSgpPT09dC50cmltKCkpcmV0dXJuITA7aWYoZS5sZW5ndGg+MzAwJiZ0Lmxlbmd0aD4zMDApcmV0dXJuITE7Y29uc3Qgcz1uZXcgRnIoKS5jb21wdXRlKG5ldyBkdChbZV0sbmV3IFYoMCwxKSwhMSksbmV3IGR0KFt0XSxuZXcgVigwLDEpLCExKSxuKTtsZXQgaT0wO2NvbnN0IGw9ei5pbnZlcnQocy5kaWZmcyxlLmxlbmd0aCk7Zm9yKGNvbnN0IGggb2YgbCloLnNlcTFSYW5nZS5mb3JFYWNoKGY9PntqdChlLmNoYXJDb2RlQXQoZikpfHxpKyt9KTtmdW5jdGlvbiBvKGgpe2xldCBmPTA7Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDtkKyspanQoaC5jaGFyQ29kZUF0KGQpKXx8ZisrO3JldHVybiBmfWNvbnN0IHU9byhlLmxlbmd0aD50Lmxlbmd0aD9lOnQpO3JldHVybiBpL3U+LjYmJnU+MTB9ZnVuY3Rpb24gZTEoZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBlO2Uuc29ydChpdChuPT5uLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixhdCkpO2NvbnN0IHQ9W2VbMF1dO2ZvcihsZXQgbj0xO248ZS5sZW5ndGg7bisrKXtjb25zdCByPXRbdC5sZW5ndGgtMV0scz1lW25dLGk9cy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItci5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGw9cy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItci5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO2lmKGk+PTAmJmw+PTAmJmkrbDw9Mil7dFt0Lmxlbmd0aC0xXT1yLmpvaW4ocyk7Y29udGludWV9dC5wdXNoKHMpfXJldHVybiB0fWZ1bmN0aW9uIHQxKGUsdCl7Y29uc3Qgbj1uZXcgamUoZSk7cmV0dXJuIHQ9dC5maWx0ZXIocj0+e2NvbnN0IHM9bi5maW5kTGFzdE1vbm90b25vdXMobz0+by5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI8ci5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKXx8bmV3IGxlKG5ldyBEKDEsMSksbmV3IEQoMSwxKSksaT1WZShlLG89Pm8ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPHIubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk7cmV0dXJuIHMhPT1pfSksdH1mdW5jdGlvbiBCcihlLHQsbil7bGV0IHI9bjtyZXR1cm4gcj1xcihlLHQscikscj1xcihlLHQscikscj1uMShlLHQscikscn1mdW5jdGlvbiBxcihlLHQsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybiBuO2NvbnN0IHI9W107ci5wdXNoKG5bMF0pO2ZvcihsZXQgaT0xO2k8bi5sZW5ndGg7aSsrKXtjb25zdCBsPXJbci5sZW5ndGgtMV07bGV0IG89bltpXTtpZihvLnNlcTFSYW5nZS5pc0VtcHR5fHxvLnNlcTJSYW5nZS5pc0VtcHR5KXtjb25zdCB1PW8uc2VxMVJhbmdlLnN0YXJ0LWwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTtsZXQgYztmb3IoYz0xO2M8PXUmJiEoZS5nZXRFbGVtZW50KG8uc2VxMVJhbmdlLnN0YXJ0LWMpIT09ZS5nZXRFbGVtZW50KG8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZS1jKXx8dC5nZXRFbGVtZW50KG8uc2VxMlJhbmdlLnN0YXJ0LWMpIT09dC5nZXRFbGVtZW50KG8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1jKSk7YysrKTtpZihjLS0sYz09PXUpe3Jbci5sZW5ndGgtMV09bmV3IHoobmV3IFYobC5zZXExUmFuZ2Uuc3RhcnQsby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLXUpLG5ldyBWKGwuc2VxMlJhbmdlLnN0YXJ0LG8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS11KSk7Y29udGludWV9bz1vLmRlbHRhKC1jKX1yLnB1c2gobyl9Y29uc3Qgcz1bXTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoLTE7aSsrKXtjb25zdCBsPXJbaSsxXTtsZXQgbz1yW2ldO2lmKG8uc2VxMVJhbmdlLmlzRW1wdHl8fG8uc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IHU9bC5zZXExUmFuZ2Uuc3RhcnQtby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2xldCBjO2ZvcihjPTA7Yzx1JiYhKCFlLmlzU3Ryb25nbHlFcXVhbChvLnNlcTFSYW5nZS5zdGFydCtjLG8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZStjKXx8IXQuaXNTdHJvbmdseUVxdWFsKG8uc2VxMlJhbmdlLnN0YXJ0K2Msby5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2MpKTtjKyspO2lmKGM9PT11KXtyW2krMV09bmV3IHoobmV3IFYoby5zZXExUmFuZ2Uuc3RhcnQrdSxsLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUpLG5ldyBWKG8uc2VxMlJhbmdlLnN0YXJ0K3UsbC5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlKSk7Y29udGludWV9Yz4wJiYobz1vLmRlbHRhKGMpKX1zLnB1c2gobyl9cmV0dXJuIHIubGVuZ3RoPjAmJnMucHVzaChyW3IubGVuZ3RoLTFdKSxzfWZ1bmN0aW9uIG4xKGUsdCxuKXtpZighZS5nZXRCb3VuZGFyeVNjb3JlfHwhdC5nZXRCb3VuZGFyeVNjb3JlKXJldHVybiBuO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKXtjb25zdCBzPXI+MD9uW3ItMV06dm9pZCAwLGk9bltyXSxsPXIrMTxuLmxlbmd0aD9uW3IrMV06dm9pZCAwLG89bmV3IFYocz9zLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUrMTowLGw/bC5zZXExUmFuZ2Uuc3RhcnQtMTplLmxlbmd0aCksdT1uZXcgVihzP3Muc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSsxOjAsbD9sLnNlcTJSYW5nZS5zdGFydC0xOnQubGVuZ3RoKTtpLnNlcTFSYW5nZS5pc0VtcHR5P25bcl09SXIoaSxlLHQsbyx1KTppLnNlcTJSYW5nZS5pc0VtcHR5JiYobltyXT1JcihpLnN3YXAoKSx0LGUsdSxvKS5zd2FwKCkpfXJldHVybiBufWZ1bmN0aW9uIElyKGUsdCxuLHIscyl7bGV0IGw9MTtmb3IoO2Uuc2VxMVJhbmdlLnN0YXJ0LWw+PXIuc3RhcnQmJmUuc2VxMlJhbmdlLnN0YXJ0LWw+PXMuc3RhcnQmJm4uaXNTdHJvbmdseUVxdWFsKGUuc2VxMlJhbmdlLnN0YXJ0LWwsZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWwpJiZsPDEwMDspbCsrO2wtLTtsZXQgbz0wO2Zvcig7ZS5zZXExUmFuZ2Uuc3RhcnQrbzxyLmVuZEV4Y2x1c2l2ZSYmZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK288cy5lbmRFeGNsdXNpdmUmJm4uaXNTdHJvbmdseUVxdWFsKGUuc2VxMlJhbmdlLnN0YXJ0K28sZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK28pJiZvPDEwMDspbysrO2lmKGw9PT0wJiZvPT09MClyZXR1cm4gZTtsZXQgdT0wLGM9LTE7Zm9yKGxldCBoPS1sO2g8PW87aCsrKXtjb25zdCBmPWUuc2VxMlJhbmdlLnN0YXJ0K2gsZD1lLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUraCxtPWUuc2VxMVJhbmdlLnN0YXJ0K2gsZz10LmdldEJvdW5kYXJ5U2NvcmUobSkrbi5nZXRCb3VuZGFyeVNjb3JlKGYpK24uZ2V0Qm91bmRhcnlTY29yZShkKTtnPmMmJihjPWcsdT1oKX1yZXR1cm4gZS5kZWx0YSh1KX1mdW5jdGlvbiByMShlLHQsbil7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBuKXtjb25zdCBpPXJbci5sZW5ndGgtMV07aWYoIWkpe3IucHVzaChzKTtjb250aW51ZX1zLnNlcTFSYW5nZS5zdGFydC1pLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU8PTJ8fHMuc2VxMlJhbmdlLnN0YXJ0LWkuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTw9Mj9yW3IubGVuZ3RoLTFdPW5ldyB6KGkuc2VxMVJhbmdlLmpvaW4ocy5zZXExUmFuZ2UpLGkuc2VxMlJhbmdlLmpvaW4ocy5zZXEyUmFuZ2UpKTpyLnB1c2gocyl9cmV0dXJuIHJ9ZnVuY3Rpb24gczEoZSx0LG4pe2NvbnN0IHI9ei5pbnZlcnQobixlLmxlbmd0aCkscz1bXTtsZXQgaT1uZXcgbmUoMCwwKTtmdW5jdGlvbiBsKHUsYyl7aWYodS5vZmZzZXQxPGkub2Zmc2V0MXx8dS5vZmZzZXQyPGkub2Zmc2V0MilyZXR1cm47Y29uc3QgaD1lLmZpbmRXb3JkQ29udGFpbmluZyh1Lm9mZnNldDEpLGY9dC5maW5kV29yZENvbnRhaW5pbmcodS5vZmZzZXQyKTtpZighaHx8IWYpcmV0dXJuO2xldCBkPW5ldyB6KGgsZik7Y29uc3QgbT1kLmludGVyc2VjdChjKTtsZXQgZz1tLnNlcTFSYW5nZS5sZW5ndGgseD1tLnNlcTJSYW5nZS5sZW5ndGg7Zm9yKDtyLmxlbmd0aD4wOyl7Y29uc3Qgdj1yWzBdO2lmKCEodi5zZXExUmFuZ2UuaW50ZXJzZWN0cyhkLnNlcTFSYW5nZSl8fHYuc2VxMlJhbmdlLmludGVyc2VjdHMoZC5zZXEyUmFuZ2UpKSlicmVhaztjb25zdCBTPWUuZmluZFdvcmRDb250YWluaW5nKHYuc2VxMVJhbmdlLnN0YXJ0KSxfPXQuZmluZFdvcmRDb250YWluaW5nKHYuc2VxMlJhbmdlLnN0YXJ0KSxMPW5ldyB6KFMsXykscD1MLmludGVyc2VjdCh2KTtpZihnKz1wLnNlcTFSYW5nZS5sZW5ndGgseCs9cC5zZXEyUmFuZ2UubGVuZ3RoLGQ9ZC5qb2luKEwpLGQuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZT49di5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKXIuc2hpZnQoKTtlbHNlIGJyZWFrfWcreDwoZC5zZXExUmFuZ2UubGVuZ3RoK2Quc2VxMlJhbmdlLmxlbmd0aCkqMi8zJiZzLnB1c2goZCksaT1kLmdldEVuZEV4Y2x1c2l2ZXMoKX1mb3IoO3IubGVuZ3RoPjA7KXtjb25zdCB1PXIuc2hpZnQoKTt1LnNlcTFSYW5nZS5pc0VtcHR5fHwobCh1LmdldFN0YXJ0cygpLHUpLGwodS5nZXRFbmRFeGNsdXNpdmVzKCkuZGVsdGEoLTEpLHUpKX1yZXR1cm4gaTEobixzKX1mdW5jdGlvbiBpMShlLHQpe2NvbnN0IG49W107Zm9yKDtlLmxlbmd0aD4wfHx0Lmxlbmd0aD4wOyl7Y29uc3Qgcj1lWzBdLHM9dFswXTtsZXQgaTtyJiYoIXN8fHIuc2VxMVJhbmdlLnN0YXJ0PHMuc2VxMVJhbmdlLnN0YXJ0KT9pPWUuc2hpZnQoKTppPXQuc2hpZnQoKSxuLmxlbmd0aD4wJiZuW24ubGVuZ3RoLTFdLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU+PWkuc2VxMVJhbmdlLnN0YXJ0P25bbi5sZW5ndGgtMV09bltuLmxlbmd0aC0xXS5qb2luKGkpOm4ucHVzaChpKX1yZXR1cm4gbn1mdW5jdGlvbiBhMShlLHQsbil7bGV0IHI9bjtpZihyLmxlbmd0aD09PTApcmV0dXJuIHI7bGV0IHM9MCxpO2Rve2k9ITE7Y29uc3QgbD1bclswXV07Zm9yKGxldCBvPTE7bzxyLmxlbmd0aDtvKyspe2xldCBoPWZ1bmN0aW9uKGQsbSl7Y29uc3QgZz1uZXcgVihjLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsdS5zZXExUmFuZ2Uuc3RhcnQpO3JldHVybiBlLmdldFRleHQoZykucmVwbGFjZSgvXHMvZywiIikubGVuZ3RoPD00JiYoZC5zZXExUmFuZ2UubGVuZ3RoK2Quc2VxMlJhbmdlLmxlbmd0aD41fHxtLnNlcTFSYW5nZS5sZW5ndGgrbS5zZXEyUmFuZ2UubGVuZ3RoPjUpfTtjb25zdCB1PXJbb10sYz1sW2wubGVuZ3RoLTFdO2goYyx1KT8oaT0hMCxsW2wubGVuZ3RoLTFdPWxbbC5sZW5ndGgtMV0uam9pbih1KSk6bC5wdXNoKHUpfXI9bH13aGlsZShzKys8MTAmJmkpO3JldHVybiByfWZ1bmN0aW9uIGwxKGUsdCxuKXtsZXQgcj1uO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgcz0wLGk7ZG97aT0hMTtjb25zdCBvPVtyWzBdXTtmb3IobGV0IHU9MTt1PHIubGVuZ3RoO3UrKyl7bGV0IGY9ZnVuY3Rpb24obSxnKXtjb25zdCB4PW5ldyBWKGguc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxjLnNlcTFSYW5nZS5zdGFydCk7aWYoZS5jb3VudExpbmVzSW4oeCk+NXx8eC5sZW5ndGg+NTAwKXJldHVybiExO2NvbnN0IE49ZS5nZXRUZXh0KHgpLnRyaW0oKTtpZihOLmxlbmd0aD4yMHx8Ti5zcGxpdCgvXHJcbnxccnxcbi8pLmxlbmd0aD4xKXJldHVybiExO2NvbnN0IFM9ZS5jb3VudExpbmVzSW4obS5zZXExUmFuZ2UpLF89bS5zZXExUmFuZ2UubGVuZ3RoLEw9dC5jb3VudExpbmVzSW4obS5zZXEyUmFuZ2UpLHA9bS5zZXEyUmFuZ2UubGVuZ3RoLFI9ZS5jb3VudExpbmVzSW4oZy5zZXExUmFuZ2UpLHk9Zy5zZXExUmFuZ2UubGVuZ3RoLEU9dC5jb3VudExpbmVzSW4oZy5zZXEyUmFuZ2UpLEk9Zy5zZXEyUmFuZ2UubGVuZ3RoLEc9Mio0MCs1MDtmdW5jdGlvbiB3KGIpe3JldHVybiBNYXRoLm1pbihiLEcpfXJldHVybiBNYXRoLnBvdyhNYXRoLnBvdyh3KFMqNDArXyksMS41KStNYXRoLnBvdyh3KEwqNDArcCksMS41KSwxLjUpK01hdGgucG93KE1hdGgucG93KHcoUio0MCt5KSwxLjUpK01hdGgucG93KHcoRSo0MCtJKSwxLjUpLDEuNSk+KEcqKjEuNSkqKjEuNSoxLjN9O2NvbnN0IGM9clt1XSxoPW9bby5sZW5ndGgtMV07ZihoLGMpPyhpPSEwLG9bby5sZW5ndGgtMV09b1tvLmxlbmd0aC0xXS5qb2luKGMpKTpvLnB1c2goYyl9cj1vfXdoaWxlKHMrKzwxMCYmaSk7Y29uc3QgbD1bXTtyZXR1cm4gcmkociwobyx1LGMpPT57bGV0IGg9dTtmdW5jdGlvbiBmKE4pe3JldHVybiBOLmxlbmd0aD4wJiZOLnRyaW0oKS5sZW5ndGg8PTMmJnUuc2VxMVJhbmdlLmxlbmd0aCt1LnNlcTJSYW5nZS5sZW5ndGg+MTAwfWNvbnN0IGQ9ZS5leHRlbmRUb0Z1bGxMaW5lcyh1LnNlcTFSYW5nZSksbT1lLmdldFRleHQobmV3IFYoZC5zdGFydCx1LnNlcTFSYW5nZS5zdGFydCkpO2YobSkmJihoPWguZGVsdGFTdGFydCgtbS5sZW5ndGgpKTtjb25zdCBnPWUuZ2V0VGV4dChuZXcgVih1LnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsZC5lbmRFeGNsdXNpdmUpKTtmKGcpJiYoaD1oLmRlbHRhRW5kKGcubGVuZ3RoKSk7Y29uc3QgeD16LmZyb21PZmZzZXRQYWlycyhvP28uZ2V0RW5kRXhjbHVzaXZlcygpOm5lLnplcm8sYz9jLmdldFN0YXJ0cygpOm5lLm1heCksdj1oLmludGVyc2VjdCh4KTtsLmxlbmd0aD4wJiZ2LmdldFN0YXJ0cygpLmVxdWFscyhsW2wubGVuZ3RoLTFdLmdldEVuZEV4Y2x1c2l2ZXMoKSk/bFtsLmxlbmd0aC0xXT1sW2wubGVuZ3RoLTFdLmpvaW4odik6bC5wdXNoKHYpfSksbH1jbGFzcyBVcntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudHJpbW1lZEhhc2g9dCx0aGlzLmxpbmVzPW59Z2V0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy50cmltbWVkSGFzaFt0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMudHJpbW1lZEhhc2gubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUodCl7Y29uc3Qgbj10PT09MD8wOkhyKHRoaXMubGluZXNbdC0xXSkscj10PT09dGhpcy5saW5lcy5sZW5ndGg/MDpIcih0aGlzLmxpbmVzW3RdKTtyZXR1cm4gMWUzLShuK3IpfWdldFRleHQodCl7cmV0dXJuIHRoaXMubGluZXMuc2xpY2UodC5zdGFydCx0LmVuZEV4Y2x1c2l2ZSkuam9pbihgCmApfWlzU3Ryb25nbHlFcXVhbCh0LG4pe3JldHVybiB0aGlzLmxpbmVzW3RdPT09dGhpcy5saW5lc1tuXX19ZnVuY3Rpb24gSHIoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGgmJihlLmNoYXJDb2RlQXQodCk9PT0zMnx8ZS5jaGFyQ29kZUF0KHQpPT09OSk7KXQrKztyZXR1cm4gdH1jbGFzcyBvMXtjb25zdHJ1Y3Rvcigpe3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZz1uZXcgR2ksdGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG09bmV3IEZyfWNvbXB1dGVEaWZmKHQsbixyKXtpZih0Lmxlbmd0aDw9MSYmZWkodCxuLChwLFIpPT5wPT09UikpcmV0dXJuIG5ldyBmdChbXSxbXSwhMSk7aWYodC5sZW5ndGg9PT0xJiZ0WzBdLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MSYmblswXS5sZW5ndGg9PT0wKXJldHVybiBuZXcgZnQoW25ldyBoZShuZXcgRCgxLHQubGVuZ3RoKzEpLG5ldyBEKDEsbi5sZW5ndGgrMSksW25ldyBCZShuZXcgUCgxLDEsdC5sZW5ndGgsdFswXS5sZW5ndGgrMSksbmV3IFAoMSwxLG4ubGVuZ3RoLG5bMF0ubGVuZ3RoKzEpKV0pXSxbXSwhMSk7Y29uc3Qgcz1yLm1heENvbXB1dGF0aW9uVGltZU1zPT09MD9YZS5pbnN0YW5jZTpuZXcgT2koci5tYXhDb21wdXRhdGlvblRpbWVNcyksaT0hci5pZ25vcmVUcmltV2hpdGVzcGFjZSxsPW5ldyBNYXA7ZnVuY3Rpb24gbyhwKXtsZXQgUj1sLmdldChwKTtyZXR1cm4gUj09PXZvaWQgMCYmKFI9bC5zaXplLGwuc2V0KHAsUikpLFJ9Y29uc3QgdT10Lm1hcChwPT5vKHAudHJpbSgpKSksYz1uLm1hcChwPT5vKHAudHJpbSgpKSksaD1uZXcgVXIodSx0KSxmPW5ldyBVcihjLG4pLGQ9aC5sZW5ndGgrZi5sZW5ndGg8MTcwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShoLGYscywocCxSKT0+dFtwXT09PW5bUl0/bltSXS5sZW5ndGg9PT0wPy4xOjErTWF0aC5sb2coMStuW1JdLmxlbmd0aCk6Ljk5KTp0aGlzLm15ZXJzRGlmZmluZ0FsZ29yaXRobS5jb21wdXRlKGgsZik7bGV0IG09ZC5kaWZmcyxnPWQuaGl0VGltZW91dDttPUJyKGgsZixtKSxtPWExKGgsZixtKTtjb25zdCB4PVtdLHY9cD0+e2lmKGkpZm9yKGxldCBSPTA7UjxwO1IrKyl7Y29uc3QgeT1OK1IsRT1TK1I7aWYodFt5XSE9PW5bRV0pe2NvbnN0IEk9dGhpcy5yZWZpbmVEaWZmKHQsbixuZXcgeihuZXcgVih5LHkrMSksbmV3IFYoRSxFKzEpKSxzLGkpO2Zvcihjb25zdCBHIG9mIEkubWFwcGluZ3MpeC5wdXNoKEcpO0kuaGl0VGltZW91dCYmKGc9ITApfX19O2xldCBOPTAsUz0wO2Zvcihjb25zdCBwIG9mIG0pe2h0KCgpPT5wLnNlcTFSYW5nZS5zdGFydC1OPT09cC5zZXEyUmFuZ2Uuc3RhcnQtUyk7Y29uc3QgUj1wLnNlcTFSYW5nZS5zdGFydC1OO3YoUiksTj1wLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsUz1wLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU7Y29uc3QgeT10aGlzLnJlZmluZURpZmYodCxuLHAscyxpKTt5LmhpdFRpbWVvdXQmJihnPSEwKTtmb3IoY29uc3QgRSBvZiB5Lm1hcHBpbmdzKXgucHVzaChFKX12KHQubGVuZ3RoLU4pO2NvbnN0IF89V3IoeCx0LG4pO2xldCBMPVtdO3JldHVybiByLmNvbXB1dGVNb3ZlcyYmKEw9dGhpcy5jb21wdXRlTW92ZXMoXyx0LG4sdSxjLHMsaSkpLGh0KCgpPT57ZnVuY3Rpb24gcCh5LEUpe2lmKHkubGluZU51bWJlcjwxfHx5LmxpbmVOdW1iZXI+RS5sZW5ndGgpcmV0dXJuITE7Y29uc3QgST1FW3kubGluZU51bWJlci0xXTtyZXR1cm4hKHkuY29sdW1uPDF8fHkuY29sdW1uPkkubGVuZ3RoKzEpfWZ1bmN0aW9uIFIoeSxFKXtyZXR1cm4hKHkuc3RhcnRMaW5lTnVtYmVyPDF8fHkuc3RhcnRMaW5lTnVtYmVyPkUubGVuZ3RoKzF8fHkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTwxfHx5LmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+RS5sZW5ndGgrMSl9Zm9yKGNvbnN0IHkgb2YgXyl7aWYoIXkuaW5uZXJDaGFuZ2VzKXJldHVybiExO2Zvcihjb25zdCBFIG9mIHkuaW5uZXJDaGFuZ2VzKWlmKCEocChFLm1vZGlmaWVkUmFuZ2UuZ2V0U3RhcnRQb3NpdGlvbigpLG4pJiZwKEUubW9kaWZpZWRSYW5nZS5nZXRFbmRQb3NpdGlvbigpLG4pJiZwKEUub3JpZ2luYWxSYW5nZS5nZXRTdGFydFBvc2l0aW9uKCksdCkmJnAoRS5vcmlnaW5hbFJhbmdlLmdldEVuZFBvc2l0aW9uKCksdCkpKXJldHVybiExO2lmKCFSKHkubW9kaWZpZWQsbil8fCFSKHkub3JpZ2luYWwsdCkpcmV0dXJuITF9cmV0dXJuITB9KSxuZXcgZnQoXyxMLGcpfWNvbXB1dGVNb3Zlcyh0LG4scixzLGksbCxvKXtyZXR1cm4gSmkodCxuLHIscyxpLGwpLm1hcChoPT57Y29uc3QgZj10aGlzLnJlZmluZURpZmYobixyLG5ldyB6KGgub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLGgubW9kaWZpZWQudG9PZmZzZXRSYW5nZSgpKSxsLG8pLGQ9V3IoZi5tYXBwaW5ncyxuLHIsITApO3JldHVybiBuZXcgcWkoaCxkKX0pfXJlZmluZURpZmYodCxuLHIscyxpKXtjb25zdCBsPW5ldyBkdCh0LHIuc2VxMVJhbmdlLGkpLG89bmV3IGR0KG4sci5zZXEyUmFuZ2UsaSksdT1sLmxlbmd0aCtvLmxlbmd0aDw1MDA/dGhpcy5keW5hbWljUHJvZ3JhbW1pbmdEaWZmaW5nLmNvbXB1dGUobCxvLHMpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUobCxvLHMpO2xldCBjPXUuZGlmZnM7cmV0dXJuIGM9QnIobCxvLGMpLGM9czEobCxvLGMpLGM9cjEobCxvLGMpLGM9bDEobCxvLGMpLHttYXBwaW5nczpjLm1hcChmPT5uZXcgQmUobC50cmFuc2xhdGVSYW5nZShmLnNlcTFSYW5nZSksby50cmFuc2xhdGVSYW5nZShmLnNlcTJSYW5nZSkpKSxoaXRUaW1lb3V0OnUuaGl0VGltZW91dH19fWZ1bmN0aW9uIFdyKGUsdCxuLHI9ITEpe2NvbnN0IHM9W107Zm9yKGNvbnN0IGkgb2YgdGkoZS5tYXAobD0+dTEobCx0LG4pKSwobCxvKT0+bC5vcmlnaW5hbC5vdmVybGFwT3JUb3VjaChvLm9yaWdpbmFsKXx8bC5tb2RpZmllZC5vdmVybGFwT3JUb3VjaChvLm1vZGlmaWVkKSkpe2NvbnN0IGw9aVswXSxvPWlbaS5sZW5ndGgtMV07cy5wdXNoKG5ldyBoZShsLm9yaWdpbmFsLmpvaW4oby5vcmlnaW5hbCksbC5tb2RpZmllZC5qb2luKG8ubW9kaWZpZWQpLGkubWFwKHU9PnUuaW5uZXJDaGFuZ2VzWzBdKSkpfXJldHVybiBodCgoKT0+IXImJnMubGVuZ3RoPjAmJihzWzBdLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciE9PXNbMF0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyfHxuLmxlbmd0aC1zW3MubGVuZ3RoLTFdLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUhPT10Lmxlbmd0aC1zW3MubGVuZ3RoLTFdLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpPyExOkFyKHMsKGksbCk9Pmwub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLWkub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWwubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLWkubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmaS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPGwub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyJiZpLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8bC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIpKSxzfWZ1bmN0aW9uIHUxKGUsdCxuKXtsZXQgcj0wLHM9MDtlLm1vZGlmaWVkUmFuZ2UuZW5kQ29sdW1uPT09MSYmZS5vcmlnaW5hbFJhbmdlLmVuZENvbHVtbj09PTEmJmUub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9ZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXImJmUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9ZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXImJihzPS0xKSxlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRDb2x1bW4tMT49bltlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLTFdLmxlbmd0aCYmZS5vcmlnaW5hbFJhbmdlLnN0YXJ0Q29sdW1uLTE+PXRbZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlci0xXS5sZW5ndGgmJmUub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXI8PWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyK3MmJmUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXI8PWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyK3MmJihyPTEpO2NvbnN0IGk9bmV3IEQoZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcityLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyKzErcyksbD1uZXcgRChlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXIrMStzKTtyZXR1cm4gbmV3IGhlKGksbCxbZV0pfWNvbnN0IHpyPXtnZXRMZWdhY3k6KCk9Pm5ldyBIaSxnZXREZWZhdWx0OigpPT5uZXcgbzF9O2Z1bmN0aW9uIHZlKGUsdCl7Y29uc3Qgbj1NYXRoLnBvdygxMCx0KTtyZXR1cm4gTWF0aC5yb3VuZChlKm4pL259Y2xhc3MgT3tjb25zdHJ1Y3Rvcih0LG4scixzPTEpe3RoaXMuX3JnYmFCcmFuZD12b2lkIDAsdGhpcy5yPU1hdGgubWluKDI1NSxNYXRoLm1heCgwLHQpKXwwLHRoaXMuZz1NYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxuKSl8MCx0aGlzLmI9TWF0aC5taW4oMjU1LE1hdGgubWF4KDAscikpfDAsdGhpcy5hPXZlKE1hdGgubWF4KE1hdGgubWluKDEscyksMCksMyl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiB0LnI9PT1uLnImJnQuZz09PW4uZyYmdC5iPT09bi5iJiZ0LmE9PT1uLmF9fWNsYXNzIHJle2NvbnN0cnVjdG9yKHQsbixyLHMpe3RoaXMuX2hzbGFCcmFuZD12b2lkIDAsdGhpcy5oPU1hdGgubWF4KE1hdGgubWluKDM2MCx0KSwwKXwwLHRoaXMucz12ZShNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMubD12ZShNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpLHRoaXMuYT12ZShNYXRoLm1heChNYXRoLm1pbigxLHMpLDApLDMpfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4gdC5oPT09bi5oJiZ0LnM9PT1uLnMmJnQubD09PW4ubCYmdC5hPT09bi5hfXN0YXRpYyBmcm9tUkdCQSh0KXtjb25zdCBuPXQuci8yNTUscj10LmcvMjU1LHM9dC5iLzI1NSxpPXQuYSxsPU1hdGgubWF4KG4scixzKSxvPU1hdGgubWluKG4scixzKTtsZXQgdT0wLGM9MDtjb25zdCBoPShvK2wpLzIsZj1sLW87aWYoZj4wKXtzd2l0Y2goYz1NYXRoLm1pbihoPD0uNT9mLygyKmgpOmYvKDItMipoKSwxKSxsKXtjYXNlIG46dT0oci1zKS9mKyhyPHM/NjowKTticmVhaztjYXNlIHI6dT0ocy1uKS9mKzI7YnJlYWs7Y2FzZSBzOnU9KG4tcikvZis0O2JyZWFrfXUqPTYwLHU9TWF0aC5yb3VuZCh1KX1yZXR1cm4gbmV3IHJlKHUsYyxoLGkpfXN0YXRpYyBfaHVlMnJnYih0LG4scil7cmV0dXJuIHI8MCYmKHIrPTEpLHI+MSYmKHItPTEpLHI8MS82P3QrKG4tdCkqNipyOnI8MS8yP246cjwyLzM/dCsobi10KSooMi8zLXIpKjY6dH1zdGF0aWMgdG9SR0JBKHQpe2NvbnN0IG49dC5oLzM2MCx7czpyLGw6cyxhOml9PXQ7bGV0IGwsbyx1O2lmKHI9PT0wKWw9bz11PXM7ZWxzZXtjb25zdCBjPXM8LjU/cyooMStyKTpzK3ItcypyLGg9MipzLWM7bD1yZS5faHVlMnJnYihoLGMsbisxLzMpLG89cmUuX2h1ZTJyZ2IoaCxjLG4pLHU9cmUuX2h1ZTJyZ2IoaCxjLG4tMS8zKX1yZXR1cm4gbmV3IE8oTWF0aC5yb3VuZChsKjI1NSksTWF0aC5yb3VuZChvKjI1NSksTWF0aC5yb3VuZCh1KjI1NSksaSl9fWNsYXNzIFVle2NvbnN0cnVjdG9yKHQsbixyLHMpe3RoaXMuX2hzdmFCcmFuZD12b2lkIDAsdGhpcy5oPU1hdGgubWF4KE1hdGgubWluKDM2MCx0KSwwKXwwLHRoaXMucz12ZShNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMudj12ZShNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpLHRoaXMuYT12ZShNYXRoLm1heChNYXRoLm1pbigxLHMpLDApLDMpfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4gdC5oPT09bi5oJiZ0LnM9PT1uLnMmJnQudj09PW4udiYmdC5hPT09bi5hfXN0YXRpYyBmcm9tUkdCQSh0KXtjb25zdCBuPXQuci8yNTUscj10LmcvMjU1LHM9dC5iLzI1NSxpPU1hdGgubWF4KG4scixzKSxsPU1hdGgubWluKG4scixzKSxvPWktbCx1PWk9PT0wPzA6by9pO2xldCBjO3JldHVybiBvPT09MD9jPTA6aT09PW4/Yz0oKHItcykvbyU2KzYpJTY6aT09PXI/Yz0ocy1uKS9vKzI6Yz0obi1yKS9vKzQsbmV3IFVlKE1hdGgucm91bmQoYyo2MCksdSxpLHQuYSl9c3RhdGljIHRvUkdCQSh0KXtjb25zdHtoOm4sczpyLHY6cyxhOml9PXQsbD1zKnIsbz1sKigxLU1hdGguYWJzKG4vNjAlMi0xKSksdT1zLWw7bGV0W2MsaCxmXT1bMCwwLDBdO3JldHVybiBuPDYwPyhjPWwsaD1vKTpuPDEyMD8oYz1vLGg9bCk6bjwxODA/KGg9bCxmPW8pOm48MjQwPyhoPW8sZj1sKTpuPDMwMD8oYz1vLGY9bCk6bjw9MzYwJiYoYz1sLGY9byksYz1NYXRoLnJvdW5kKChjK3UpKjI1NSksaD1NYXRoLnJvdW5kKChoK3UpKjI1NSksZj1NYXRoLnJvdW5kKChmK3UpKjI1NSksbmV3IE8oYyxoLGYsaSl9fWNsYXNzIEJ7c3RhdGljIGZyb21IZXgodCl7cmV0dXJuIEIuRm9ybWF0LkNTUy5wYXJzZUhleCh0KXx8Qi5yZWR9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiF0JiYhbj8hMDohdHx8IW4/ITE6dC5lcXVhbHMobil9Z2V0IGhzbGEoKXtyZXR1cm4gdGhpcy5faHNsYT90aGlzLl9oc2xhOnJlLmZyb21SR0JBKHRoaXMucmdiYSl9Z2V0IGhzdmEoKXtyZXR1cm4gdGhpcy5faHN2YT90aGlzLl9oc3ZhOlVlLmZyb21SR0JBKHRoaXMucmdiYSl9Y29uc3RydWN0b3IodCl7aWYodClpZih0IGluc3RhbmNlb2YgTyl0aGlzLnJnYmE9dDtlbHNlIGlmKHQgaW5zdGFuY2VvZiByZSl0aGlzLl9oc2xhPXQsdGhpcy5yZ2JhPXJlLnRvUkdCQSh0KTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBVZSl0aGlzLl9oc3ZhPXQsdGhpcy5yZ2JhPVVlLnRvUkdCQSh0KTtlbHNlIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciBjdG9yIGFyZ3VtZW50Iik7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkNvbG9yIG5lZWRzIGEgdmFsdWUiKX1lcXVhbHModCl7cmV0dXJuISF0JiZPLmVxdWFscyh0aGlzLnJnYmEsdC5yZ2JhKSYmcmUuZXF1YWxzKHRoaXMuaHNsYSx0LmhzbGEpJiZVZS5lcXVhbHModGhpcy5oc3ZhLHQuaHN2YSl9Z2V0UmVsYXRpdmVMdW1pbmFuY2UoKXtjb25zdCB0PUIuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5yKSxuPUIuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5nKSxyPUIuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5iKSxzPS4yMTI2KnQrLjcxNTIqbisuMDcyMipyO3JldHVybiB2ZShzLDQpfXN0YXRpYyBfcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodCl7Y29uc3Qgbj10LzI1NTtyZXR1cm4gbjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1pc0xpZ2h0ZXIoKXtyZXR1cm4odGhpcy5yZ2JhLnIqMjk5K3RoaXMucmdiYS5nKjU4Nyt0aGlzLnJnYmEuYioxMTQpLzFlMz49MTI4fWlzTGlnaHRlclRoYW4odCl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG4+cn1pc0RhcmtlclRoYW4odCl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG48cn1saWdodGVuKHQpe3JldHVybiBuZXcgQihuZXcgcmUodGhpcy5oc2xhLmgsdGhpcy5oc2xhLnMsdGhpcy5oc2xhLmwrdGhpcy5oc2xhLmwqdCx0aGlzLmhzbGEuYSkpfWRhcmtlbih0KXtyZXR1cm4gbmV3IEIobmV3IHJlKHRoaXMuaHNsYS5oLHRoaXMuaHNsYS5zLHRoaXMuaHNsYS5sLXRoaXMuaHNsYS5sKnQsdGhpcy5oc2xhLmEpKX10cmFuc3BhcmVudCh0KXtjb25zdHtyOm4sZzpyLGI6cyxhOml9PXRoaXMucmdiYTtyZXR1cm4gbmV3IEIobmV3IE8obixyLHMsaSp0KSl9aXNUcmFuc3BhcmVudCgpe3JldHVybiB0aGlzLnJnYmEuYT09PTB9aXNPcGFxdWUoKXtyZXR1cm4gdGhpcy5yZ2JhLmE9PT0xfW9wcG9zaXRlKCl7cmV0dXJuIG5ldyBCKG5ldyBPKDI1NS10aGlzLnJnYmEuciwyNTUtdGhpcy5yZ2JhLmcsMjU1LXRoaXMucmdiYS5iLHRoaXMucmdiYS5hKSl9bWFrZU9wYXF1ZSh0KXtpZih0aGlzLmlzT3BhcXVlKCl8fHQucmdiYS5hIT09MSlyZXR1cm4gdGhpcztjb25zdHtyOm4sZzpyLGI6cyxhOml9PXRoaXMucmdiYTtyZXR1cm4gbmV3IEIobmV3IE8odC5yZ2JhLnItaSoodC5yZ2JhLnItbiksdC5yZ2JhLmctaSoodC5yZ2JhLmctciksdC5yZ2JhLmItaSoodC5yZ2JhLmItcyksMSkpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3RvU3RyaW5nfHwodGhpcy5fdG9TdHJpbmc9Qi5Gb3JtYXQuQ1NTLmZvcm1hdCh0aGlzKSksdGhpcy5fdG9TdHJpbmd9c3RhdGljIGdldExpZ2h0ZXJDb2xvcih0LG4scil7aWYodC5pc0xpZ2h0ZXJUaGFuKG4pKXJldHVybiB0O3I9cnx8LjU7Y29uc3Qgcz10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCksaT1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9ciooaS1zKS9pLHQubGlnaHRlbihyKX1zdGF0aWMgZ2V0RGFya2VyQ29sb3IodCxuLHIpe2lmKHQuaXNEYXJrZXJUaGFuKG4pKXJldHVybiB0O3I9cnx8LjU7Y29uc3Qgcz10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCksaT1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9cioocy1pKS9zLHQuZGFya2VuKHIpfX1CLndoaXRlPW5ldyBCKG5ldyBPKDI1NSwyNTUsMjU1LDEpKSxCLmJsYWNrPW5ldyBCKG5ldyBPKDAsMCwwLDEpKSxCLnJlZD1uZXcgQihuZXcgTygyNTUsMCwwLDEpKSxCLmJsdWU9bmV3IEIobmV3IE8oMCwwLDI1NSwxKSksQi5ncmVlbj1uZXcgQihuZXcgTygwLDI1NSwwLDEpKSxCLmN5YW49bmV3IEIobmV3IE8oMCwyNTUsMjU1LDEpKSxCLmxpZ2h0Z3JleT1uZXcgQihuZXcgTygyMTEsMjExLDIxMSwxKSksQi50cmFuc3BhcmVudD1uZXcgQihuZXcgTygwLDAsMCwwKSksZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbihuKXtmdW5jdGlvbiByKG0pe3JldHVybiBtLnJnYmEuYT09PTE/YHJnYigke20ucmdiYS5yfSwgJHttLnJnYmEuZ30sICR7bS5yZ2JhLmJ9KWA6ZS5Gb3JtYXQuQ1NTLmZvcm1hdFJHQkEobSl9bi5mb3JtYXRSR0I9cjtmdW5jdGlvbiBzKG0pe3JldHVybmByZ2JhKCR7bS5yZ2JhLnJ9LCAke20ucmdiYS5nfSwgJHttLnJnYmEuYn0sICR7K20ucmdiYS5hLnRvRml4ZWQoMil9KWB9bi5mb3JtYXRSR0JBPXM7ZnVuY3Rpb24gaShtKXtyZXR1cm4gbS5oc2xhLmE9PT0xP2Boc2woJHttLmhzbGEuaH0sICR7KG0uaHNsYS5zKjEwMCkudG9GaXhlZCgyKX0lLCAkeyhtLmhzbGEubCoxMDApLnRvRml4ZWQoMil9JSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRIU0xBKG0pfW4uZm9ybWF0SFNMPWk7ZnVuY3Rpb24gbChtKXtyZXR1cm5gaHNsYSgke20uaHNsYS5ofSwgJHsobS5oc2xhLnMqMTAwKS50b0ZpeGVkKDIpfSUsICR7KG0uaHNsYS5sKjEwMCkudG9GaXhlZCgyKX0lLCAke20uaHNsYS5hLnRvRml4ZWQoMil9KWB9bi5mb3JtYXRIU0xBPWw7ZnVuY3Rpb24gbyhtKXtjb25zdCBnPW0udG9TdHJpbmcoMTYpO3JldHVybiBnLmxlbmd0aCE9PTI/IjAiK2c6Z31mdW5jdGlvbiB1KG0pe3JldHVybmAjJHtvKG0ucmdiYS5yKX0ke28obS5yZ2JhLmcpfSR7byhtLnJnYmEuYil9YH1uLmZvcm1hdEhleD11O2Z1bmN0aW9uIGMobSxnPSExKXtyZXR1cm4gZyYmbS5yZ2JhLmE9PT0xP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgobSk6YCMke28obS5yZ2JhLnIpfSR7byhtLnJnYmEuZyl9JHtvKG0ucmdiYS5iKX0ke28oTWF0aC5yb3VuZChtLnJnYmEuYSoyNTUpKX1gfW4uZm9ybWF0SGV4QT1jO2Z1bmN0aW9uIGgobSl7cmV0dXJuIG0uaXNPcGFxdWUoKT9lLkZvcm1hdC5DU1MuZm9ybWF0SGV4KG0pOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKG0pfW4uZm9ybWF0PWg7ZnVuY3Rpb24gZihtKXtjb25zdCBnPW0ubGVuZ3RoO2lmKGc9PT0wfHxtLmNoYXJDb2RlQXQoMCkhPT0zNSlyZXR1cm4gbnVsbDtpZihnPT09Nyl7Y29uc3QgeD0xNipkKG0uY2hhckNvZGVBdCgxKSkrZChtLmNoYXJDb2RlQXQoMikpLHY9MTYqZChtLmNoYXJDb2RlQXQoMykpK2QobS5jaGFyQ29kZUF0KDQpKSxOPTE2KmQobS5jaGFyQ29kZUF0KDUpKStkKG0uY2hhckNvZGVBdCg2KSk7cmV0dXJuIG5ldyBlKG5ldyBPKHgsdixOLDEpKX1pZihnPT09OSl7Y29uc3QgeD0xNipkKG0uY2hhckNvZGVBdCgxKSkrZChtLmNoYXJDb2RlQXQoMikpLHY9MTYqZChtLmNoYXJDb2RlQXQoMykpK2QobS5jaGFyQ29kZUF0KDQpKSxOPTE2KmQobS5jaGFyQ29kZUF0KDUpKStkKG0uY2hhckNvZGVBdCg2KSksUz0xNipkKG0uY2hhckNvZGVBdCg3KSkrZChtLmNoYXJDb2RlQXQoOCkpO3JldHVybiBuZXcgZShuZXcgTyh4LHYsTixTLzI1NSkpfWlmKGc9PT00KXtjb25zdCB4PWQobS5jaGFyQ29kZUF0KDEpKSx2PWQobS5jaGFyQ29kZUF0KDIpKSxOPWQobS5jaGFyQ29kZUF0KDMpKTtyZXR1cm4gbmV3IGUobmV3IE8oMTYqeCt4LDE2KnYrdiwxNipOK04pKX1pZihnPT09NSl7Y29uc3QgeD1kKG0uY2hhckNvZGVBdCgxKSksdj1kKG0uY2hhckNvZGVBdCgyKSksTj1kKG0uY2hhckNvZGVBdCgzKSksUz1kKG0uY2hhckNvZGVBdCg0KSk7cmV0dXJuIG5ldyBlKG5ldyBPKDE2KngreCwxNip2K3YsMTYqTitOLCgxNipTK1MpLzI1NSkpfXJldHVybiBudWxsfW4ucGFyc2VIZXg9ZjtmdW5jdGlvbiBkKG0pe3N3aXRjaChtKXtjYXNlIDQ4OnJldHVybiAwO2Nhc2UgNDk6cmV0dXJuIDE7Y2FzZSA1MDpyZXR1cm4gMjtjYXNlIDUxOnJldHVybiAzO2Nhc2UgNTI6cmV0dXJuIDQ7Y2FzZSA1MzpyZXR1cm4gNTtjYXNlIDU0OnJldHVybiA2O2Nhc2UgNTU6cmV0dXJuIDc7Y2FzZSA1NjpyZXR1cm4gODtjYXNlIDU3OnJldHVybiA5O2Nhc2UgOTc6cmV0dXJuIDEwO2Nhc2UgNjU6cmV0dXJuIDEwO2Nhc2UgOTg6cmV0dXJuIDExO2Nhc2UgNjY6cmV0dXJuIDExO2Nhc2UgOTk6cmV0dXJuIDEyO2Nhc2UgNjc6cmV0dXJuIDEyO2Nhc2UgMTAwOnJldHVybiAxMztjYXNlIDY4OnJldHVybiAxMztjYXNlIDEwMTpyZXR1cm4gMTQ7Y2FzZSA2OTpyZXR1cm4gMTQ7Y2FzZSAxMDI6cmV0dXJuIDE1O2Nhc2UgNzA6cmV0dXJuIDE1fXJldHVybiAwfX0pKHQuQ1NTfHwodC5DU1M9e30pKX0pKGUuRm9ybWF0fHwoZS5Gb3JtYXQ9e30pKX0oQnx8KEI9e30pKTtmdW5jdGlvbiAkcihlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IHI9TnVtYmVyKG4pOyhyfHxyPT09MCYmbi5yZXBsYWNlKC9ccy9nLCIiKSE9PSIiKSYmdC5wdXNoKHIpfXJldHVybiB0fWZ1bmN0aW9uIFh0KGUsdCxuLHIpe3JldHVybntyZWQ6ZS8yNTUsYmx1ZTpuLzI1NSxncmVlbjp0LzI1NSxhbHBoYTpyfX1mdW5jdGlvbiBKZShlLHQpe2NvbnN0IG49dC5pbmRleCxyPXRbMF0ubGVuZ3RoO2lmKCFuKXJldHVybjtjb25zdCBzPWUucG9zaXRpb25BdChuKTtyZXR1cm57c3RhcnRMaW5lTnVtYmVyOnMubGluZU51bWJlcixzdGFydENvbHVtbjpzLmNvbHVtbixlbmRMaW5lTnVtYmVyOnMubGluZU51bWJlcixlbmRDb2x1bW46cy5jb2x1bW4rcn19ZnVuY3Rpb24gYzEoZSx0KXtpZighZSlyZXR1cm47Y29uc3Qgbj1CLkZvcm1hdC5DU1MucGFyc2VIZXgodCk7aWYobilyZXR1cm57cmFuZ2U6ZSxjb2xvcjpYdChuLnJnYmEucixuLnJnYmEuZyxuLnJnYmEuYixuLnJnYmEuYSl9fWZ1bmN0aW9uIE9yKGUsdCxuKXtpZighZXx8dC5sZW5ndGghPT0xKXJldHVybjtjb25zdCBzPXRbMF0udmFsdWVzKCksaT0kcihzKTtyZXR1cm57cmFuZ2U6ZSxjb2xvcjpYdChpWzBdLGlbMV0saVsyXSxuP2lbM106MSl9fWZ1bmN0aW9uIEdyKGUsdCxuKXtpZighZXx8dC5sZW5ndGghPT0xKXJldHVybjtjb25zdCBzPXRbMF0udmFsdWVzKCksaT0kcihzKSxsPW5ldyBCKG5ldyByZShpWzBdLGlbMV0vMTAwLGlbMl0vMTAwLG4/aVszXToxKSk7cmV0dXJue3JhbmdlOmUsY29sb3I6WHQobC5yZ2JhLnIsbC5yZ2JhLmcsbC5yZ2JhLmIsbC5yZ2JhLmEpfX1mdW5jdGlvbiBZZShlLHQpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/Wy4uLmUubWF0Y2hBbGwodCldOmUuZmluZE1hdGNoZXModCl9ZnVuY3Rpb24gaDEoZSl7Y29uc3QgdD1bXSxyPVllKGUsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17M30pXGJ8KCMpKFtBLUZhLWYwLTldezR9KVxifCgjKShbQS1GYS1mMC05XXs2fSlcYnwoIykoW0EtRmEtZjAtOV17OH0pXGIvZ20pO2lmKHIubGVuZ3RoPjApZm9yKGNvbnN0IHMgb2Ygcil7Y29uc3QgaT1zLmZpbHRlcihjPT5jIT09dm9pZCAwKSxsPWlbMV0sbz1pWzJdO2lmKCFvKWNvbnRpbnVlO2xldCB1O2lmKGw9PT0icmdiIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207dT1PcihKZShlLHMpLFllKG8sYyksITEpfWVsc2UgaWYobD09PSJyZ2JhIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207dT1PcihKZShlLHMpLFllKG8sYyksITApfWVsc2UgaWYobD09PSJoc2wiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTt1PUdyKEplKGUscyksWWUobyxjKSwhMSl9ZWxzZSBpZihsPT09ImhzbGEiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTt1PUdyKEplKGUscyksWWUobyxjKSwhMCl9ZWxzZSBsPT09IiMiJiYodT1jMShKZShlLHMpLGwrbykpO3UmJnQucHVzaCh1KX1yZXR1cm4gdH1mdW5jdGlvbiBmMShlKXtyZXR1cm4hZXx8dHlwZW9mIGUuZ2V0VmFsdWUhPSJmdW5jdGlvbiJ8fHR5cGVvZiBlLnBvc2l0aW9uQXQhPSJmdW5jdGlvbiI/W106aDEoZSl9Y29uc3QganI9L1xiTUFSSzpccyooLiopJC9kLGQxPS9eLSt8LSskL2c7ZnVuY3Rpb24gbTEoZSx0KXt2YXIgbjtsZXQgcj1bXTtpZih0LmZpbmRSZWdpb25TZWN0aW9uSGVhZGVycyYmKCEoKG49dC5mb2xkaW5nUnVsZXMpPT09bnVsbHx8bj09PXZvaWQgMCkmJm4ubWFya2Vycykpe2NvbnN0IHM9ZzEoZSx0KTtyPXIuY29uY2F0KHMpfWlmKHQuZmluZE1hcmtTZWN0aW9uSGVhZGVycyl7Y29uc3Qgcz1iMShlKTtyPXIuY29uY2F0KHMpfXJldHVybiByfWZ1bmN0aW9uIGcxKGUsdCl7Y29uc3Qgbj1bXSxyPWUuZ2V0TGluZUNvdW50KCk7Zm9yKGxldCBzPTE7czw9cjtzKyspe2NvbnN0IGk9ZS5nZXRMaW5lQ29udGVudChzKSxsPWkubWF0Y2godC5mb2xkaW5nUnVsZXMubWFya2Vycy5zdGFydCk7aWYobCl7Y29uc3Qgbz17c3RhcnRMaW5lTnVtYmVyOnMsc3RhcnRDb2x1bW46bFswXS5sZW5ndGgrMSxlbmRMaW5lTnVtYmVyOnMsZW5kQ29sdW1uOmkubGVuZ3RoKzF9O2lmKG8uZW5kQ29sdW1uPm8uc3RhcnRDb2x1bW4pe2NvbnN0IHU9e3JhbmdlOm8sLi4uUXIoaS5zdWJzdHJpbmcobFswXS5sZW5ndGgpKSxzaG91bGRCZUluQ29tbWVudHM6ITF9Oyh1LnRleHR8fHUuaGFzU2VwYXJhdG9yTGluZSkmJm4ucHVzaCh1KX19fXJldHVybiBufWZ1bmN0aW9uIGIxKGUpe2NvbnN0IHQ9W10sbj1lLmdldExpbmVDb3VudCgpO2ZvcihsZXQgcj0xO3I8PW47cisrKXtjb25zdCBzPWUuZ2V0TGluZUNvbnRlbnQocik7XzEocyxyLHQpfXJldHVybiB0fWZ1bmN0aW9uIF8xKGUsdCxuKXtqci5sYXN0SW5kZXg9MDtjb25zdCByPWpyLmV4ZWMoZSk7aWYocil7Y29uc3Qgcz1yLmluZGljZXNbMV1bMF0rMSxpPXIuaW5kaWNlc1sxXVsxXSsxLGw9e3N0YXJ0TGluZU51bWJlcjp0LHN0YXJ0Q29sdW1uOnMsZW5kTGluZU51bWJlcjp0LGVuZENvbHVtbjppfTtpZihsLmVuZENvbHVtbj5sLnN0YXJ0Q29sdW1uKXtjb25zdCBvPXtyYW5nZTpsLC4uLlFyKHJbMV0pLHNob3VsZEJlSW5Db21tZW50czohMH07KG8udGV4dHx8by5oYXNTZXBhcmF0b3JMaW5lKSYmbi5wdXNoKG8pfX19ZnVuY3Rpb24gUXIoZSl7ZT1lLnRyaW0oKTtjb25zdCB0PWUuc3RhcnRzV2l0aCgiLSIpO3JldHVybiBlPWUucmVwbGFjZShkMSwiIikse3RleHQ6ZSxoYXNTZXBhcmF0b3JMaW5lOnR9fWNsYXNzIHgxIGV4dGVuZHMgb2l7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9ZmluZE1hdGNoZXModCl7Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPHRoaXMuX2xpbmVzLmxlbmd0aDtyKyspe2NvbnN0IHM9dGhpcy5fbGluZXNbcl0saT10aGlzLm9mZnNldEF0KG5ldyBKKHIrMSwxKSksbD1zLm1hdGNoQWxsKHQpO2Zvcihjb25zdCBvIG9mIGwpKG8uaW5kZXh8fG8uaW5kZXg9PT0wKSYmKG8uaW5kZXg9by5pbmRleCtpKSxuLnB1c2gobyl9cmV0dXJuIG59Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQodCl7cmV0dXJuIHRoaXMuX2xpbmVzW3QtMV19Z2V0V29yZEF0UG9zaXRpb24odCxuKXtjb25zdCByPUZ0KHQuY29sdW1uLHduKG4pLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXSwwKTtyZXR1cm4gcj9uZXcgUCh0LmxpbmVOdW1iZXIsci5zdGFydENvbHVtbix0LmxpbmVOdW1iZXIsci5lbmRDb2x1bW4pOm51bGx9d29yZHModCl7Y29uc3Qgbj10aGlzLl9saW5lcyxyPXRoaXMuX3dvcmRlbml6ZS5iaW5kKHRoaXMpO2xldCBzPTAsaT0iIixsPTAsbz1bXTtyZXR1cm57KltTeW1ib2wuaXRlcmF0b3JdKCl7Zm9yKDs7KWlmKGw8by5sZW5ndGgpe2NvbnN0IHU9aS5zdWJzdHJpbmcob1tsXS5zdGFydCxvW2xdLmVuZCk7bCs9MSx5aWVsZCB1fWVsc2UgaWYoczxuLmxlbmd0aClpPW5bc10sbz1yKGksdCksbD0wLHMrPTE7ZWxzZSBicmVha319fWdldExpbmVXb3Jkcyh0LG4pe2NvbnN0IHI9dGhpcy5fbGluZXNbdC0xXSxzPXRoaXMuX3dvcmRlbml6ZShyLG4pLGk9W107Zm9yKGNvbnN0IGwgb2YgcylpLnB1c2goe3dvcmQ6ci5zdWJzdHJpbmcobC5zdGFydCxsLmVuZCksc3RhcnRDb2x1bW46bC5zdGFydCsxLGVuZENvbHVtbjpsLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZSh0LG4pe2NvbnN0IHI9W107bGV0IHM7Zm9yKG4ubGFzdEluZGV4PTA7KHM9bi5leGVjKHQpKSYmc1swXS5sZW5ndGghPT0wOylyLnB1c2goe3N0YXJ0OnMuaW5kZXgsZW5kOnMuaW5kZXgrc1swXS5sZW5ndGh9KTtyZXR1cm4gcn1nZXRWYWx1ZUluUmFuZ2UodCl7aWYodD10aGlzLl92YWxpZGF0ZVJhbmdlKHQpLHQuc3RhcnRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1t0LnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5zdGFydENvbHVtbi0xLHQuZW5kQ29sdW1uLTEpO2NvbnN0IG49dGhpcy5fZW9sLHI9dC5zdGFydExpbmVOdW1iZXItMSxzPXQuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZyh0LnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGw9cisxO2w8cztsKyspaS5wdXNoKHRoaXMuX2xpbmVzW2xdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3NdLnN1YnN0cmluZygwLHQuZW5kQ29sdW1uLTEpKSxpLmpvaW4obil9b2Zmc2V0QXQodCl7cmV0dXJuIHQ9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih0KSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0odC5saW5lTnVtYmVyLTIpKyh0LmNvbHVtbi0xKX1wb3NpdGlvbkF0KHQpe3Q9TWF0aC5mbG9vcih0KSx0PU1hdGgubWF4KDAsdCksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IG49dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKHQpLHI9dGhpcy5fbGluZXNbbi5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErbi5pbmRleCxjb2x1bW46MStNYXRoLm1pbihuLnJlbWFpbmRlcixyKX19X3ZhbGlkYXRlUmFuZ2UodCl7Y29uc3Qgbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSkscj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixjb2x1bW46dC5lbmRDb2x1bW59KTtyZXR1cm4gbi5saW5lTnVtYmVyIT09dC5zdGFydExpbmVOdW1iZXJ8fG4uY29sdW1uIT09dC5zdGFydENvbHVtbnx8ci5saW5lTnVtYmVyIT09dC5lbmRMaW5lTnVtYmVyfHxyLmNvbHVtbiE9PXQuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOm4uY29sdW1uLGVuZExpbmVOdW1iZXI6ci5saW5lTnVtYmVyLGVuZENvbHVtbjpyLmNvbHVtbn06dH1fdmFsaWRhdGVQb3NpdGlvbih0KXtpZighSi5pc0lQb3NpdGlvbih0KSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb3NpdGlvbiIpO2xldHtsaW5lTnVtYmVyOm4sY29sdW1uOnJ9PXQscz0hMTtpZihuPDEpbj0xLHI9MSxzPSEwO2Vsc2UgaWYobj50aGlzLl9saW5lcy5sZW5ndGgpbj10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1tuLTFdLmxlbmd0aCsxLHM9ITA7ZWxzZXtjb25zdCBpPXRoaXMuX2xpbmVzW24tMV0ubGVuZ3RoKzE7cjwxPyhyPTEscz0hMCk6cj5pJiYocj1pLHM9ITApfXJldHVybiBzP3tsaW5lTnVtYmVyOm4sY29sdW1uOnJ9OnR9fWNsYXNzIFNle2NvbnN0cnVjdG9yKHQsbil7dGhpcy5faG9zdD10LHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PW4sdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwodCl7cmV0dXJuIHRoaXMuX21vZGVsc1t0XX1fZ2V0TW9kZWxzKCl7Y29uc3QgdD1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKG49PnQucHVzaCh0aGlzLl9tb2RlbHNbbl0pKSx0fWFjY2VwdE5ld01vZGVsKHQpe3RoaXMuX21vZGVsc1t0LnVybF09bmV3IHgxKE5lLnBhcnNlKHQudXJsKSx0LmxpbmVzLHQuRU9MLHQudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQodCxuKXtpZighdGhpcy5fbW9kZWxzW3RdKXJldHVybjt0aGlzLl9tb2RlbHNbdF0ub25FdmVudHMobil9YWNjZXB0UmVtb3ZlZE1vZGVsKHQpe3RoaXMuX21vZGVsc1t0XSYmZGVsZXRlIHRoaXMuX21vZGVsc1t0XX1hc3luYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHModCxuLHIpe2NvbnN0IHM9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIHM/VmkuY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHMsbixyKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX1hc3luYyBmaW5kU2VjdGlvbkhlYWRlcnModCxuKXtjb25zdCByPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiByP20xKHIsbik6W119YXN5bmMgY29tcHV0ZURpZmYodCxuLHIscyl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KSxsPXRoaXMuX2dldE1vZGVsKG4pO3JldHVybiFpfHwhbD9udWxsOlNlLmNvbXB1dGVEaWZmKGksbCxyLHMpfXN0YXRpYyBjb21wdXRlRGlmZih0LG4scixzKXtjb25zdCBpPXM9PT0iYWR2YW5jZWQiP3pyLmdldERlZmF1bHQoKTp6ci5nZXRMZWdhY3koKSxsPXQuZ2V0TGluZXNDb250ZW50KCksbz1uLmdldExpbmVzQ29udGVudCgpLHU9aS5jb21wdXRlRGlmZihsLG8sciksYz11LmNoYW5nZXMubGVuZ3RoPjA/ITE6dGhpcy5fbW9kZWxzQXJlSWRlbnRpY2FsKHQsbik7ZnVuY3Rpb24gaChmKXtyZXR1cm4gZi5tYXAoZD0+e3ZhciBtO3JldHVybltkLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixkLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsZC5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLChtPWQuaW5uZXJDaGFuZ2VzKT09PW51bGx8fG09PT12b2lkIDA/dm9pZCAwOm0ubWFwKGc9PltnLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGcub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixnLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixnLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLGcubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZy5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLGcubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLGcubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKV19KX1yZXR1cm57aWRlbnRpY2FsOmMscXVpdEVhcmx5OnUuaGl0VGltZW91dCxjaGFuZ2VzOmgodS5jaGFuZ2VzKSxtb3Zlczp1Lm1vdmVzLm1hcChmPT5bZi5saW5lUmFuZ2VNYXBwaW5nLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixmLmxpbmVSYW5nZU1hcHBpbmcub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxmLmxpbmVSYW5nZU1hcHBpbmcubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLGYubGluZVJhbmdlTWFwcGluZy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGgoZi5jaGFuZ2VzKV0pfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbCh0LG4pe2NvbnN0IHI9dC5nZXRMaW5lQ291bnQoKSxzPW4uZ2V0TGluZUNvdW50KCk7aWYociE9PXMpcmV0dXJuITE7Zm9yKGxldCBpPTE7aTw9cjtpKyspe2NvbnN0IGw9dC5nZXRMaW5lQ29udGVudChpKSxvPW4uZ2V0TGluZUNvbnRlbnQoaSk7aWYobCE9PW8pcmV0dXJuITF9cmV0dXJuITB9YXN5bmMgY29tcHV0ZU1vcmVNaW5pbWFsRWRpdHModCxuLHIpe2NvbnN0IHM9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIXMpcmV0dXJuIG47Y29uc3QgaT1bXTtsZXQgbDtuPW4uc2xpY2UoMCkuc29ydCgodSxjKT0+e2lmKHUucmFuZ2UmJmMucmFuZ2UpcmV0dXJuIFAuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKHUucmFuZ2UsYy5yYW5nZSk7Y29uc3QgaD11LnJhbmdlPzA6MSxmPWMucmFuZ2U/MDoxO3JldHVybiBoLWZ9KTtsZXQgbz0wO2ZvcihsZXQgdT0xO3U8bi5sZW5ndGg7dSsrKVAuZ2V0RW5kUG9zaXRpb24obltvXS5yYW5nZSkuZXF1YWxzKFAuZ2V0U3RhcnRQb3NpdGlvbihuW3VdLnJhbmdlKSk/KG5bb10ucmFuZ2U9UC5mcm9tUG9zaXRpb25zKFAuZ2V0U3RhcnRQb3NpdGlvbihuW29dLnJhbmdlKSxQLmdldEVuZFBvc2l0aW9uKG5bdV0ucmFuZ2UpKSxuW29dLnRleHQrPW5bdV0udGV4dCk6KG8rKyxuW29dPW5bdV0pO24ubGVuZ3RoPW8rMTtmb3IobGV0e3JhbmdlOnUsdGV4dDpjLGVvbDpofW9mIG4pe2lmKHR5cGVvZiBoPT0ibnVtYmVyIiYmKGw9aCksUC5pc0VtcHR5KHUpJiYhYyljb250aW51ZTtjb25zdCBmPXMuZ2V0VmFsdWVJblJhbmdlKHUpO2lmKGM9Yy5yZXBsYWNlKC9cclxufFxufFxyL2cscy5lb2wpLGY9PT1jKWNvbnRpbnVlO2lmKE1hdGgubWF4KGMubGVuZ3RoLGYubGVuZ3RoKT5TZS5fZGlmZkxpbWl0KXtpLnB1c2goe3JhbmdlOnUsdGV4dDpjfSk7Y29udGludWV9Y29uc3QgZD1WcyhmLGMsciksbT1zLm9mZnNldEF0KFAubGlmdCh1KS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBnIG9mIGQpe2NvbnN0IHg9cy5wb3NpdGlvbkF0KG0rZy5vcmlnaW5hbFN0YXJ0KSx2PXMucG9zaXRpb25BdChtK2cub3JpZ2luYWxTdGFydCtnLm9yaWdpbmFsTGVuZ3RoKSxOPXt0ZXh0OmMuc3Vic3RyKGcubW9kaWZpZWRTdGFydCxnLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOngubGluZU51bWJlcixzdGFydENvbHVtbjp4LmNvbHVtbixlbmRMaW5lTnVtYmVyOnYubGluZU51bWJlcixlbmRDb2x1bW46di5jb2x1bW59fTtzLmdldFZhbHVlSW5SYW5nZShOLnJhbmdlKSE9PU4udGV4dCYmaS5wdXNoKE4pfX1yZXR1cm4gdHlwZW9mIGw9PSJudW1iZXIiJiZpLnB1c2goe2VvbDpsLHRleHQ6IiIscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjowLHN0YXJ0Q29sdW1uOjAsZW5kTGluZU51bWJlcjowLGVuZENvbHVtbjowfX0pLGl9YXN5bmMgY29tcHV0ZUxpbmtzKHQpe2NvbnN0IG49dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIG4/Ymkobik6bnVsbH1hc3luYyBjb21wdXRlRGVmYXVsdERvY3VtZW50Q29sb3JzKHQpe2NvbnN0IG49dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIG4/ZjEobik6bnVsbH1hc3luYyB0ZXh0dWFsU3VnZ2VzdCh0LG4scixzKXtjb25zdCBpPW5ldyBldCxsPW5ldyBSZWdFeHAocixzKSxvPW5ldyBTZXQ7ZTpmb3IoY29uc3QgdSBvZiB0KXtjb25zdCBjPXRoaXMuX2dldE1vZGVsKHUpO2lmKGMpe2Zvcihjb25zdCBoIG9mIGMud29yZHMobCkpaWYoIShoPT09bnx8IWlzTmFOKE51bWJlcihoKSkpJiYoby5hZGQoaCksby5zaXplPlNlLl9zdWdnZXN0aW9uc0xpbWl0KSlicmVhayBlfX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShvKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19YXN5bmMgY29tcHV0ZVdvcmRSYW5nZXModCxuLHIscyl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBsPW5ldyBSZWdFeHAocixzKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB1PW4uc3RhcnRMaW5lTnVtYmVyO3U8bi5lbmRMaW5lTnVtYmVyO3UrKyl7Y29uc3QgYz1pLmdldExpbmVXb3Jkcyh1LGwpO2Zvcihjb25zdCBoIG9mIGMpe2lmKCFpc05hTihOdW1iZXIoaC53b3JkKSkpY29udGludWU7bGV0IGY9b1toLndvcmRdO2Z8fChmPVtdLG9baC53b3JkXT1mKSxmLnB1c2goe3N0YXJ0TGluZU51bWJlcjp1LHN0YXJ0Q29sdW1uOmguc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp1LGVuZENvbHVtbjpoLmVuZENvbHVtbn0pfX1yZXR1cm4gb31hc3luYyBuYXZpZ2F0ZVZhbHVlU2V0KHQsbixyLHMsaSl7Y29uc3QgbD10aGlzLl9nZXRNb2RlbCh0KTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBvPW5ldyBSZWdFeHAocyxpKTtuLnN0YXJ0Q29sdW1uPT09bi5lbmRDb2x1bW4mJihuPXtzdGFydExpbmVOdW1iZXI6bi5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46bi5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOm4uZW5kTGluZU51bWJlcixlbmRDb2x1bW46bi5lbmRDb2x1bW4rMX0pO2NvbnN0IHU9bC5nZXRWYWx1ZUluUmFuZ2UobiksYz1sLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOm4uc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjpuLnN0YXJ0Q29sdW1ufSxvKTtpZighYylyZXR1cm4gbnVsbDtjb25zdCBoPWwuZ2V0VmFsdWVJblJhbmdlKGMpO3JldHVybiBUdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KG4sdSxjLGgscil9bG9hZEZvcmVpZ25Nb2R1bGUodCxuLHIpe2NvbnN0IGw9e2hvc3Q6dXMociwobyx1KT0+dGhpcy5faG9zdC5maHIobyx1KSksZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX07cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KGwsbiksUHJvbWlzZS5yZXNvbHZlKHZ0KHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcih0LG4pe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHx0eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVt0XSE9ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIit0KSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVt0XS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLG4pKX1jYXRjaChyKXtyZXR1cm4gUHJvbWlzZS5yZWplY3Qocil9fX1TZS5fZGlmZkxpbWl0PTFlNSxTZS5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsdHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiImJihnbG9iYWxUaGlzLm1vbmFjbz1SaSgpKTtsZXQgSnQ9ITE7ZnVuY3Rpb24gcDEoZSl7aWYoSnQpcmV0dXJuO0p0PSEwO2NvbnN0IHQ9bmV3IERzKG49PntnbG9iYWxUaGlzLnBvc3RNZXNzYWdlKG4pfSxuPT5uZXcgU2UobixlKSk7Z2xvYmFsVGhpcy5vbm1lc3NhZ2U9bj0+e3Qub25tZXNzYWdlKG4uZGF0YSl9fWdsb2JhbFRoaXMub25tZXNzYWdlPWU9PntKdHx8cDEobnVsbCl9fSkoKTsK",m=l=>Uint8Array.from(atob(l),Z=>Z.charCodeAt(0)),d=typeof window<"u"&&window.Blob&&new Blob([m(c)],{type:"text/javascript;charset=utf-8"});function W(l){let Z;try{if(Z=d&&(window.URL||window.webkitURL).createObjectURL(d),!Z)throw"";const b=new Worker(Z,{name:l==null?void 0:l.name});return b.addEventListener("error",()=>{(window.URL||window.webkitURL).revokeObjectURL(Z)}),b}catch(b){return new Worker("data:text/javascript;base64,"+c,{name:l==null?void 0:l.name})}finally{Z&&(window.URL||window.webkitURL).revokeObjectURL(Z)}}export{W as default};
|
|
1
|
+
const c="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NsYXNzIFhye2NvbnN0cnVjdG9yKCl7dGhpcy5saXN0ZW5lcnM9W10sdGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyPWZ1bmN0aW9uKHQpe3NldFRpbWVvdXQoKCk9Pnt0aHJvdyB0LnN0YWNrP0FlLmlzRXJyb3JOb1RlbGVtZXRyeSh0KT9uZXcgQWUodC5tZXNzYWdlK2AKCmArdC5zdGFjayk6bmV3IEVycm9yKHQubWVzc2FnZStgCgpgK3Quc3RhY2spOnR9LDApfX1lbWl0KHQpe3RoaXMubGlzdGVuZXJzLmZvckVhY2gobj0+e24odCl9KX1vblVuZXhwZWN0ZWRFcnJvcih0KXt0aGlzLnVuZXhwZWN0ZWRFcnJvckhhbmRsZXIodCksdGhpcy5lbWl0KHQpfW9uVW5leHBlY3RlZEV4dGVybmFsRXJyb3IodCl7dGhpcy51bmV4cGVjdGVkRXJyb3JIYW5kbGVyKHQpfX1jb25zdCBKcj1uZXcgWHI7ZnVuY3Rpb24gWXQoZSl7WXIoZSl8fEpyLm9uVW5leHBlY3RlZEVycm9yKGUpfWZ1bmN0aW9uIFp0KGUpe2lmKGUgaW5zdGFuY2VvZiBFcnJvcil7Y29uc3R7bmFtZTp0LG1lc3NhZ2U6bn09ZSxyPWUuc3RhY2t0cmFjZXx8ZS5zdGFjaztyZXR1cm57JGlzRXJyb3I6ITAsbmFtZTp0LG1lc3NhZ2U6bixzdGFjazpyLG5vVGVsZW1ldHJ5OkFlLmlzRXJyb3JOb1RlbGVtZXRyeShlKX19cmV0dXJuIGV9Y29uc3QgYnQ9IkNhbmNlbGVkIjtmdW5jdGlvbiBZcihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIFpyPyEwOmUgaW5zdGFuY2VvZiBFcnJvciYmZS5uYW1lPT09YnQmJmUubWVzc2FnZT09PWJ0fWNsYXNzIFpyIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoKXtzdXBlcihidCksdGhpcy5uYW1lPXRoaXMubWVzc2FnZX19Y2xhc3MgQWUgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLm5hbWU9IkNvZGVFeHBlY3RlZEVycm9yIn1zdGF0aWMgZnJvbUVycm9yKHQpe2lmKHQgaW5zdGFuY2VvZiBBZSlyZXR1cm4gdDtjb25zdCBuPW5ldyBBZTtyZXR1cm4gbi5tZXNzYWdlPXQubWVzc2FnZSxuLnN0YWNrPXQuc3RhY2ssbn1zdGF0aWMgaXNFcnJvck5vVGVsZW1ldHJ5KHQpe3JldHVybiB0Lm5hbWU9PT0iQ29kZUV4cGVjdGVkRXJyb3IifX1jbGFzcyBjZSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQpe3N1cGVyKHR8fCJBbiB1bmV4cGVjdGVkIGJ1ZyBvY2N1cnJlZC4iKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcyxjZS5wcm90b3R5cGUpfX1mdW5jdGlvbiBLcihlLHQpe2NvbnN0IG49dGhpcztsZXQgcj0hMSxzO3JldHVybiBmdW5jdGlvbigpe3JldHVybiByfHwocj0hMCxzPWUuYXBwbHkobixhcmd1bWVudHMpKSxzfX12YXIgWmU7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoXyl7cmV0dXJuIF8mJnR5cGVvZiBfPT0ib2JqZWN0IiYmdHlwZW9mIF9bU3ltYm9sLml0ZXJhdG9yXT09ImZ1bmN0aW9uIn1lLmlzPXQ7Y29uc3Qgbj1PYmplY3QuZnJlZXplKFtdKTtmdW5jdGlvbiByKCl7cmV0dXJuIG59ZS5lbXB0eT1yO2Z1bmN0aW9uKnMoXyl7eWllbGQgX31lLnNpbmdsZT1zO2Z1bmN0aW9uIGkoXyl7cmV0dXJuIHQoXyk/XzpzKF8pfWUud3JhcD1pO2Z1bmN0aW9uIGwoXyl7cmV0dXJuIF98fG59ZS5mcm9tPWw7ZnVuY3Rpb24qbyhfKXtmb3IobGV0IEw9Xy5sZW5ndGgtMTtMPj0wO0wtLSl5aWVsZCBfW0xdfWUucmV2ZXJzZT1vO2Z1bmN0aW9uIHUoXyl7cmV0dXJuIV98fF9bU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lPT09ITB9ZS5pc0VtcHR5PXU7ZnVuY3Rpb24gYyhfKXtyZXR1cm4gX1tTeW1ib2wuaXRlcmF0b3JdKCkubmV4dCgpLnZhbHVlfWUuZmlyc3Q9YztmdW5jdGlvbiBoKF8sTCl7Zm9yKGNvbnN0IHAgb2YgXylpZihMKHApKXJldHVybiEwO3JldHVybiExfWUuc29tZT1oO2Z1bmN0aW9uIGYoXyxMKXtmb3IoY29uc3QgcCBvZiBfKWlmKEwocCkpcmV0dXJuIHB9ZS5maW5kPWY7ZnVuY3Rpb24qZChfLEwpe2Zvcihjb25zdCBwIG9mIF8pTChwKSYmKHlpZWxkIHApfWUuZmlsdGVyPWQ7ZnVuY3Rpb24qbShfLEwpe2xldCBwPTA7Zm9yKGNvbnN0IFIgb2YgXyl5aWVsZCBMKFIscCsrKX1lLm1hcD1tO2Z1bmN0aW9uKmcoLi4uXyl7Zm9yKGNvbnN0IEwgb2YgXyl5aWVsZCpMfWUuY29uY2F0PWc7ZnVuY3Rpb24geChfLEwscCl7bGV0IFI9cDtmb3IoY29uc3QgeSBvZiBfKVI9TChSLHkpO3JldHVybiBSfWUucmVkdWNlPXg7ZnVuY3Rpb24qdihfLEwscD1fLmxlbmd0aCl7Zm9yKEw8MCYmKEwrPV8ubGVuZ3RoKSxwPDA/cCs9Xy5sZW5ndGg6cD5fLmxlbmd0aCYmKHA9Xy5sZW5ndGgpO0w8cDtMKyspeWllbGQgX1tMXX1lLnNsaWNlPXY7ZnVuY3Rpb24gTihfLEw9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKXtjb25zdCBwPVtdO2lmKEw9PT0wKXJldHVybltwLF9dO2NvbnN0IFI9X1tTeW1ib2wuaXRlcmF0b3JdKCk7Zm9yKGxldCB5PTA7eTxMO3krKyl7Y29uc3QgRT1SLm5leHQoKTtpZihFLmRvbmUpcmV0dXJuW3AsZS5lbXB0eSgpXTtwLnB1c2goRS52YWx1ZSl9cmV0dXJuW3Ase1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIFJ9fV19ZS5jb25zdW1lPU47YXN5bmMgZnVuY3Rpb24gUyhfKXtjb25zdCBMPVtdO2ZvciBhd2FpdChjb25zdCBwIG9mIF8pTC5wdXNoKHApO3JldHVybiBQcm9taXNlLnJlc29sdmUoTCl9ZS5hc3luY1RvQXJyYXk9U30pKFplfHwoWmU9e30pKTtmdW5jdGlvbiBOMShlKXtyZXR1cm4gZX1mdW5jdGlvbiBTMShlLHQpe31mdW5jdGlvbiBLdChlKXtpZihaZS5pcyhlKSl7Y29uc3QgdD1bXTtmb3IoY29uc3QgbiBvZiBlKWlmKG4pdHJ5e24uZGlzcG9zZSgpfWNhdGNoKHIpe3QucHVzaChyKX1pZih0Lmxlbmd0aD09PTEpdGhyb3cgdFswXTtpZih0Lmxlbmd0aD4xKXRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcih0LCJFbmNvdW50ZXJlZCBlcnJvcnMgd2hpbGUgZGlzcG9zaW5nIG9mIHN0b3JlIik7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106ZX1lbHNlIGlmKGUpcmV0dXJuIGUuZGlzcG9zZSgpLGV9ZnVuY3Rpb24gZXMoLi4uZSl7cmV0dXJuIEtlKCgpPT5LdChlKSl9ZnVuY3Rpb24gS2UoZSl7cmV0dXJue2Rpc3Bvc2U6S3IoKCk9PntlKCl9KX19Y2xhc3MgUmV7Y29uc3RydWN0b3IoKXt0aGlzLl90b0Rpc3Bvc2U9bmV3IFNldCx0aGlzLl9pc0Rpc3Bvc2VkPSExfWRpc3Bvc2UoKXt0aGlzLl9pc0Rpc3Bvc2VkfHwodGhpcy5faXNEaXNwb3NlZD0hMCx0aGlzLmNsZWFyKCkpfWdldCBpc0Rpc3Bvc2VkKCl7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWR9Y2xlYXIoKXtpZih0aGlzLl90b0Rpc3Bvc2Uuc2l6ZSE9PTApdHJ5e0t0KHRoaXMuX3RvRGlzcG9zZSl9ZmluYWxseXt0aGlzLl90b0Rpc3Bvc2UuY2xlYXIoKX19YWRkKHQpe2lmKCF0KXJldHVybiB0O2lmKHQ9PT10aGlzKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZ2lzdGVyIGEgZGlzcG9zYWJsZSBvbiBpdHNlbGYhIik7cmV0dXJuIHRoaXMuX2lzRGlzcG9zZWQ/UmUuRElTQUJMRV9ESVNQT1NFRF9XQVJOSU5HfHxjb25zb2xlLndhcm4obmV3IEVycm9yKCJUcnlpbmcgdG8gYWRkIGEgZGlzcG9zYWJsZSB0byBhIERpc3Bvc2FibGVTdG9yZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZGlzcG9zZWQgb2YuIFRoZSBhZGRlZCBvYmplY3Qgd2lsbCBiZSBsZWFrZWQhIikuc3RhY2spOnRoaXMuX3RvRGlzcG9zZS5hZGQodCksdH1kZWxldGVBbmRMZWFrKHQpe3QmJnRoaXMuX3RvRGlzcG9zZS5oYXModCkmJnRoaXMuX3RvRGlzcG9zZS5kZWxldGUodCl9fVJlLkRJU0FCTEVfRElTUE9TRURfV0FSTklORz0hMTtjbGFzcyBXZXtjb25zdHJ1Y3Rvcigpe3RoaXMuX3N0b3JlPW5ldyBSZSx0aGlzLl9zdG9yZX1kaXNwb3NlKCl7dGhpcy5fc3RvcmUuZGlzcG9zZSgpfV9yZWdpc3Rlcih0KXtpZih0PT09dGhpcyl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWdpc3RlciBhIGRpc3Bvc2FibGUgb24gaXRzZWxmISIpO3JldHVybiB0aGlzLl9zdG9yZS5hZGQodCl9fVdlLk5vbmU9T2JqZWN0LmZyZWV6ZSh7ZGlzcG9zZSgpe319KTtjbGFzcyBVe2NvbnN0cnVjdG9yKHQpe3RoaXMuZWxlbWVudD10LHRoaXMubmV4dD1VLlVuZGVmaW5lZCx0aGlzLnByZXY9VS5VbmRlZmluZWR9fVUuVW5kZWZpbmVkPW5ldyBVKHZvaWQgMCk7Y2xhc3MgdHN7Y29uc3RydWN0b3IoKXt0aGlzLl9maXJzdD1VLlVuZGVmaW5lZCx0aGlzLl9sYXN0PVUuVW5kZWZpbmVkLHRoaXMuX3NpemU9MH1nZXQgc2l6ZSgpe3JldHVybiB0aGlzLl9zaXplfWlzRW1wdHkoKXtyZXR1cm4gdGhpcy5fZmlyc3Q9PT1VLlVuZGVmaW5lZH1jbGVhcigpe2xldCB0PXRoaXMuX2ZpcnN0O2Zvcig7dCE9PVUuVW5kZWZpbmVkOyl7Y29uc3Qgbj10Lm5leHQ7dC5wcmV2PVUuVW5kZWZpbmVkLHQubmV4dD1VLlVuZGVmaW5lZCx0PW59dGhpcy5fZmlyc3Q9VS5VbmRlZmluZWQsdGhpcy5fbGFzdD1VLlVuZGVmaW5lZCx0aGlzLl9zaXplPTB9dW5zaGlmdCh0KXtyZXR1cm4gdGhpcy5faW5zZXJ0KHQsITEpfXB1c2godCl7cmV0dXJuIHRoaXMuX2luc2VydCh0LCEwKX1faW5zZXJ0KHQsbil7Y29uc3Qgcj1uZXcgVSh0KTtpZih0aGlzLl9maXJzdD09PVUuVW5kZWZpbmVkKXRoaXMuX2ZpcnN0PXIsdGhpcy5fbGFzdD1yO2Vsc2UgaWYobil7Y29uc3QgaT10aGlzLl9sYXN0O3RoaXMuX2xhc3Q9cixyLnByZXY9aSxpLm5leHQ9cn1lbHNle2NvbnN0IGk9dGhpcy5fZmlyc3Q7dGhpcy5fZmlyc3Q9cixyLm5leHQ9aSxpLnByZXY9cn10aGlzLl9zaXplKz0xO2xldCBzPSExO3JldHVybigpPT57c3x8KHM9ITAsdGhpcy5fcmVtb3ZlKHIpKX19c2hpZnQoKXtpZih0aGlzLl9maXJzdCE9PVUuVW5kZWZpbmVkKXtjb25zdCB0PXRoaXMuX2ZpcnN0LmVsZW1lbnQ7cmV0dXJuIHRoaXMuX3JlbW92ZSh0aGlzLl9maXJzdCksdH19cG9wKCl7aWYodGhpcy5fbGFzdCE9PVUuVW5kZWZpbmVkKXtjb25zdCB0PXRoaXMuX2xhc3QuZWxlbWVudDtyZXR1cm4gdGhpcy5fcmVtb3ZlKHRoaXMuX2xhc3QpLHR9fV9yZW1vdmUodCl7aWYodC5wcmV2IT09VS5VbmRlZmluZWQmJnQubmV4dCE9PVUuVW5kZWZpbmVkKXtjb25zdCBuPXQucHJldjtuLm5leHQ9dC5uZXh0LHQubmV4dC5wcmV2PW59ZWxzZSB0LnByZXY9PT1VLlVuZGVmaW5lZCYmdC5uZXh0PT09VS5VbmRlZmluZWQ/KHRoaXMuX2ZpcnN0PVUuVW5kZWZpbmVkLHRoaXMuX2xhc3Q9VS5VbmRlZmluZWQpOnQubmV4dD09PVUuVW5kZWZpbmVkPyh0aGlzLl9sYXN0PXRoaXMuX2xhc3QucHJldix0aGlzLl9sYXN0Lm5leHQ9VS5VbmRlZmluZWQpOnQucHJldj09PVUuVW5kZWZpbmVkJiYodGhpcy5fZmlyc3Q9dGhpcy5fZmlyc3QubmV4dCx0aGlzLl9maXJzdC5wcmV2PVUuVW5kZWZpbmVkKTt0aGlzLl9zaXplLT0xfSpbU3ltYm9sLml0ZXJhdG9yXSgpe2xldCB0PXRoaXMuX2ZpcnN0O2Zvcig7dCE9PVUuVW5kZWZpbmVkOyl5aWVsZCB0LmVsZW1lbnQsdD10Lm5leHR9fWNvbnN0IG5zPWdsb2JhbFRoaXMucGVyZm9ybWFuY2UmJnR5cGVvZiBnbG9iYWxUaGlzLnBlcmZvcm1hbmNlLm5vdz09ImZ1bmN0aW9uIjtjbGFzcyBldHtzdGF0aWMgY3JlYXRlKHQpe3JldHVybiBuZXcgZXQodCl9Y29uc3RydWN0b3IodCl7dGhpcy5fbm93PW5zJiZ0PT09ITE/RGF0ZS5ub3c6Z2xvYmFsVGhpcy5wZXJmb3JtYW5jZS5ub3cuYmluZChnbG9iYWxUaGlzLnBlcmZvcm1hbmNlKSx0aGlzLl9zdGFydFRpbWU9dGhpcy5fbm93KCksdGhpcy5fc3RvcFRpbWU9LTF9c3RvcCgpe3RoaXMuX3N0b3BUaW1lPXRoaXMuX25vdygpfXJlc2V0KCl7dGhpcy5fc3RhcnRUaW1lPXRoaXMuX25vdygpLHRoaXMuX3N0b3BUaW1lPS0xfWVsYXBzZWQoKXtyZXR1cm4gdGhpcy5fc3RvcFRpbWUhPT0tMT90aGlzLl9zdG9wVGltZS10aGlzLl9zdGFydFRpbWU6dGhpcy5fbm93KCktdGhpcy5fc3RhcnRUaW1lfX12YXIgX3Q7KGZ1bmN0aW9uKGUpe2UuTm9uZT0oKT0+V2UuTm9uZTtmdW5jdGlvbiB0KHcsYil7cmV0dXJuIGYodywoKT0+e30sMCx2b2lkIDAsITAsdm9pZCAwLGIpfWUuZGVmZXI9dDtmdW5jdGlvbiBuKHcpe3JldHVybihiLEM9bnVsbCxBKT0+e2xldCBrPSExLFQ7cmV0dXJuIFQ9dyhxPT57aWYoIWspcmV0dXJuIFQ/VC5kaXNwb3NlKCk6az0hMCxiLmNhbGwoQyxxKX0sbnVsbCxBKSxrJiZULmRpc3Bvc2UoKSxUfX1lLm9uY2U9bjtmdW5jdGlvbiByKHcsYixDKXtyZXR1cm4gYygoQSxrPW51bGwsVCk9PncocT0+QS5jYWxsKGssYihxKSksbnVsbCxUKSxDKX1lLm1hcD1yO2Z1bmN0aW9uIHModyxiLEMpe3JldHVybiBjKChBLGs9bnVsbCxUKT0+dyhxPT57YihxKSxBLmNhbGwoayxxKX0sbnVsbCxUKSxDKX1lLmZvckVhY2g9cztmdW5jdGlvbiBpKHcsYixDKXtyZXR1cm4gYygoQSxrPW51bGwsVCk9PncocT0+YihxKSYmQS5jYWxsKGsscSksbnVsbCxUKSxDKX1lLmZpbHRlcj1pO2Z1bmN0aW9uIGwodyl7cmV0dXJuIHd9ZS5zaWduYWw9bDtmdW5jdGlvbiBvKC4uLncpe3JldHVybihiLEM9bnVsbCxBKT0+e2NvbnN0IGs9ZXMoLi4udy5tYXAoVD0+VChxPT5iLmNhbGwoQyxxKSkpKTtyZXR1cm4gaChrLEEpfX1lLmFueT1vO2Z1bmN0aW9uIHUodyxiLEMsQSl7bGV0IGs9QztyZXR1cm4gcih3LFQ9PihrPWIoayxUKSxrKSxBKX1lLnJlZHVjZT11O2Z1bmN0aW9uIGModyxiKXtsZXQgQztjb25zdCBBPXtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7Qz13KGsuZmlyZSxrKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtDPy5kaXNwb3NlKCl9fSxrPW5ldyBzZShBKTtyZXR1cm4gYj8uYWRkKGspLGsuZXZlbnR9ZnVuY3Rpb24gaCh3LGIpe3JldHVybiBiIGluc3RhbmNlb2YgQXJyYXk/Yi5wdXNoKHcpOmImJmIuYWRkKHcpLHd9ZnVuY3Rpb24gZih3LGIsQz0xMDAsQT0hMSxrPSExLFQscSl7bGV0IFEsWSxIZSxtdD0wLENlO2NvbnN0IHYxPXtsZWFrV2FybmluZ1RocmVzaG9sZDpULG9uV2lsbEFkZEZpcnN0TGlzdGVuZXIoKXtRPXcodzE9PnttdCsrLFk9YihZLHcxKSxBJiYhSGUmJihndC5maXJlKFkpLFk9dm9pZCAwKSxDZT0oKT0+e2NvbnN0IEwxPVk7WT12b2lkIDAsSGU9dm9pZCAwLCghQXx8bXQ+MSkmJmd0LmZpcmUoTDEpLG10PTB9LHR5cGVvZiBDPT0ibnVtYmVyIj8oY2xlYXJUaW1lb3V0KEhlKSxIZT1zZXRUaW1lb3V0KENlLEMpKTpIZT09PXZvaWQgMCYmKEhlPTAscXVldWVNaWNyb3Rhc2soQ2UpKX0pfSxvbldpbGxSZW1vdmVMaXN0ZW5lcigpe2smJm10PjAmJkNlPy4oKX0sb25EaWRSZW1vdmVMYXN0TGlzdGVuZXIoKXtDZT12b2lkIDAsUS5kaXNwb3NlKCl9fSxndD1uZXcgc2UodjEpO3JldHVybiBxPy5hZGQoZ3QpLGd0LmV2ZW50fWUuZGVib3VuY2U9ZjtmdW5jdGlvbiBkKHcsYj0wLEMpe3JldHVybiBlLmRlYm91bmNlKHcsKEEsayk9PkE/KEEucHVzaChrKSxBKTpba10sYix2b2lkIDAsITAsdm9pZCAwLEMpfWUuYWNjdW11bGF0ZT1kO2Z1bmN0aW9uIG0odyxiPShBLGspPT5BPT09ayxDKXtsZXQgQT0hMCxrO3JldHVybiBpKHcsVD0+e2NvbnN0IHE9QXx8IWIoVCxrKTtyZXR1cm4gQT0hMSxrPVQscX0sQyl9ZS5sYXRjaD1tO2Z1bmN0aW9uIGcodyxiLEMpe3JldHVybltlLmZpbHRlcih3LGIsQyksZS5maWx0ZXIodyxBPT4hYihBKSxDKV19ZS5zcGxpdD1nO2Z1bmN0aW9uIHgodyxiPSExLEM9W10sQSl7bGV0IGs9Qy5zbGljZSgpLFQ9dyhZPT57az9rLnB1c2goWSk6US5maXJlKFkpfSk7QSYmQS5hZGQoVCk7Y29uc3QgcT0oKT0+e2s/LmZvckVhY2goWT0+US5maXJlKFkpKSxrPW51bGx9LFE9bmV3IHNlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyKCl7VHx8KFQ9dyhZPT5RLmZpcmUoWSkpLEEmJkEuYWRkKFQpKX0sb25EaWRBZGRGaXJzdExpc3RlbmVyKCl7ayYmKGI/c2V0VGltZW91dChxKTpxKCkpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcigpe1QmJlQuZGlzcG9zZSgpLFQ9bnVsbH19KTtyZXR1cm4gQSYmQS5hZGQoUSksUS5ldmVudH1lLmJ1ZmZlcj14O2Z1bmN0aW9uIHYodyxiKXtyZXR1cm4oQSxrLFQpPT57Y29uc3QgcT1iKG5ldyBTKTtyZXR1cm4gdyhmdW5jdGlvbihRKXtjb25zdCBZPXEuZXZhbHVhdGUoUSk7WSE9PU4mJkEuY2FsbChrLFkpfSx2b2lkIDAsVCl9fWUuY2hhaW49djtjb25zdCBOPVN5bWJvbCgiSGFsdENoYWluYWJsZSIpO2NsYXNzIFN7Y29uc3RydWN0b3IoKXt0aGlzLnN0ZXBzPVtdfW1hcChiKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKGIpLHRoaXN9Zm9yRWFjaChiKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEM9PihiKEMpLEMpKSx0aGlzfWZpbHRlcihiKXtyZXR1cm4gdGhpcy5zdGVwcy5wdXNoKEM9PmIoQyk/QzpOKSx0aGlzfXJlZHVjZShiLEMpe2xldCBBPUM7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChrPT4oQT1iKEEsayksQSkpLHRoaXN9bGF0Y2goYj0oQyxBKT0+Qz09PUEpe2xldCBDPSEwLEE7cmV0dXJuIHRoaXMuc3RlcHMucHVzaChrPT57Y29uc3QgVD1DfHwhYihrLEEpO3JldHVybiBDPSExLEE9ayxUP2s6Tn0pLHRoaXN9ZXZhbHVhdGUoYil7Zm9yKGNvbnN0IEMgb2YgdGhpcy5zdGVwcylpZihiPUMoYiksYj09PU4pYnJlYWs7cmV0dXJuIGJ9fWZ1bmN0aW9uIF8odyxiLEM9QT0+QSl7Y29uc3QgQT0oLi4uUSk9PnEuZmlyZShDKC4uLlEpKSxrPSgpPT53Lm9uKGIsQSksVD0oKT0+dy5yZW1vdmVMaXN0ZW5lcihiLEEpLHE9bmV3IHNlKHtvbldpbGxBZGRGaXJzdExpc3RlbmVyOmssb25EaWRSZW1vdmVMYXN0TGlzdGVuZXI6VH0pO3JldHVybiBxLmV2ZW50fWUuZnJvbU5vZGVFdmVudEVtaXR0ZXI9XztmdW5jdGlvbiBMKHcsYixDPUE9PkEpe2NvbnN0IEE9KC4uLlEpPT5xLmZpcmUoQyguLi5RKSksaz0oKT0+dy5hZGRFdmVudExpc3RlbmVyKGIsQSksVD0oKT0+dy5yZW1vdmVFdmVudExpc3RlbmVyKGIsQSkscT1uZXcgc2Uoe29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6ayxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjpUfSk7cmV0dXJuIHEuZXZlbnR9ZS5mcm9tRE9NRXZlbnRFbWl0dGVyPUw7ZnVuY3Rpb24gcCh3KXtyZXR1cm4gbmV3IFByb21pc2UoYj0+bih3KShiKSl9ZS50b1Byb21pc2U9cDtmdW5jdGlvbiBSKHcpe2NvbnN0IGI9bmV3IHNlO3JldHVybiB3LnRoZW4oQz0+e2IuZmlyZShDKX0sKCk9PntiLmZpcmUodm9pZCAwKX0pLmZpbmFsbHkoKCk9PntiLmRpc3Bvc2UoKX0pLGIuZXZlbnR9ZS5mcm9tUHJvbWlzZT1SO2Z1bmN0aW9uIHkodyxiLEMpe3JldHVybiBiKEMpLHcoQT0+YihBKSl9ZS5ydW5BbmRTdWJzY3JpYmU9eTtjbGFzcyBFe2NvbnN0cnVjdG9yKGIsQyl7dGhpcy5fb2JzZXJ2YWJsZT1iLHRoaXMuX2NvdW50ZXI9MCx0aGlzLl9oYXNDaGFuZ2VkPSExO2NvbnN0IEE9e29uV2lsbEFkZEZpcnN0TGlzdGVuZXI6KCk9PntiLmFkZE9ic2VydmVyKHRoaXMpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e2IucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9fTt0aGlzLmVtaXR0ZXI9bmV3IHNlKEEpLEMmJkMuYWRkKHRoaXMuZW1pdHRlcil9YmVnaW5VcGRhdGUoYil7dGhpcy5fY291bnRlcisrfWhhbmRsZVBvc3NpYmxlQ2hhbmdlKGIpe31oYW5kbGVDaGFuZ2UoYixDKXt0aGlzLl9oYXNDaGFuZ2VkPSEwfWVuZFVwZGF0ZShiKXt0aGlzLl9jb3VudGVyLS0sdGhpcy5fY291bnRlcj09PTAmJih0aGlzLl9vYnNlcnZhYmxlLnJlcG9ydENoYW5nZXMoKSx0aGlzLl9oYXNDaGFuZ2VkJiYodGhpcy5faGFzQ2hhbmdlZD0hMSx0aGlzLmVtaXR0ZXIuZmlyZSh0aGlzLl9vYnNlcnZhYmxlLmdldCgpKSkpfX1mdW5jdGlvbiBJKHcsYil7cmV0dXJuIG5ldyBFKHcsYikuZW1pdHRlci5ldmVudH1lLmZyb21PYnNlcnZhYmxlPUk7ZnVuY3Rpb24gRyh3KXtyZXR1cm4oYixDLEEpPT57bGV0IGs9MCxUPSExO2NvbnN0IHE9e2JlZ2luVXBkYXRlKCl7aysrfSxlbmRVcGRhdGUoKXtrLS0saz09PTAmJih3LnJlcG9ydENoYW5nZXMoKSxUJiYoVD0hMSxiLmNhbGwoQykpKX0saGFuZGxlUG9zc2libGVDaGFuZ2UoKXt9LGhhbmRsZUNoYW5nZSgpe1Q9ITB9fTt3LmFkZE9ic2VydmVyKHEpLHcucmVwb3J0Q2hhbmdlcygpO2NvbnN0IFE9e2Rpc3Bvc2UoKXt3LnJlbW92ZU9ic2VydmVyKHEpfX07cmV0dXJuIEEgaW5zdGFuY2VvZiBSZT9BLmFkZChRKTpBcnJheS5pc0FycmF5KEEpJiZBLnB1c2goUSksUX19ZS5mcm9tT2JzZXJ2YWJsZUxpZ2h0PUd9KShfdHx8KF90PXt9KSk7Y2xhc3MgeWV7Y29uc3RydWN0b3IodCl7dGhpcy5saXN0ZW5lckNvdW50PTAsdGhpcy5pbnZvY2F0aW9uQ291bnQ9MCx0aGlzLmVsYXBzZWRPdmVyYWxsPTAsdGhpcy5kdXJhdGlvbnM9W10sdGhpcy5uYW1lPWAke3R9XyR7eWUuX2lkUG9vbCsrfWAseWUuYWxsLmFkZCh0aGlzKX1zdGFydCh0KXt0aGlzLl9zdG9wV2F0Y2g9bmV3IGV0LHRoaXMubGlzdGVuZXJDb3VudD10fXN0b3AoKXtpZih0aGlzLl9zdG9wV2F0Y2gpe2NvbnN0IHQ9dGhpcy5fc3RvcFdhdGNoLmVsYXBzZWQoKTt0aGlzLmR1cmF0aW9ucy5wdXNoKHQpLHRoaXMuZWxhcHNlZE92ZXJhbGwrPXQsdGhpcy5pbnZvY2F0aW9uQ291bnQrPTEsdGhpcy5fc3RvcFdhdGNoPXZvaWQgMH19fXllLmFsbD1uZXcgU2V0LHllLl9pZFBvb2w9MDtsZXQgcnM9LTE7Y2xhc3Mgc3N7Y29uc3RydWN0b3IodCxuPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTgpLnNsaWNlKDIsNSkpe3RoaXMudGhyZXNob2xkPXQsdGhpcy5uYW1lPW4sdGhpcy5fd2FybkNvdW50ZG93bj0wfWRpc3Bvc2UoKXt2YXIgdDsodD10aGlzLl9zdGFja3MpPT09bnVsbHx8dD09PXZvaWQgMHx8dC5jbGVhcigpfWNoZWNrKHQsbil7Y29uc3Qgcj10aGlzLnRocmVzaG9sZDtpZihyPD0wfHxuPHIpcmV0dXJuO3RoaXMuX3N0YWNrc3x8KHRoaXMuX3N0YWNrcz1uZXcgTWFwKTtjb25zdCBzPXRoaXMuX3N0YWNrcy5nZXQodC52YWx1ZSl8fDA7aWYodGhpcy5fc3RhY2tzLnNldCh0LnZhbHVlLHMrMSksdGhpcy5fd2FybkNvdW50ZG93bi09MSx0aGlzLl93YXJuQ291bnRkb3duPD0wKXt0aGlzLl93YXJuQ291bnRkb3duPXIqLjU7bGV0IGksbD0wO2Zvcihjb25zdFtvLHVdb2YgdGhpcy5fc3RhY2tzKSghaXx8bDx1KSYmKGk9byxsPXUpO2NvbnNvbGUud2FybihgWyR7dGhpcy5uYW1lfV0gcG90ZW50aWFsIGxpc3RlbmVyIExFQUsgZGV0ZWN0ZWQsIGhhdmluZyAke259IGxpc3RlbmVycyBhbHJlYWR5LiBNT1NUIGZyZXF1ZW50IGxpc3RlbmVyICgke2x9KTpgKSxjb25zb2xlLndhcm4oaSl9cmV0dXJuKCk9Pntjb25zdCBpPXRoaXMuX3N0YWNrcy5nZXQodC52YWx1ZSl8fDA7dGhpcy5fc3RhY2tzLnNldCh0LnZhbHVlLGktMSl9fX1jbGFzcyB4dHtzdGF0aWMgY3JlYXRlKCl7dmFyIHQ7cmV0dXJuIG5ldyB4dCgodD1uZXcgRXJyb3IoKS5zdGFjaykhPT1udWxsJiZ0IT09dm9pZCAwP3Q6IiIpfWNvbnN0cnVjdG9yKHQpe3RoaXMudmFsdWU9dH1wcmludCgpe2NvbnNvbGUud2Fybih0aGlzLnZhbHVlLnNwbGl0KGAKYCkuc2xpY2UoMikuam9pbihgCmApKX19Y2xhc3MgcHR7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZT10fX1jb25zdCBpcz0yO2NsYXNzIHNle2NvbnN0cnVjdG9yKHQpe3ZhciBuLHIscyxpLGw7dGhpcy5fc2l6ZT0wLHRoaXMuX29wdGlvbnM9dCx0aGlzLl9sZWFrYWdlTW9uPSEoKG49dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxuPT09dm9pZCAwKSYmbi5sZWFrV2FybmluZ1RocmVzaG9sZD9uZXcgc3MoKHM9KHI9dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxyPT09dm9pZCAwP3ZvaWQgMDpyLmxlYWtXYXJuaW5nVGhyZXNob2xkKSE9PW51bGwmJnMhPT12b2lkIDA/czpycyk6dm9pZCAwLHRoaXMuX3BlcmZNb249ISgoaT10aGlzLl9vcHRpb25zKT09PW51bGx8fGk9PT12b2lkIDApJiZpLl9wcm9mTmFtZT9uZXcgeWUodGhpcy5fb3B0aW9ucy5fcHJvZk5hbWUpOnZvaWQgMCx0aGlzLl9kZWxpdmVyeVF1ZXVlPShsPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8bD09PXZvaWQgMD92b2lkIDA6bC5kZWxpdmVyeVF1ZXVlfWRpc3Bvc2UoKXt2YXIgdCxuLHIsczt0aGlzLl9kaXNwb3NlZHx8KHRoaXMuX2Rpc3Bvc2VkPSEwLCgodD10aGlzLl9kZWxpdmVyeVF1ZXVlKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQuY3VycmVudCk9PT10aGlzJiZ0aGlzLl9kZWxpdmVyeVF1ZXVlLnJlc2V0KCksdGhpcy5fbGlzdGVuZXJzJiYodGhpcy5fbGlzdGVuZXJzPXZvaWQgMCx0aGlzLl9zaXplPTApLChyPShuPXRoaXMuX29wdGlvbnMpPT09bnVsbHx8bj09PXZvaWQgMD92b2lkIDA6bi5vbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcik9PT1udWxsfHxyPT09dm9pZCAwfHxyLmNhbGwobiksKHM9dGhpcy5fbGVha2FnZU1vbik9PT1udWxsfHxzPT09dm9pZCAwfHxzLmRpc3Bvc2UoKSl9Z2V0IGV2ZW50KCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5fZXZlbnQpIT09bnVsbCYmdCE9PXZvaWQgMHx8KHRoaXMuX2V2ZW50PShuLHIscyk9Pnt2YXIgaSxsLG8sdSxjO2lmKHRoaXMuX2xlYWthZ2VNb24mJnRoaXMuX3NpemU+dGhpcy5fbGVha2FnZU1vbi50aHJlc2hvbGQqMylyZXR1cm4gY29uc29sZS53YXJuKGBbJHt0aGlzLl9sZWFrYWdlTW9uLm5hbWV9XSBSRUZVU0VTIHRvIGFjY2VwdCBuZXcgbGlzdGVuZXJzIGJlY2F1c2UgaXQgZXhjZWVkZWQgaXRzIHRocmVzaG9sZCBieSBmYXJgKSxXZS5Ob25lO2lmKHRoaXMuX2Rpc3Bvc2VkKXJldHVybiBXZS5Ob25lO3ImJihuPW4uYmluZChyKSk7Y29uc3QgaD1uZXcgcHQobik7bGV0IGY7dGhpcy5fbGVha2FnZU1vbiYmdGhpcy5fc2l6ZT49TWF0aC5jZWlsKHRoaXMuX2xlYWthZ2VNb24udGhyZXNob2xkKi4yKSYmKGguc3RhY2s9eHQuY3JlYXRlKCksZj10aGlzLl9sZWFrYWdlTW9uLmNoZWNrKGguc3RhY2ssdGhpcy5fc2l6ZSsxKSksdGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycyBpbnN0YW5jZW9mIHB0PygoYz10aGlzLl9kZWxpdmVyeVF1ZXVlKSE9PW51bGwmJmMhPT12b2lkIDB8fCh0aGlzLl9kZWxpdmVyeVF1ZXVlPW5ldyBhcyksdGhpcy5fbGlzdGVuZXJzPVt0aGlzLl9saXN0ZW5lcnMsaF0pOnRoaXMuX2xpc3RlbmVycy5wdXNoKGgpOigobD0oaT10aGlzLl9vcHRpb25zKT09PW51bGx8fGk9PT12b2lkIDA/dm9pZCAwOmkub25XaWxsQWRkRmlyc3RMaXN0ZW5lcik9PT1udWxsfHxsPT09dm9pZCAwfHxsLmNhbGwoaSx0aGlzKSx0aGlzLl9saXN0ZW5lcnM9aCwodT0obz10aGlzLl9vcHRpb25zKT09PW51bGx8fG89PT12b2lkIDA/dm9pZCAwOm8ub25EaWRBZGRGaXJzdExpc3RlbmVyKT09PW51bGx8fHU9PT12b2lkIDB8fHUuY2FsbChvLHRoaXMpKSx0aGlzLl9zaXplKys7Y29uc3QgZD1LZSgoKT0+e2Y/LigpLHRoaXMuX3JlbW92ZUxpc3RlbmVyKGgpfSk7cmV0dXJuIHMgaW5zdGFuY2VvZiBSZT9zLmFkZChkKTpBcnJheS5pc0FycmF5KHMpJiZzLnB1c2goZCksZH0pLHRoaXMuX2V2ZW50fV9yZW1vdmVMaXN0ZW5lcih0KXt2YXIgbixyLHMsaTtpZigocj0obj10aGlzLl9vcHRpb25zKT09PW51bGx8fG49PT12b2lkIDA/dm9pZCAwOm4ub25XaWxsUmVtb3ZlTGlzdGVuZXIpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5jYWxsKG4sdGhpcyksIXRoaXMuX2xpc3RlbmVycylyZXR1cm47aWYodGhpcy5fc2l6ZT09PTEpe3RoaXMuX2xpc3RlbmVycz12b2lkIDAsKGk9KHM9dGhpcy5fb3B0aW9ucyk9PT1udWxsfHxzPT09dm9pZCAwP3ZvaWQgMDpzLm9uRGlkUmVtb3ZlTGFzdExpc3RlbmVyKT09PW51bGx8fGk9PT12b2lkIDB8fGkuY2FsbChzLHRoaXMpLHRoaXMuX3NpemU9MDtyZXR1cm59Y29uc3QgbD10aGlzLl9saXN0ZW5lcnMsbz1sLmluZGV4T2YodCk7aWYobz09PS0xKXRocm93IGNvbnNvbGUubG9nKCJkaXNwb3NlZD8iLHRoaXMuX2Rpc3Bvc2VkKSxjb25zb2xlLmxvZygic2l6ZT8iLHRoaXMuX3NpemUpLGNvbnNvbGUubG9nKCJhcnI/IixKU09OLnN0cmluZ2lmeSh0aGlzLl9saXN0ZW5lcnMpKSxuZXcgRXJyb3IoIkF0dGVtcHRlZCB0byBkaXNwb3NlIHVua25vd24gbGlzdGVuZXIiKTt0aGlzLl9zaXplLS0sbFtvXT12b2lkIDA7Y29uc3QgdT10aGlzLl9kZWxpdmVyeVF1ZXVlLmN1cnJlbnQ9PT10aGlzO2lmKHRoaXMuX3NpemUqaXM8PWwubGVuZ3RoKXtsZXQgYz0wO2ZvcihsZXQgaD0wO2g8bC5sZW5ndGg7aCsrKWxbaF0/bFtjKytdPWxbaF06dSYmKHRoaXMuX2RlbGl2ZXJ5UXVldWUuZW5kLS0sYzx0aGlzLl9kZWxpdmVyeVF1ZXVlLmkmJnRoaXMuX2RlbGl2ZXJ5UXVldWUuaS0tKTtsLmxlbmd0aD1jfX1fZGVsaXZlcih0LG4pe3ZhciByO2lmKCF0KXJldHVybjtjb25zdCBzPSgocj10aGlzLl9vcHRpb25zKT09PW51bGx8fHI9PT12b2lkIDA/dm9pZCAwOnIub25MaXN0ZW5lckVycm9yKXx8WXQ7aWYoIXMpe3QudmFsdWUobik7cmV0dXJufXRyeXt0LnZhbHVlKG4pfWNhdGNoKGkpe3MoaSl9fV9kZWxpdmVyUXVldWUodCl7Y29uc3Qgbj10LmN1cnJlbnQuX2xpc3RlbmVycztmb3IoO3QuaTx0LmVuZDspdGhpcy5fZGVsaXZlcihuW3QuaSsrXSx0LnZhbHVlKTt0LnJlc2V0KCl9ZmlyZSh0KXt2YXIgbixyLHMsaTtpZighKChuPXRoaXMuX2RlbGl2ZXJ5UXVldWUpPT09bnVsbHx8bj09PXZvaWQgMCkmJm4uY3VycmVudCYmKHRoaXMuX2RlbGl2ZXJRdWV1ZSh0aGlzLl9kZWxpdmVyeVF1ZXVlKSwocj10aGlzLl9wZXJmTW9uKT09PW51bGx8fHI9PT12b2lkIDB8fHIuc3RvcCgpKSwocz10aGlzLl9wZXJmTW9uKT09PW51bGx8fHM9PT12b2lkIDB8fHMuc3RhcnQodGhpcy5fc2l6ZSksdGhpcy5fbGlzdGVuZXJzKWlmKHRoaXMuX2xpc3RlbmVycyBpbnN0YW5jZW9mIHB0KXRoaXMuX2RlbGl2ZXIodGhpcy5fbGlzdGVuZXJzLHQpO2Vsc2V7Y29uc3QgbD10aGlzLl9kZWxpdmVyeVF1ZXVlO2wuZW5xdWV1ZSh0aGlzLHQsdGhpcy5fbGlzdGVuZXJzLmxlbmd0aCksdGhpcy5fZGVsaXZlclF1ZXVlKGwpfShpPXRoaXMuX3BlcmZNb24pPT09bnVsbHx8aT09PXZvaWQgMHx8aS5zdG9wKCl9aGFzTGlzdGVuZXJzKCl7cmV0dXJuIHRoaXMuX3NpemU+MH19Y2xhc3MgYXN7Y29uc3RydWN0b3IoKXt0aGlzLmk9LTEsdGhpcy5lbmQ9MH1lbnF1ZXVlKHQsbixyKXt0aGlzLmk9MCx0aGlzLmVuZD1yLHRoaXMuY3VycmVudD10LHRoaXMudmFsdWU9bn1yZXNldCgpe3RoaXMuaT10aGlzLmVuZCx0aGlzLmN1cnJlbnQ9dm9pZCAwLHRoaXMudmFsdWU9dm9pZCAwfX1mdW5jdGlvbiBscyhlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmcifWZ1bmN0aW9uIG9zKGUpe2xldCB0PVtdO2Zvcig7T2JqZWN0LnByb3RvdHlwZSE9PWU7KXQ9dC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkpLGU9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiB0fWZ1bmN0aW9uIHZ0KGUpe2NvbnN0IHQ9W107Zm9yKGNvbnN0IG4gb2Ygb3MoZSkpdHlwZW9mIGVbbl09PSJmdW5jdGlvbiImJnQucHVzaChuKTtyZXR1cm4gdH1mdW5jdGlvbiB1cyhlLHQpe2NvbnN0IG49cz0+ZnVuY3Rpb24oKXtjb25zdCBpPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gdChzLGkpfSxyPXt9O2Zvcihjb25zdCBzIG9mIGUpcltzXT1uKHMpO3JldHVybiByfWxldCBjcz10eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5sb2NhdGlvbiYmZG9jdW1lbnQubG9jYXRpb24uaGFzaC5pbmRleE9mKCJwc2V1ZG89dHJ1ZSIpPj0wO2Z1bmN0aW9uIGhzKGUsdCl7bGV0IG47cmV0dXJuIHQubGVuZ3RoPT09MD9uPWU6bj1lLnJlcGxhY2UoL1x7KFxkKylcfS9nLChyLHMpPT57Y29uc3QgaT1zWzBdLGw9dFtpXTtsZXQgbz1yO3JldHVybiB0eXBlb2YgbD09InN0cmluZyI/bz1sOih0eXBlb2YgbD09Im51bWJlciJ8fHR5cGVvZiBsPT0iYm9vbGVhbiJ8fGw9PT12b2lkIDB8fGw9PT1udWxsKSYmKG89U3RyaW5nKGwpKSxvfSksY3MmJihuPSLvvLsiK24ucmVwbGFjZSgvW2FvdWVpXS9nLCIkJiQmIikrIu+8vSIpLG59ZnVuY3Rpb24gSChlLHQsLi4ubil7cmV0dXJuIGhzKHQsbil9ZnVuY3Rpb24gQzEoZSl7fXZhciB3dCxMdDtjb25zdCBFZT0iZW4iO2xldCBOdD0hMSxTdD0hMSxDdD0hMSx0dCxBdD1FZSxlbj1FZSxmcyxpZTtjb25zdCB3ZT1nbG9iYWxUaGlzO2xldCBYO3R5cGVvZiB3ZS52c2NvZGU8InUiJiZ0eXBlb2Ygd2UudnNjb2RlLnByb2Nlc3M8InUiP1g9d2UudnNjb2RlLnByb2Nlc3M6dHlwZW9mIHByb2Nlc3M8InUiJiZ0eXBlb2YoKHd0PXByb2Nlc3M9PW51bGw/dm9pZCAwOnByb2Nlc3MudmVyc2lvbnMpPT09bnVsbHx8d3Q9PT12b2lkIDA/dm9pZCAwOnd0Lm5vZGUpPT0ic3RyaW5nIiYmKFg9cHJvY2Vzcyk7Y29uc3QgZHM9dHlwZW9mKChMdD1YPy52ZXJzaW9ucyk9PT1udWxsfHxMdD09PXZvaWQgMD92b2lkIDA6THQuZWxlY3Ryb24pPT0ic3RyaW5nIiYmWD8udHlwZT09PSJyZW5kZXJlciI7aWYodHlwZW9mIFg9PSJvYmplY3QiKXtOdD1YLnBsYXRmb3JtPT09IndpbjMyIixTdD1YLnBsYXRmb3JtPT09ImRhcndpbiIsQ3Q9WC5wbGF0Zm9ybT09PSJsaW51eCIsQ3QmJlguZW52LlNOQVAmJlguZW52LlNOQVBfUkVWSVNJT04sWC5lbnYuQ0l8fFguZW52LkJVSUxEX0FSVElGQUNUU1RBR0lOR0RJUkVDVE9SWSx0dD1FZSxBdD1FZTtjb25zdCBlPVguZW52LlZTQ09ERV9OTFNfQ09ORklHO2lmKGUpdHJ5e2NvbnN0IHQ9SlNPTi5wYXJzZShlKSxuPXQuYXZhaWxhYmxlTGFuZ3VhZ2VzWyIqIl07dHQ9dC5sb2NhbGUsZW49dC5vc0xvY2FsZSxBdD1ufHxFZSxmcz10Ll90cmFuc2xhdGlvbnNDb25maWdGaWxlfWNhdGNoe319ZWxzZSB0eXBlb2YgbmF2aWdhdG9yPT0ib2JqZWN0IiYmIWRzPyhpZT1uYXZpZ2F0b3IudXNlckFnZW50LE50PWllLmluZGV4T2YoIldpbmRvd3MiKT49MCxTdD1pZS5pbmRleE9mKCJNYWNpbnRvc2giKT49MCwoaWUuaW5kZXhPZigiTWFjaW50b3NoIik+PTB8fGllLmluZGV4T2YoImlQYWQiKT49MHx8aWUuaW5kZXhPZigiaVBob25lIik+PTApJiZuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4wLEN0PWllLmluZGV4T2YoIkxpbnV4Iik+PTAsaWU/LmluZGV4T2YoIk1vYmkiKT49MCxIKHtrZXk6ImVuc3VyZUxvYWRlclBsdWdpbklzTG9hZGVkIixjb21tZW50Olsie0xvY2tlZH0iXX0sIl8iKSx0dD1FZSxBdD10dCxlbj1uYXZpZ2F0b3IubGFuZ3VhZ2UpOmNvbnNvbGUuZXJyb3IoIlVuYWJsZSB0byByZXNvbHZlIHBsYXRmb3JtLiIpO2NvbnN0IHplPU50LG1zPVN0LG9lPWllLGdzPXR5cGVvZiB3ZS5wb3N0TWVzc2FnZT09ImZ1bmN0aW9uIiYmIXdlLmltcG9ydFNjcmlwdHM7KCgpPT57aWYoZ3Mpe2NvbnN0IGU9W107d2UuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsbj0+e2lmKG4uZGF0YSYmbi5kYXRhLnZzY29kZVNjaGVkdWxlQXN5bmNXb3JrKWZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKyl7Y29uc3QgaT1lW3JdO2lmKGkuaWQ9PT1uLmRhdGEudnNjb2RlU2NoZWR1bGVBc3luY1dvcmspe2Uuc3BsaWNlKHIsMSksaS5jYWxsYmFjaygpO3JldHVybn19fSk7bGV0IHQ9MDtyZXR1cm4gbj0+e2NvbnN0IHI9Kyt0O2UucHVzaCh7aWQ6cixjYWxsYmFjazpufSksd2UucG9zdE1lc3NhZ2Uoe3ZzY29kZVNjaGVkdWxlQXN5bmNXb3JrOnJ9LCIqIil9fXJldHVybiBlPT5zZXRUaW1lb3V0KGUpfSkoKTtjb25zdCBicz0hIShvZSYmb2UuaW5kZXhPZigiQ2hyb21lIik+PTApO29lJiZvZS5pbmRleE9mKCJGaXJlZm94Iik+PTAsIWJzJiZvZSYmb2UuaW5kZXhPZigiU2FmYXJpIik+PTAsb2UmJm9lLmluZGV4T2YoIkVkZy8iKT49MCxvZSYmb2UuaW5kZXhPZigiQW5kcm9pZCIpPj0wO2NsYXNzIF9ze2NvbnN0cnVjdG9yKHQsbj1KU09OLnN0cmluZ2lmeSl7dGhpcy5mbj10LHRoaXMuX2NvbXB1dGVLZXk9bix0aGlzLmxhc3RDYWNoZT12b2lkIDAsdGhpcy5sYXN0QXJnS2V5PXZvaWQgMH1nZXQodCl7Y29uc3Qgbj10aGlzLl9jb21wdXRlS2V5KHQpO3JldHVybiB0aGlzLmxhc3RBcmdLZXkhPT1uJiYodGhpcy5sYXN0QXJnS2V5PW4sdGhpcy5sYXN0Q2FjaGU9dGhpcy5mbih0KSksdGhpcy5sYXN0Q2FjaGV9fWNsYXNzIHRue2NvbnN0cnVjdG9yKHQpe3RoaXMuZXhlY3V0b3I9dCx0aGlzLl9kaWRSdW49ITF9Z2V0IHZhbHVlKCl7aWYoIXRoaXMuX2RpZFJ1bil0cnl7dGhpcy5fdmFsdWU9dGhpcy5leGVjdXRvcigpfWNhdGNoKHQpe3RoaXMuX2Vycm9yPXR9ZmluYWxseXt0aGlzLl9kaWRSdW49ITB9aWYodGhpcy5fZXJyb3IpdGhyb3cgdGhpcy5fZXJyb3I7cmV0dXJuIHRoaXMuX3ZhbHVlfWdldCByYXdWYWx1ZSgpe3JldHVybiB0aGlzLl92YWx1ZX19dmFyIE1lO2Z1bmN0aW9uIHhzKGUpe3JldHVybiBlLnJlcGxhY2UoL1tcXFx7XH1cKlwrXD9cfFxeXCRcLlxbXF1cKFwpXS9nLCJcXCQmIil9ZnVuY3Rpb24gcHMoZSl7cmV0dXJuIGUuc3BsaXQoL1xyXG58XHJ8XG4vKX1mdW5jdGlvbiB2cyhlKXtmb3IobGV0IHQ9MCxuPWUubGVuZ3RoO3Q8bjt0Kyspe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KHQpO2lmKHIhPT0zMiYmciE9PTkpcmV0dXJuIHR9cmV0dXJuLTF9ZnVuY3Rpb24gd3MoZSx0PWUubGVuZ3RoLTEpe2ZvcihsZXQgbj10O24+PTA7bi0tKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtpZihyIT09MzImJnIhPT05KXJldHVybiBufXJldHVybi0xfWZ1bmN0aW9uIG5uKGUpe3JldHVybiBlPj02NSYmZTw9OTB9ZnVuY3Rpb24gUnQoZSl7cmV0dXJuIDU1Mjk2PD1lJiZlPD01NjMxOX1mdW5jdGlvbiBMcyhlKXtyZXR1cm4gNTYzMjA8PWUmJmU8PTU3MzQzfWZ1bmN0aW9uIE5zKGUsdCl7cmV0dXJuKGUtNTUyOTY8PDEwKSsodC01NjMyMCkrNjU1MzZ9ZnVuY3Rpb24gU3MoZSx0LG4pe2NvbnN0IHI9ZS5jaGFyQ29kZUF0KG4pO2lmKFJ0KHIpJiZuKzE8dCl7Y29uc3Qgcz1lLmNoYXJDb2RlQXQobisxKTtpZihMcyhzKSlyZXR1cm4gTnMocixzKX1yZXR1cm4gcn1jb25zdCBDcz0vXltcdFxuXHJceDIwLVx4N0VdKiQvO2Z1bmN0aW9uIEFzKGUpe3JldHVybiBDcy50ZXN0KGUpfWNsYXNzIExle3N0YXRpYyBnZXRJbnN0YW5jZSh0KXtyZXR1cm4gTWUuY2FjaGUuZ2V0KEFycmF5LmZyb20odCkpfXN0YXRpYyBnZXRMb2NhbGVzKCl7cmV0dXJuIE1lLl9sb2NhbGVzLnZhbHVlfWNvbnN0cnVjdG9yKHQpe3RoaXMuY29uZnVzYWJsZURpY3Rpb25hcnk9dH1pc0FtYmlndW91cyh0KXtyZXR1cm4gdGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5oYXModCl9Z2V0UHJpbWFyeUNvbmZ1c2FibGUodCl7cmV0dXJuIHRoaXMuY29uZnVzYWJsZURpY3Rpb25hcnkuZ2V0KHQpfWdldENvbmZ1c2FibGVDb2RlUG9pbnRzKCl7cmV0dXJuIG5ldyBTZXQodGhpcy5jb25mdXNhYmxlRGljdGlvbmFyeS5rZXlzKCkpfX1NZT1MZSxMZS5hbWJpZ3VvdXNDaGFyYWN0ZXJEYXRhPW5ldyB0bigoKT0+SlNPTi5wYXJzZSgneyJfY29tbW9uIjpbODIzMiwzMiw4MjMzLDMyLDU3NjAsMzIsODE5MiwzMiw4MTkzLDMyLDgxOTQsMzIsODE5NSwzMiw4MTk2LDMyLDgxOTcsMzIsODE5OCwzMiw4MjAwLDMyLDgyMDEsMzIsODIwMiwzMiw4Mjg3LDMyLDgxOTksMzIsODIzOSwzMiwyMDQyLDk1LDY1MTAxLDk1LDY1MTAyLDk1LDY1MTAzLDk1LDgyMDgsNDUsODIwOSw0NSw4MjEwLDQ1LDY1MTEyLDQ1LDE3NDgsNDUsODI1OSw0NSw3MjcsNDUsODcyMiw0NSwxMDEzNCw0NSwxMTQ1MCw0NSwxNTQ5LDQ0LDE2NDMsNDQsODIxOCw0NCwxODQsNDQsNDIyMzMsNDQsODk0LDU5LDIzMDcsNTgsMjY5MSw1OCwxNDE3LDU4LDE3OTUsNTgsMTc5Niw1OCw1ODY4LDU4LDY1MDcyLDU4LDYxNDcsNTgsNjE1Myw1OCw4MjgyLDU4LDE0NzUsNTgsNzYwLDU4LDQyODg5LDU4LDg3NTgsNTgsNzIwLDU4LDQyMjM3LDU4LDQ1MSwzMywxMTYwMSwzMyw2NjAsNjMsNTc3LDYzLDI0MjksNjMsNTAzOCw2Myw0MjczMSw2MywxMTkxNDksNDYsODIyOCw0NiwxNzkzLDQ2LDE3OTQsNDYsNDI1MTAsNDYsNjgxNzYsNDYsMTYzMiw0NiwxNzc2LDQ2LDQyMjMyLDQ2LDEzNzMsOTYsNjUyODcsOTYsODIxOSw5Niw4MjQyLDk2LDEzNzAsOTYsMTUyMyw5Niw4MTc1LDk2LDY1MzQ0LDk2LDkwMCw5Niw4MTg5LDk2LDgxMjUsOTYsODEyNyw5Niw4MTkwLDk2LDY5Nyw5Niw4ODQsOTYsNzEyLDk2LDcxNCw5Niw3MTUsOTYsNzU2LDk2LDY5OSw5Niw3MDEsOTYsNzAwLDk2LDcwMiw5Niw0Mjg5Miw5NiwxNDk3LDk2LDIwMzYsOTYsMjAzNyw5Niw1MTk0LDk2LDU4MzYsOTYsOTQwMzMsOTYsOTQwMzQsOTYsNjUzMzksOTEsMTAwODgsNDAsMTAwOTgsNDAsMTIzMDgsNDAsNjQ4MzAsNDAsNjUzNDEsOTMsMTAwODksNDEsMTAwOTksNDEsMTIzMDksNDEsNjQ4MzEsNDEsMTAxMDAsMTIzLDExOTA2MCwxMjMsMTAxMDEsMTI1LDY1MzQyLDk0LDgyNzAsNDIsMTY0NSw0Miw4NzI3LDQyLDY2MzM1LDQyLDU5NDEsNDcsODI1Nyw0Nyw4NzI1LDQ3LDgyNjAsNDcsOTU4NSw0NywxMDE4Nyw0NywxMDc0NCw0NywxMTkzNTQsNDcsMTI3NTUsNDcsMTIzMzksNDcsMTE0NjIsNDcsMjAwMzEsNDcsMTIwMzUsNDcsNjUzNDAsOTIsNjUxMjgsOTIsODcyNiw5MiwxMDE4OSw5MiwxMDc0MSw5MiwxMDc0NSw5MiwxMTkzMTEsOTIsMTE5MzU1LDkyLDEyNzU2LDkyLDIwMDIyLDkyLDEyMDM0LDkyLDQyODcyLDM4LDcwOCw5NCw3MTAsOTQsNTg2OSw0MywxMDEzMyw0Myw2NjIwMyw0Myw4MjQ5LDYwLDEwMDk0LDYwLDcwNiw2MCwxMTkzNTAsNjAsNTE3Niw2MCw1ODEwLDYwLDUxMjAsNjEsMTE4NDAsNjEsMTI0NDgsNjEsNDIyMzksNjEsODI1MCw2MiwxMDA5NSw2Miw3MDcsNjIsMTE5MzUxLDYyLDUxNzEsNjIsOTQwMTUsNjIsODI3NSwxMjYsNzMyLDEyNiw4MTI4LDEyNiw4NzY0LDEyNiw2NTM3MiwxMjQsNjUyOTMsNDUsMTIwNzg0LDUwLDEyMDc5NCw1MCwxMjA4MDQsNTAsMTIwODE0LDUwLDEyMDgyNCw1MCwxMzAwMzQsNTAsNDI4NDIsNTAsNDIzLDUwLDEwMDAsNTAsNDI1NjQsNTAsNTMxMSw1MCw0MjczNSw1MCwxMTkzMDIsNTEsMTIwNzg1LDUxLDEyMDc5NSw1MSwxMjA4MDUsNTEsMTIwODE1LDUxLDEyMDgyNSw1MSwxMzAwMzUsNTEsNDI5MjMsNTEsNTQwLDUxLDQzOSw1MSw0Mjg1OCw1MSwxMTQ2OCw1MSwxMjQ4LDUxLDk0MDExLDUxLDcxODgyLDUxLDEyMDc4Niw1MiwxMjA3OTYsNTIsMTIwODA2LDUyLDEyMDgxNiw1MiwxMjA4MjYsNTIsMTMwMDM2LDUyLDUwNzAsNTIsNzE4NTUsNTIsMTIwNzg3LDUzLDEyMDc5Nyw1MywxMjA4MDcsNTMsMTIwODE3LDUzLDEyMDgyNyw1MywxMzAwMzcsNTMsNDQ0LDUzLDcxODY3LDUzLDEyMDc4OCw1NCwxMjA3OTgsNTQsMTIwODA4LDU0LDEyMDgxOCw1NCwxMjA4MjgsNTQsMTMwMDM4LDU0LDExNDc0LDU0LDUxMDIsNTQsNzE4OTMsNTQsMTE5MzE0LDU1LDEyMDc4OSw1NSwxMjA3OTksNTUsMTIwODA5LDU1LDEyMDgxOSw1NSwxMjA4MjksNTUsMTMwMDM5LDU1LDY2NzcwLDU1LDcxODc4LDU1LDI4MTksNTYsMjUzOCw1NiwyNjY2LDU2LDEyNTEzMSw1NiwxMjA3OTAsNTYsMTIwODAwLDU2LDEyMDgxMCw1NiwxMjA4MjAsNTYsMTIwODMwLDU2LDEzMDA0MCw1Niw1NDcsNTYsNTQ2LDU2LDY2MzMwLDU2LDI2NjMsNTcsMjkyMCw1NywyNTQxLDU3LDM0MzcsNTcsMTIwNzkxLDU3LDEyMDgwMSw1NywxMjA4MTEsNTcsMTIwODIxLDU3LDEyMDgzMSw1NywxMzAwNDEsNTcsNDI4NjIsNTcsMTE0NjYsNTcsNzE4ODQsNTcsNzE4NTIsNTcsNzE4OTQsNTcsOTA4Miw5Nyw2NTM0NSw5NywxMTk4MzQsOTcsMTE5ODg2LDk3LDExOTkzOCw5NywxMTk5OTAsOTcsMTIwMDQyLDk3LDEyMDA5NCw5NywxMjAxNDYsOTcsMTIwMTk4LDk3LDEyMDI1MCw5NywxMjAzMDIsOTcsMTIwMzU0LDk3LDEyMDQwNiw5NywxMjA0NTgsOTcsNTkzLDk3LDk0NSw5NywxMjA1MTQsOTcsMTIwNTcyLDk3LDEyMDYzMCw5NywxMjA2ODgsOTcsMTIwNzQ2LDk3LDY1MzEzLDY1LDExOTgwOCw2NSwxMTk4NjAsNjUsMTE5OTEyLDY1LDExOTk2NCw2NSwxMjAwMTYsNjUsMTIwMDY4LDY1LDEyMDEyMCw2NSwxMjAxNzIsNjUsMTIwMjI0LDY1LDEyMDI3Niw2NSwxMjAzMjgsNjUsMTIwMzgwLDY1LDEyMDQzMiw2NSw5MTMsNjUsMTIwNDg4LDY1LDEyMDU0Niw2NSwxMjA2MDQsNjUsMTIwNjYyLDY1LDEyMDcyMCw2NSw1MDM0LDY1LDU1NzMsNjUsNDIyMjIsNjUsOTQwMTYsNjUsNjYyMDgsNjUsMTE5ODM1LDk4LDExOTg4Nyw5OCwxMTk5MzksOTgsMTE5OTkxLDk4LDEyMDA0Myw5OCwxMjAwOTUsOTgsMTIwMTQ3LDk4LDEyMDE5OSw5OCwxMjAyNTEsOTgsMTIwMzAzLDk4LDEyMDM1NSw5OCwxMjA0MDcsOTgsMTIwNDU5LDk4LDM4OCw5OCw1MDcxLDk4LDUyMzQsOTgsNTU1MSw5OCw2NTMxNCw2Niw4NDkyLDY2LDExOTgwOSw2NiwxMTk4NjEsNjYsMTE5OTEzLDY2LDEyMDAxNyw2NiwxMjAwNjksNjYsMTIwMTIxLDY2LDEyMDE3Myw2NiwxMjAyMjUsNjYsMTIwMjc3LDY2LDEyMDMyOSw2NiwxMjAzODEsNjYsMTIwNDMzLDY2LDQyOTMyLDY2LDkxNCw2NiwxMjA0ODksNjYsMTIwNTQ3LDY2LDEyMDYwNSw2NiwxMjA2NjMsNjYsMTIwNzIxLDY2LDUxMDgsNjYsNTYyMyw2Niw0MjE5Miw2Niw2NjE3OCw2Niw2NjIwOSw2Niw2NjMwNSw2Niw2NTM0Nyw5OSw4NTczLDk5LDExOTgzNiw5OSwxMTk4ODgsOTksMTE5OTQwLDk5LDExOTk5Miw5OSwxMjAwNDQsOTksMTIwMDk2LDk5LDEyMDE0OCw5OSwxMjAyMDAsOTksMTIwMjUyLDk5LDEyMDMwNCw5OSwxMjAzNTYsOTksMTIwNDA4LDk5LDEyMDQ2MCw5OSw3NDI4LDk5LDEwMTAsOTksMTE0MjksOTksNDM5NTEsOTksNjY2MjEsOTksMTI4ODQ0LDY3LDcxOTIyLDY3LDcxOTEzLDY3LDY1MzE1LDY3LDg1NTcsNjcsODQ1MCw2Nyw4NDkzLDY3LDExOTgxMCw2NywxMTk4NjIsNjcsMTE5OTE0LDY3LDExOTk2Niw2NywxMjAwMTgsNjcsMTIwMTc0LDY3LDEyMDIyNiw2NywxMjAyNzgsNjcsMTIwMzMwLDY3LDEyMDM4Miw2NywxMjA0MzQsNjcsMTAxNyw2NywxMTQyOCw2Nyw1MDg3LDY3LDQyMjAyLDY3LDY2MjEwLDY3LDY2MzA2LDY3LDY2NTgxLDY3LDY2ODQ0LDY3LDg1NzQsMTAwLDg1MTgsMTAwLDExOTgzNywxMDAsMTE5ODg5LDEwMCwxMTk5NDEsMTAwLDExOTk5MywxMDAsMTIwMDQ1LDEwMCwxMjAwOTcsMTAwLDEyMDE0OSwxMDAsMTIwMjAxLDEwMCwxMjAyNTMsMTAwLDEyMDMwNSwxMDAsMTIwMzU3LDEwMCwxMjA0MDksMTAwLDEyMDQ2MSwxMDAsMTI4MSwxMDAsNTA5NSwxMDAsNTIzMSwxMDAsNDIxOTQsMTAwLDg1NTgsNjgsODUxNyw2OCwxMTk4MTEsNjgsMTE5ODYzLDY4LDExOTkxNSw2OCwxMTk5NjcsNjgsMTIwMDE5LDY4LDEyMDA3MSw2OCwxMjAxMjMsNjgsMTIwMTc1LDY4LDEyMDIyNyw2OCwxMjAyNzksNjgsMTIwMzMxLDY4LDEyMDM4Myw2OCwxMjA0MzUsNjgsNTAyNCw2OCw1NTk4LDY4LDU2MTAsNjgsNDIxOTUsNjgsODQ5NCwxMDEsNjUzNDksMTAxLDg0OTUsMTAxLDg1MTksMTAxLDExOTgzOCwxMDEsMTE5ODkwLDEwMSwxMTk5NDIsMTAxLDEyMDA0NiwxMDEsMTIwMDk4LDEwMSwxMjAxNTAsMTAxLDEyMDIwMiwxMDEsMTIwMjU0LDEwMSwxMjAzMDYsMTAxLDEyMDM1OCwxMDEsMTIwNDEwLDEwMSwxMjA0NjIsMTAxLDQzODI2LDEwMSwxMjEzLDEwMSw4OTU5LDY5LDY1MzE3LDY5LDg0OTYsNjksMTE5ODEyLDY5LDExOTg2NCw2OSwxMTk5MTYsNjksMTIwMDIwLDY5LDEyMDA3Miw2OSwxMjAxMjQsNjksMTIwMTc2LDY5LDEyMDIyOCw2OSwxMjAyODAsNjksMTIwMzMyLDY5LDEyMDM4NCw2OSwxMjA0MzYsNjksOTE3LDY5LDEyMDQ5Miw2OSwxMjA1NTAsNjksMTIwNjA4LDY5LDEyMDY2Niw2OSwxMjA3MjQsNjksMTE1NzcsNjksNTAzNiw2OSw0MjIyNCw2OSw3MTg0Niw2OSw3MTg1NCw2OSw2NjE4Miw2OSwxMTk4MzksMTAyLDExOTg5MSwxMDIsMTE5OTQzLDEwMiwxMTk5OTUsMTAyLDEyMDA0NywxMDIsMTIwMDk5LDEwMiwxMjAxNTEsMTAyLDEyMDIwMywxMDIsMTIwMjU1LDEwMiwxMjAzMDcsMTAyLDEyMDM1OSwxMDIsMTIwNDExLDEwMiwxMjA0NjMsMTAyLDQzODI5LDEwMiw0MjkwNSwxMDIsMzgzLDEwMiw3ODM3LDEwMiwxNDEyLDEwMiwxMTkzMTUsNzAsODQ5Nyw3MCwxMTk4MTMsNzAsMTE5ODY1LDcwLDExOTkxNyw3MCwxMjAwMjEsNzAsMTIwMDczLDcwLDEyMDEyNSw3MCwxMjAxNzcsNzAsMTIwMjI5LDcwLDEyMDI4MSw3MCwxMjAzMzMsNzAsMTIwMzg1LDcwLDEyMDQzNyw3MCw0MjkwNCw3MCw5ODgsNzAsMTIwNzc4LDcwLDU1NTYsNzAsNDIyMDUsNzAsNzE4NzQsNzAsNzE4NDIsNzAsNjYxODMsNzAsNjYyMTMsNzAsNjY4NTMsNzAsNjUzNTEsMTAzLDg0NTgsMTAzLDExOTg0MCwxMDMsMTE5ODkyLDEwMywxMTk5NDQsMTAzLDEyMDA0OCwxMDMsMTIwMTAwLDEwMywxMjAxNTIsMTAzLDEyMDIwNCwxMDMsMTIwMjU2LDEwMywxMjAzMDgsMTAzLDEyMDM2MCwxMDMsMTIwNDEyLDEwMywxMjA0NjQsMTAzLDYwOSwxMDMsNzU1NSwxMDMsMzk3LDEwMywxNDA5LDEwMywxMTk4MTQsNzEsMTE5ODY2LDcxLDExOTkxOCw3MSwxMTk5NzAsNzEsMTIwMDIyLDcxLDEyMDA3NCw3MSwxMjAxMjYsNzEsMTIwMTc4LDcxLDEyMDIzMCw3MSwxMjAyODIsNzEsMTIwMzM0LDcxLDEyMDM4Niw3MSwxMjA0MzgsNzEsMTI5Miw3MSw1MDU2LDcxLDUxMDcsNzEsNDIxOTgsNzEsNjUzNTIsMTA0LDg0NjIsMTA0LDExOTg0MSwxMDQsMTE5OTQ1LDEwNCwxMTk5OTcsMTA0LDEyMDA0OSwxMDQsMTIwMTAxLDEwNCwxMjAxNTMsMTA0LDEyMDIwNSwxMDQsMTIwMjU3LDEwNCwxMjAzMDksMTA0LDEyMDM2MSwxMDQsMTIwNDEzLDEwNCwxMjA0NjUsMTA0LDEyMTEsMTA0LDEzOTIsMTA0LDUwNTgsMTA0LDY1MzIwLDcyLDg0NTksNzIsODQ2MCw3Miw4NDYxLDcyLDExOTgxNSw3MiwxMTk4NjcsNzIsMTE5OTE5LDcyLDEyMDAyMyw3MiwxMjAxNzksNzIsMTIwMjMxLDcyLDEyMDI4Myw3MiwxMjAzMzUsNzIsMTIwMzg3LDcyLDEyMDQzOSw3Miw5MTksNzIsMTIwNDk0LDcyLDEyMDU1Miw3MiwxMjA2MTAsNzIsMTIwNjY4LDcyLDEyMDcyNiw3MiwxMTQwNiw3Miw1MDUxLDcyLDU1MDAsNzIsNDIyMTUsNzIsNjYyNTUsNzIsNzMxLDEwNSw5MDc1LDEwNSw2NTM1MywxMDUsODU2MCwxMDUsODUwNSwxMDUsODUyMCwxMDUsMTE5ODQyLDEwNSwxMTk4OTQsMTA1LDExOTk0NiwxMDUsMTE5OTk4LDEwNSwxMjAwNTAsMTA1LDEyMDEwMiwxMDUsMTIwMTU0LDEwNSwxMjAyMDYsMTA1LDEyMDI1OCwxMDUsMTIwMzEwLDEwNSwxMjAzNjIsMTA1LDEyMDQxNCwxMDUsMTIwNDY2LDEwNSwxMjA0ODQsMTA1LDYxOCwxMDUsNjE3LDEwNSw5NTMsMTA1LDgxMjYsMTA1LDg5MCwxMDUsMTIwNTIyLDEwNSwxMjA1ODAsMTA1LDEyMDYzOCwxMDUsMTIwNjk2LDEwNSwxMjA3NTQsMTA1LDExMTAsMTA1LDQyNTY3LDEwNSwxMjMxLDEwNSw0Mzg5MywxMDUsNTAyOSwxMDUsNzE4NzUsMTA1LDY1MzU0LDEwNiw4NTIxLDEwNiwxMTk4NDMsMTA2LDExOTg5NSwxMDYsMTE5OTQ3LDEwNiwxMTk5OTksMTA2LDEyMDA1MSwxMDYsMTIwMTAzLDEwNiwxMjAxNTUsMTA2LDEyMDIwNywxMDYsMTIwMjU5LDEwNiwxMjAzMTEsMTA2LDEyMDM2MywxMDYsMTIwNDE1LDEwNiwxMjA0NjcsMTA2LDEwMTEsMTA2LDExMTIsMTA2LDY1MzIyLDc0LDExOTgxNyw3NCwxMTk4NjksNzQsMTE5OTIxLDc0LDExOTk3Myw3NCwxMjAwMjUsNzQsMTIwMDc3LDc0LDEyMDEyOSw3NCwxMjAxODEsNzQsMTIwMjMzLDc0LDEyMDI4NSw3NCwxMjAzMzcsNzQsMTIwMzg5LDc0LDEyMDQ0MSw3NCw0MjkzMCw3NCw4OTUsNzQsMTAzMiw3NCw1MDM1LDc0LDUyNjEsNzQsNDIyMDEsNzQsMTE5ODQ0LDEwNywxMTk4OTYsMTA3LDExOTk0OCwxMDcsMTIwMDAwLDEwNywxMjAwNTIsMTA3LDEyMDEwNCwxMDcsMTIwMTU2LDEwNywxMjAyMDgsMTA3LDEyMDI2MCwxMDcsMTIwMzEyLDEwNywxMjAzNjQsMTA3LDEyMDQxNiwxMDcsMTIwNDY4LDEwNyw4NDkwLDc1LDY1MzIzLDc1LDExOTgxOCw3NSwxMTk4NzAsNzUsMTE5OTIyLDc1LDExOTk3NCw3NSwxMjAwMjYsNzUsMTIwMDc4LDc1LDEyMDEzMCw3NSwxMjAxODIsNzUsMTIwMjM0LDc1LDEyMDI4Niw3NSwxMjAzMzgsNzUsMTIwMzkwLDc1LDEyMDQ0Miw3NSw5MjIsNzUsMTIwNDk3LDc1LDEyMDU1NSw3NSwxMjA2MTMsNzUsMTIwNjcxLDc1LDEyMDcyOSw3NSwxMTQxMiw3NSw1MDk0LDc1LDU4NDUsNzUsNDIxOTksNzUsNjY4NDAsNzUsMTQ3MiwxMDgsODczOSw3Myw5MjEzLDczLDY1NTEyLDczLDE2MzMsMTA4LDE3NzcsNzMsNjYzMzYsMTA4LDEyNTEyNywxMDgsMTIwNzgzLDczLDEyMDc5Myw3MywxMjA4MDMsNzMsMTIwODEzLDczLDEyMDgyMyw3MywxMzAwMzMsNzMsNjUzMjEsNzMsODU0NCw3Myw4NDY0LDczLDg0NjUsNzMsMTE5ODE2LDczLDExOTg2OCw3MywxMTk5MjAsNzMsMTIwMDI0LDczLDEyMDEyOCw3MywxMjAxODAsNzMsMTIwMjMyLDczLDEyMDI4NCw3MywxMjAzMzYsNzMsMTIwMzg4LDczLDEyMDQ0MCw3Myw2NTM1NiwxMDgsODU3Miw3Myw4NDY3LDEwOCwxMTk4NDUsMTA4LDExOTg5NywxMDgsMTE5OTQ5LDEwOCwxMjAwMDEsMTA4LDEyMDA1MywxMDgsMTIwMTA1LDczLDEyMDE1Nyw3MywxMjAyMDksNzMsMTIwMjYxLDczLDEyMDMxMyw3MywxMjAzNjUsNzMsMTIwNDE3LDczLDEyMDQ2OSw3Myw0NDgsNzMsMTIwNDk2LDczLDEyMDU1NCw3MywxMjA2MTIsNzMsMTIwNjcwLDczLDEyMDcyOCw3MywxMTQxMCw3MywxMDMwLDczLDEyMTYsNzMsMTQ5MywxMDgsMTUwMywxMDgsMTU3NSwxMDgsMTI2NDY0LDEwOCwxMjY1OTIsMTA4LDY1MTY2LDEwOCw2NTE2NSwxMDgsMTk5NCwxMDgsMTE1OTksNzMsNTgyNSw3Myw0MjIyNiw3Myw5Mzk5Miw3Myw2NjE4NiwxMjQsNjYzMTMsMTI0LDExOTMzOCw3Niw4NTU2LDc2LDg0NjYsNzYsMTE5ODE5LDc2LDExOTg3MSw3NiwxMTk5MjMsNzYsMTIwMDI3LDc2LDEyMDA3OSw3NiwxMjAxMzEsNzYsMTIwMTgzLDc2LDEyMDIzNSw3NiwxMjAyODcsNzYsMTIwMzM5LDc2LDEyMDM5MSw3NiwxMjA0NDMsNzYsMTE0NzIsNzYsNTA4Niw3Niw1MjkwLDc2LDQyMjA5LDc2LDkzOTc0LDc2LDcxODQzLDc2LDcxODU4LDc2LDY2NTg3LDc2LDY2ODU0LDc2LDY1MzI1LDc3LDg1NTksNzcsODQ5OSw3NywxMTk4MjAsNzcsMTE5ODcyLDc3LDExOTkyNCw3NywxMjAwMjgsNzcsMTIwMDgwLDc3LDEyMDEzMiw3NywxMjAxODQsNzcsMTIwMjM2LDc3LDEyMDI4OCw3NywxMjAzNDAsNzcsMTIwMzkyLDc3LDEyMDQ0NCw3Nyw5MjQsNzcsMTIwNDk5LDc3LDEyMDU1Nyw3NywxMjA2MTUsNzcsMTIwNjczLDc3LDEyMDczMSw3NywxMDE4LDc3LDExNDE2LDc3LDUwNDcsNzcsNTYxNiw3Nyw1ODQ2LDc3LDQyMjA3LDc3LDY2MjI0LDc3LDY2MzIxLDc3LDExOTg0NywxMTAsMTE5ODk5LDExMCwxMTk5NTEsMTEwLDEyMDAwMywxMTAsMTIwMDU1LDExMCwxMjAxMDcsMTEwLDEyMDE1OSwxMTAsMTIwMjExLDExMCwxMjAyNjMsMTEwLDEyMDMxNSwxMTAsMTIwMzY3LDExMCwxMjA0MTksMTEwLDEyMDQ3MSwxMTAsMTQwMCwxMTAsMTQwNCwxMTAsNjUzMjYsNzgsODQ2OSw3OCwxMTk4MjEsNzgsMTE5ODczLDc4LDExOTkyNSw3OCwxMTk5NzcsNzgsMTIwMDI5LDc4LDEyMDA4MSw3OCwxMjAxODUsNzgsMTIwMjM3LDc4LDEyMDI4OSw3OCwxMjAzNDEsNzgsMTIwMzkzLDc4LDEyMDQ0NSw3OCw5MjUsNzgsMTIwNTAwLDc4LDEyMDU1OCw3OCwxMjA2MTYsNzgsMTIwNjc0LDc4LDEyMDczMiw3OCwxMTQxOCw3OCw0MjIwOCw3OCw2NjgzNSw3OCwzMDc0LDExMSwzMjAyLDExMSwzMzMwLDExMSwzNDU4LDExMSwyNDA2LDExMSwyNjYyLDExMSwyNzkwLDExMSwzMDQ2LDExMSwzMTc0LDExMSwzMzAyLDExMSwzNDMwLDExMSwzNjY0LDExMSwzNzkyLDExMSw0MTYwLDExMSwxNjM3LDExMSwxNzgxLDExMSw2NTM1OSwxMTEsODUwMCwxMTEsMTE5ODQ4LDExMSwxMTk5MDAsMTExLDExOTk1MiwxMTEsMTIwMDU2LDExMSwxMjAxMDgsMTExLDEyMDE2MCwxMTEsMTIwMjEyLDExMSwxMjAyNjQsMTExLDEyMDMxNiwxMTEsMTIwMzY4LDExMSwxMjA0MjAsMTExLDEyMDQ3MiwxMTEsNzQzOSwxMTEsNzQ0MSwxMTEsNDM4MzcsMTExLDk1OSwxMTEsMTIwNTI4LDExMSwxMjA1ODYsMTExLDEyMDY0NCwxMTEsMTIwNzAyLDExMSwxMjA3NjAsMTExLDk2MywxMTEsMTIwNTMyLDExMSwxMjA1OTAsMTExLDEyMDY0OCwxMTEsMTIwNzA2LDExMSwxMjA3NjQsMTExLDExNDIzLDExMSw0MzUxLDExMSwxNDEzLDExMSwxNTA1LDExMSwxNjA3LDExMSwxMjY1MDAsMTExLDEyNjU2NCwxMTEsMTI2NTk2LDExMSw2NTI1OSwxMTEsNjUyNjAsMTExLDY1MjU4LDExMSw2NTI1NywxMTEsMTcyNiwxMTEsNjQ0MjgsMTExLDY0NDI5LDExMSw2NDQyNywxMTEsNjQ0MjYsMTExLDE3MjksMTExLDY0NDI0LDExMSw2NDQyNSwxMTEsNjQ0MjMsMTExLDY0NDIyLDExMSwxNzQ5LDExMSwzMzYwLDExMSw0MTI1LDExMSw2Njc5NCwxMTEsNzE4ODAsMTExLDcxODk1LDExMSw2NjYwNCwxMTEsMTk4NCw3OSwyNTM0LDc5LDI5MTgsNzksMTIyOTUsNzksNzA4NjQsNzksNzE5MDQsNzksMTIwNzgyLDc5LDEyMDc5Miw3OSwxMjA4MDIsNzksMTIwODEyLDc5LDEyMDgyMiw3OSwxMzAwMzIsNzksNjUzMjcsNzksMTE5ODIyLDc5LDExOTg3NCw3OSwxMTk5MjYsNzksMTE5OTc4LDc5LDEyMDAzMCw3OSwxMjAwODIsNzksMTIwMTM0LDc5LDEyMDE4Niw3OSwxMjAyMzgsNzksMTIwMjkwLDc5LDEyMDM0Miw3OSwxMjAzOTQsNzksMTIwNDQ2LDc5LDkyNyw3OSwxMjA1MDIsNzksMTIwNTYwLDc5LDEyMDYxOCw3OSwxMjA2NzYsNzksMTIwNzM0LDc5LDExNDIyLDc5LDEzNjUsNzksMTE2MDQsNzksNDgxNiw3OSwyODQ4LDc5LDY2NzU0LDc5LDQyMjI3LDc5LDcxODYxLDc5LDY2MTk0LDc5LDY2MjE5LDc5LDY2NTY0LDc5LDY2ODM4LDc5LDkwNzYsMTEyLDY1MzYwLDExMiwxMTk4NDksMTEyLDExOTkwMSwxMTIsMTE5OTUzLDExMiwxMjAwMDUsMTEyLDEyMDA1NywxMTIsMTIwMTA5LDExMiwxMjAxNjEsMTEyLDEyMDIxMywxMTIsMTIwMjY1LDExMiwxMjAzMTcsMTEyLDEyMDM2OSwxMTIsMTIwNDIxLDExMiwxMjA0NzMsMTEyLDk2MSwxMTIsMTIwNTMwLDExMiwxMjA1NDQsMTEyLDEyMDU4OCwxMTIsMTIwNjAyLDExMiwxMjA2NDYsMTEyLDEyMDY2MCwxMTIsMTIwNzA0LDExMiwxMjA3MTgsMTEyLDEyMDc2MiwxMTIsMTIwNzc2LDExMiwxMTQyNywxMTIsNjUzMjgsODAsODQ3Myw4MCwxMTk4MjMsODAsMTE5ODc1LDgwLDExOTkyNyw4MCwxMTk5NzksODAsMTIwMDMxLDgwLDEyMDA4Myw4MCwxMjAxODcsODAsMTIwMjM5LDgwLDEyMDI5MSw4MCwxMjAzNDMsODAsMTIwMzk1LDgwLDEyMDQ0Nyw4MCw5MjksODAsMTIwNTA0LDgwLDEyMDU2Miw4MCwxMjA2MjAsODAsMTIwNjc4LDgwLDEyMDczNiw4MCwxMTQyNiw4MCw1MDkwLDgwLDUyMjksODAsNDIxOTMsODAsNjYxOTcsODAsMTE5ODUwLDExMywxMTk5MDIsMTEzLDExOTk1NCwxMTMsMTIwMDA2LDExMywxMjAwNTgsMTEzLDEyMDExMCwxMTMsMTIwMTYyLDExMywxMjAyMTQsMTEzLDEyMDI2NiwxMTMsMTIwMzE4LDExMywxMjAzNzAsMTEzLDEyMDQyMiwxMTMsMTIwNDc0LDExMywxMzA3LDExMywxMzc5LDExMywxMzgyLDExMyw4NDc0LDgxLDExOTgyNCw4MSwxMTk4NzYsODEsMTE5OTI4LDgxLDExOTk4MCw4MSwxMjAwMzIsODEsMTIwMDg0LDgxLDEyMDE4OCw4MSwxMjAyNDAsODEsMTIwMjkyLDgxLDEyMDM0NCw4MSwxMjAzOTYsODEsMTIwNDQ4LDgxLDExNjA1LDgxLDExOTg1MSwxMTQsMTE5OTAzLDExNCwxMTk5NTUsMTE0LDEyMDAwNywxMTQsMTIwMDU5LDExNCwxMjAxMTEsMTE0LDEyMDE2MywxMTQsMTIwMjE1LDExNCwxMjAyNjcsMTE0LDEyMDMxOSwxMTQsMTIwMzcxLDExNCwxMjA0MjMsMTE0LDEyMDQ3NSwxMTQsNDM4NDcsMTE0LDQzODQ4LDExNCw3NDYyLDExNCwxMTM5NywxMTQsNDM5MDUsMTE0LDExOTMxOCw4Miw4NDc1LDgyLDg0NzYsODIsODQ3Nyw4MiwxMTk4MjUsODIsMTE5ODc3LDgyLDExOTkyOSw4MiwxMjAwMzMsODIsMTIwMTg5LDgyLDEyMDI0MSw4MiwxMjAyOTMsODIsMTIwMzQ1LDgyLDEyMDM5Nyw4MiwxMjA0NDksODIsNDIyLDgyLDUwMjUsODIsNTA3NCw4Miw2Njc0MCw4Miw1NTExLDgyLDQyMjExLDgyLDk0MDA1LDgyLDY1MzYzLDExNSwxMTk4NTIsMTE1LDExOTkwNCwxMTUsMTE5OTU2LDExNSwxMjAwMDgsMTE1LDEyMDA2MCwxMTUsMTIwMTEyLDExNSwxMjAxNjQsMTE1LDEyMDIxNiwxMTUsMTIwMjY4LDExNSwxMjAzMjAsMTE1LDEyMDM3MiwxMTUsMTIwNDI0LDExNSwxMjA0NzYsMTE1LDQyODAxLDExNSw0NDUsMTE1LDExMDksMTE1LDQzOTQ2LDExNSw3MTg3MywxMTUsNjY2MzIsMTE1LDY1MzMxLDgzLDExOTgyNiw4MywxMTk4NzgsODMsMTE5OTMwLDgzLDExOTk4Miw4MywxMjAwMzQsODMsMTIwMDg2LDgzLDEyMDEzOCw4MywxMjAxOTAsODMsMTIwMjQyLDgzLDEyMDI5NCw4MywxMjAzNDYsODMsMTIwMzk4LDgzLDEyMDQ1MCw4MywxMDI5LDgzLDEzNTksODMsNTA3Nyw4Myw1MDgyLDgzLDQyMjEwLDgzLDk0MDEwLDgzLDY2MTk4LDgzLDY2NTkyLDgzLDExOTg1MywxMTYsMTE5OTA1LDExNiwxMTk5NTcsMTE2LDEyMDAwOSwxMTYsMTIwMDYxLDExNiwxMjAxMTMsMTE2LDEyMDE2NSwxMTYsMTIwMjE3LDExNiwxMjAyNjksMTE2LDEyMDMyMSwxMTYsMTIwMzczLDExNiwxMjA0MjUsMTE2LDEyMDQ3NywxMTYsODg2OCw4NCwxMDIwMSw4NCwxMjg4NzIsODQsNjUzMzIsODQsMTE5ODI3LDg0LDExOTg3OSw4NCwxMTk5MzEsODQsMTE5OTgzLDg0LDEyMDAzNSw4NCwxMjAwODcsODQsMTIwMTM5LDg0LDEyMDE5MSw4NCwxMjAyNDMsODQsMTIwMjk1LDg0LDEyMDM0Nyw4NCwxMjAzOTksODQsMTIwNDUxLDg0LDkzMiw4NCwxMjA1MDcsODQsMTIwNTY1LDg0LDEyMDYyMyw4NCwxMjA2ODEsODQsMTIwNzM5LDg0LDExNDMwLDg0LDUwMjYsODQsNDIxOTYsODQsOTM5NjIsODQsNzE4NjgsODQsNjYxOTksODQsNjYyMjUsODQsNjYzMjUsODQsMTE5ODU0LDExNywxMTk5MDYsMTE3LDExOTk1OCwxMTcsMTIwMDEwLDExNywxMjAwNjIsMTE3LDEyMDExNCwxMTcsMTIwMTY2LDExNywxMjAyMTgsMTE3LDEyMDI3MCwxMTcsMTIwMzIyLDExNywxMjAzNzQsMTE3LDEyMDQyNiwxMTcsMTIwNDc4LDExNyw0MjkxMSwxMTcsNzQ1MiwxMTcsNDM4NTQsMTE3LDQzODU4LDExNyw2NTEsMTE3LDk2NSwxMTcsMTIwNTM0LDExNywxMjA1OTIsMTE3LDEyMDY1MCwxMTcsMTIwNzA4LDExNywxMjA3NjYsMTE3LDE0MDUsMTE3LDY2ODA2LDExNyw3MTg5NiwxMTcsODc0Niw4NSw4ODk5LDg1LDExOTgyOCw4NSwxMTk4ODAsODUsMTE5OTMyLDg1LDExOTk4NCw4NSwxMjAwMzYsODUsMTIwMDg4LDg1LDEyMDE0MCw4NSwxMjAxOTIsODUsMTIwMjQ0LDg1LDEyMDI5Niw4NSwxMjAzNDgsODUsMTIwNDAwLDg1LDEyMDQ1Miw4NSwxMzU3LDg1LDQ2MDgsODUsNjY3NjYsODUsNTE5Niw4NSw0MjIyOCw4NSw5NDAxOCw4NSw3MTg2NCw4NSw4NzQ0LDExOCw4ODk3LDExOCw2NTM2NiwxMTgsODU2NCwxMTgsMTE5ODU1LDExOCwxMTk5MDcsMTE4LDExOTk1OSwxMTgsMTIwMDExLDExOCwxMjAwNjMsMTE4LDEyMDExNSwxMTgsMTIwMTY3LDExOCwxMjAyMTksMTE4LDEyMDI3MSwxMTgsMTIwMzIzLDExOCwxMjAzNzUsMTE4LDEyMDQyNywxMTgsMTIwNDc5LDExOCw3NDU2LDExOCw5NTcsMTE4LDEyMDUyNiwxMTgsMTIwNTg0LDExOCwxMjA2NDIsMTE4LDEyMDcwMCwxMTgsMTIwNzU4LDExOCwxMTQxLDExOCwxNDk2LDExOCw3MTQzMCwxMTgsNDM5NDUsMTE4LDcxODcyLDExOCwxMTkzMDksODYsMTYzOSw4NiwxNzgzLDg2LDg1NDgsODYsMTE5ODI5LDg2LDExOTg4MSw4NiwxMTk5MzMsODYsMTE5OTg1LDg2LDEyMDAzNyw4NiwxMjAwODksODYsMTIwMTQxLDg2LDEyMDE5Myw4NiwxMjAyNDUsODYsMTIwMjk3LDg2LDEyMDM0OSw4NiwxMjA0MDEsODYsMTIwNDUzLDg2LDExNDAsODYsMTE1NzYsODYsNTA4MSw4Niw1MTY3LDg2LDQyNzE5LDg2LDQyMjE0LDg2LDkzOTYwLDg2LDcxODQwLDg2LDY2ODQ1LDg2LDYyMywxMTksMTE5ODU2LDExOSwxMTk5MDgsMTE5LDExOTk2MCwxMTksMTIwMDEyLDExOSwxMjAwNjQsMTE5LDEyMDExNiwxMTksMTIwMTY4LDExOSwxMjAyMjAsMTE5LDEyMDI3MiwxMTksMTIwMzI0LDExOSwxMjAzNzYsMTE5LDEyMDQyOCwxMTksMTIwNDgwLDExOSw3NDU3LDExOSwxMTIxLDExOSwxMzA5LDExOSwxMzc3LDExOSw3MTQzNCwxMTksNzE0MzgsMTE5LDcxNDM5LDExOSw0MzkwNywxMTksNzE5MTksODcsNzE5MTAsODcsMTE5ODMwLDg3LDExOTg4Miw4NywxMTk5MzQsODcsMTE5OTg2LDg3LDEyMDAzOCw4NywxMjAwOTAsODcsMTIwMTQyLDg3LDEyMDE5NCw4NywxMjAyNDYsODcsMTIwMjk4LDg3LDEyMDM1MCw4NywxMjA0MDIsODcsMTIwNDU0LDg3LDEzMDgsODcsNTA0Myw4Nyw1MDc2LDg3LDQyMjE4LDg3LDU3NDIsMTIwLDEwNTM5LDEyMCwxMDU0MCwxMjAsMTA3OTksMTIwLDY1MzY4LDEyMCw4NTY5LDEyMCwxMTk4NTcsMTIwLDExOTkwOSwxMjAsMTE5OTYxLDEyMCwxMjAwMTMsMTIwLDEyMDA2NSwxMjAsMTIwMTE3LDEyMCwxMjAxNjksMTIwLDEyMDIyMSwxMjAsMTIwMjczLDEyMCwxMjAzMjUsMTIwLDEyMDM3NywxMjAsMTIwNDI5LDEyMCwxMjA0ODEsMTIwLDU0NDEsMTIwLDU1MDEsMTIwLDU3NDEsODgsOTU4Nyw4OCw2NjMzOCw4OCw3MTkxNiw4OCw2NTMzNiw4OCw4NTUzLDg4LDExOTgzMSw4OCwxMTk4ODMsODgsMTE5OTM1LDg4LDExOTk4Nyw4OCwxMjAwMzksODgsMTIwMDkxLDg4LDEyMDE0Myw4OCwxMjAxOTUsODgsMTIwMjQ3LDg4LDEyMDI5OSw4OCwxMjAzNTEsODgsMTIwNDAzLDg4LDEyMDQ1NSw4OCw0MjkzMSw4OCw5MzUsODgsMTIwNTEwLDg4LDEyMDU2OCw4OCwxMjA2MjYsODgsMTIwNjg0LDg4LDEyMDc0Miw4OCwxMTQzNiw4OCwxMTYxMyw4OCw1ODE1LDg4LDQyMjE5LDg4LDY2MTkyLDg4LDY2MjI4LDg4LDY2MzI3LDg4LDY2ODU1LDg4LDYxMSwxMjEsNzU2NCwxMjEsNjUzNjksMTIxLDExOTg1OCwxMjEsMTE5OTEwLDEyMSwxMTk5NjIsMTIxLDEyMDAxNCwxMjEsMTIwMDY2LDEyMSwxMjAxMTgsMTIxLDEyMDE3MCwxMjEsMTIwMjIyLDEyMSwxMjAyNzQsMTIxLDEyMDMyNiwxMjEsMTIwMzc4LDEyMSwxMjA0MzAsMTIxLDEyMDQ4MiwxMjEsNjU1LDEyMSw3OTM1LDEyMSw0Mzg2NiwxMjEsOTQ3LDEyMSw4NTA5LDEyMSwxMjA1MTYsMTIxLDEyMDU3NCwxMjEsMTIwNjMyLDEyMSwxMjA2OTAsMTIxLDEyMDc0OCwxMjEsMTE5OSwxMjEsNDMyNywxMjEsNzE5MDAsMTIxLDY1MzM3LDg5LDExOTgzMiw4OSwxMTk4ODQsODksMTE5OTM2LDg5LDExOTk4OCw4OSwxMjAwNDAsODksMTIwMDkyLDg5LDEyMDE0NCw4OSwxMjAxOTYsODksMTIwMjQ4LDg5LDEyMDMwMCw4OSwxMjAzNTIsODksMTIwNDA0LDg5LDEyMDQ1Niw4OSw5MzMsODksOTc4LDg5LDEyMDUwOCw4OSwxMjA1NjYsODksMTIwNjI0LDg5LDEyMDY4Miw4OSwxMjA3NDAsODksMTE0MzIsODksMTE5OCw4OSw1MDMzLDg5LDUwNTMsODksNDIyMjAsODksOTQwMTksODksNzE4NDQsODksNjYyMjYsODksMTE5ODU5LDEyMiwxMTk5MTEsMTIyLDExOTk2MywxMjIsMTIwMDE1LDEyMiwxMjAwNjcsMTIyLDEyMDExOSwxMjIsMTIwMTcxLDEyMiwxMjAyMjMsMTIyLDEyMDI3NSwxMjIsMTIwMzI3LDEyMiwxMjAzNzksMTIyLDEyMDQzMSwxMjIsMTIwNDgzLDEyMiw3NDU4LDEyMiw0MzkyMywxMjIsNzE4NzYsMTIyLDY2MjkzLDkwLDcxOTA5LDkwLDY1MzM4LDkwLDg0ODQsOTAsODQ4OCw5MCwxMTk4MzMsOTAsMTE5ODg1LDkwLDExOTkzNyw5MCwxMTk5ODksOTAsMTIwMDQxLDkwLDEyMDE5Nyw5MCwxMjAyNDksOTAsMTIwMzAxLDkwLDEyMDM1Myw5MCwxMjA0MDUsOTAsMTIwNDU3LDkwLDkxOCw5MCwxMjA0OTMsOTAsMTIwNTUxLDkwLDEyMDYwOSw5MCwxMjA2NjcsOTAsMTIwNzI1LDkwLDUwNTksOTAsNDIyMDQsOTAsNzE4NDksOTAsNjUyODIsMzQsNjUyODQsMzYsNjUyODUsMzcsNjUyODYsMzgsNjUyOTAsNDIsNjUyOTEsNDMsNjUyOTQsNDYsNjUyOTUsNDcsNjUyOTYsNDgsNjUyOTcsNDksNjUyOTgsNTAsNjUyOTksNTEsNjUzMDAsNTIsNjUzMDEsNTMsNjUzMDIsNTQsNjUzMDMsNTUsNjUzMDQsNTYsNjUzMDUsNTcsNjUzMDgsNjAsNjUzMDksNjEsNjUzMTAsNjIsNjUzMTIsNjQsNjUzMTYsNjgsNjUzMTgsNzAsNjUzMTksNzEsNjUzMjQsNzYsNjUzMjksODEsNjUzMzAsODIsNjUzMzMsODUsNjUzMzQsODYsNjUzMzUsODcsNjUzNDMsOTUsNjUzNDYsOTgsNjUzNDgsMTAwLDY1MzUwLDEwMiw2NTM1NSwxMDcsNjUzNTcsMTA5LDY1MzU4LDExMCw2NTM2MSwxMTMsNjUzNjIsMTE0LDY1MzY0LDExNiw2NTM2NSwxMTcsNjUzNjcsMTE5LDY1MzcwLDEyMiw2NTM3MSwxMjMsNjUzNzMsMTI1LDExOTg0NiwxMDldLCJfZGVmYXVsdCI6WzE2MCwzMiw4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJjcyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjE2LDk2LDgyMTcsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiZGUiOls2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEyNDk0LDQ3LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImVzIjpbODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sImZyIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sIml0IjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUyODgsNDAsNjUyODksNDEsNjUyOTIsNDQsNjUzMDcsNTksNjUzMTEsNjNdLCJqYSI6WzgyMTEsNDUsNjUzMDYsNTgsNjUyODEsMzMsODIxNiw5Niw4MjE3LDk2LDgyNDUsOTYsMTgwLDk2LDEwNDcsNTEsMTA3Myw1NCwxMDcyLDk3LDEwNDAsNjUsMTA2OCw5OCwxMDQyLDY2LDEwODksOTksMTA1Nyw2NywxMDc3LDEwMSwxMDQ1LDY5LDEwNTMsNzIsMzA1LDEwNSwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1MjkyLDQ0LDY1MzA3LDU5XSwia28iOls4MjExLDQ1LDY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInBsIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInB0LUJSIjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInFwcy1wbG9jIjpbMTYwLDMyLDgyMTEsNDUsNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4MywzNSw2NTI4OCw0MCw2NTI4OSw0MSw2NTI5Miw0NCw2NTMwNyw1OSw2NTMxMSw2M10sInJ1IjpbNjUzNzQsMTI2LDY1MzA2LDU4LDY1MjgxLDMzLDgyMTYsOTYsODIxNyw5Niw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywzMDUsMTA1LDkyMSw3MywxMDA5LDExMiwyMTUsMTIwLDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwidHIiOlsxNjAsMzIsODIxMSw0NSw2NTM3NCwxMjYsNjUzMDYsNTgsNjUyODEsMzMsODI0NSw5NiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwxMDUwLDc1LDkyMSw3MywxMDUyLDc3LDEwODYsMTExLDEwNTQsNzksMTAwOSwxMTIsMTA4OCwxMTIsMTA1Niw4MCwxMDc1LDExNCwxMDU4LDg0LDIxNSwxMjAsMTA5MywxMjAsMTA2MSw4OCwxMDkxLDEyMSwxMDU5LDg5LDY1MjgzLDM1LDY1Mjg4LDQwLDY1Mjg5LDQxLDY1MjkyLDQ0LDY1MzA3LDU5LDY1MzExLDYzXSwiemgtaGFucyI6WzY1Mzc0LDEyNiw2NTMwNiw1OCw2NTI4MSwzMyw4MjQ1LDk2LDE4MCw5NiwxMjQ5NCw0NywxMDQ3LDUxLDEwNzMsNTQsMTA3Miw5NywxMDQwLDY1LDEwNjgsOTgsMTA0Miw2NiwxMDg5LDk5LDEwNTcsNjcsMTA3NywxMDEsMTA0NSw2OSwxMDUzLDcyLDMwNSwxMDUsMTA1MCw3NSw5MjEsNzMsMTA1Miw3NywxMDg2LDExMSwxMDU0LDc5LDEwMDksMTEyLDEwODgsMTEyLDEwNTYsODAsMTA3NSwxMTQsMTA1OCw4NCwyMTUsMTIwLDEwOTMsMTIwLDEwNjEsODgsMTA5MSwxMjEsMTA1OSw4OSw2NTI4OCw0MCw2NTI4OSw0MV0sInpoLWhhbnQiOls4MjExLDQ1LDY1Mzc0LDEyNiwxODAsOTYsMTI0OTQsNDcsMTA0Nyw1MSwxMDczLDU0LDEwNzIsOTcsMTA0MCw2NSwxMDY4LDk4LDEwNDIsNjYsMTA4OSw5OSwxMDU3LDY3LDEwNzcsMTAxLDEwNDUsNjksMTA1Myw3MiwzMDUsMTA1LDEwNTAsNzUsOTIxLDczLDEwNTIsNzcsMTA4NiwxMTEsMTA1NCw3OSwxMDA5LDExMiwxMDg4LDExMiwxMDU2LDgwLDEwNzUsMTE0LDEwNTgsODQsMjE1LDEyMCwxMDkzLDEyMCwxMDYxLDg4LDEwOTEsMTIxLDEwNTksODksNjUyODMsMzUsNjUzMDcsNTldfScpKSxMZS5jYWNoZT1uZXcgX3MoZT0+e2Z1bmN0aW9uIHQoYyl7Y29uc3QgaD1uZXcgTWFwO2ZvcihsZXQgZj0wO2Y8Yy5sZW5ndGg7Zis9MiloLnNldChjW2ZdLGNbZisxXSk7cmV0dXJuIGh9ZnVuY3Rpb24gbihjLGgpe2NvbnN0IGY9bmV3IE1hcChjKTtmb3IoY29uc3RbZCxtXW9mIGgpZi5zZXQoZCxtKTtyZXR1cm4gZn1mdW5jdGlvbiByKGMsaCl7aWYoIWMpcmV0dXJuIGg7Y29uc3QgZj1uZXcgTWFwO2Zvcihjb25zdFtkLG1db2YgYyloLmhhcyhkKSYmZi5zZXQoZCxtKTtyZXR1cm4gZn1jb25zdCBzPU1lLmFtYmlndW91c0NoYXJhY3RlckRhdGEudmFsdWU7bGV0IGk9ZS5maWx0ZXIoYz0+IWMuc3RhcnRzV2l0aCgiXyIpJiZjIGluIHMpO2kubGVuZ3RoPT09MCYmKGk9WyJfZGVmYXVsdCJdKTtsZXQgbDtmb3IoY29uc3QgYyBvZiBpKXtjb25zdCBoPXQoc1tjXSk7bD1yKGwsaCl9Y29uc3Qgbz10KHMuX2NvbW1vbiksdT1uKG8sbCk7cmV0dXJuIG5ldyBNZSh1KX0pLExlLl9sb2NhbGVzPW5ldyB0bigoKT0+T2JqZWN0LmtleXMoTWUuYW1iaWd1b3VzQ2hhcmFjdGVyRGF0YS52YWx1ZSkuZmlsdGVyKGU9PiFlLnN0YXJ0c1dpdGgoIl8iKSkpO2NsYXNzIGRle3N0YXRpYyBnZXRSYXdEYXRhKCl7cmV0dXJuIEpTT04ucGFyc2UoIls5LDEwLDExLDEyLDEzLDMyLDEyNywxNjAsMTczLDg0NywxNTY0LDQ0NDcsNDQ0OCw2MDY4LDYwNjksNjE1NSw2MTU2LDYxNTcsNjE1OCw3MzU1LDczNTYsODE5Miw4MTkzLDgxOTQsODE5NSw4MTk2LDgxOTcsODE5OCw4MTk5LDgyMDAsODIwMSw4MjAyLDgyMDMsODIwNCw4MjA1LDgyMDYsODIwNyw4MjM0LDgyMzUsODIzNiw4MjM3LDgyMzgsODIzOSw4Mjg3LDgyODgsODI4OSw4MjkwLDgyOTEsODI5Miw4MjkzLDgyOTQsODI5NSw4Mjk2LDgyOTcsODI5OCw4Mjk5LDgzMDAsODMwMSw4MzAyLDgzMDMsMTAyNDAsMTIyODgsMTI2NDQsNjUwMjQsNjUwMjUsNjUwMjYsNjUwMjcsNjUwMjgsNjUwMjksNjUwMzAsNjUwMzEsNjUwMzIsNjUwMzMsNjUwMzQsNjUwMzUsNjUwMzYsNjUwMzcsNjUwMzgsNjUwMzksNjUyNzksNjU0NDAsNjU1MjAsNjU1MjEsNjU1MjIsNjU1MjMsNjU1MjQsNjU1MjUsNjU1MjYsNjU1MjcsNjU1MjgsNjU1MzIsNzg4NDQsMTE5MTU1LDExOTE1NiwxMTkxNTcsMTE5MTU4LDExOTE1OSwxMTkxNjAsMTE5MTYxLDExOTE2Miw5MTc1MDQsOTE3NTA1LDkxNzUwNiw5MTc1MDcsOTE3NTA4LDkxNzUwOSw5MTc1MTAsOTE3NTExLDkxNzUxMiw5MTc1MTMsOTE3NTE0LDkxNzUxNSw5MTc1MTYsOTE3NTE3LDkxNzUxOCw5MTc1MTksOTE3NTIwLDkxNzUyMSw5MTc1MjIsOTE3NTIzLDkxNzUyNCw5MTc1MjUsOTE3NTI2LDkxNzUyNyw5MTc1MjgsOTE3NTI5LDkxNzUzMCw5MTc1MzEsOTE3NTMyLDkxNzUzMyw5MTc1MzQsOTE3NTM1LDkxNzUzNiw5MTc1MzcsOTE3NTM4LDkxNzUzOSw5MTc1NDAsOTE3NTQxLDkxNzU0Miw5MTc1NDMsOTE3NTQ0LDkxNzU0NSw5MTc1NDYsOTE3NTQ3LDkxNzU0OCw5MTc1NDksOTE3NTUwLDkxNzU1MSw5MTc1NTIsOTE3NTUzLDkxNzU1NCw5MTc1NTUsOTE3NTU2LDkxNzU1Nyw5MTc1NTgsOTE3NTU5LDkxNzU2MCw5MTc1NjEsOTE3NTYyLDkxNzU2Myw5MTc1NjQsOTE3NTY1LDkxNzU2Niw5MTc1NjcsOTE3NTY4LDkxNzU2OSw5MTc1NzAsOTE3NTcxLDkxNzU3Miw5MTc1NzMsOTE3NTc0LDkxNzU3NSw5MTc1NzYsOTE3NTc3LDkxNzU3OCw5MTc1NzksOTE3NTgwLDkxNzU4MSw5MTc1ODIsOTE3NTgzLDkxNzU4NCw5MTc1ODUsOTE3NTg2LDkxNzU4Nyw5MTc1ODgsOTE3NTg5LDkxNzU5MCw5MTc1OTEsOTE3NTkyLDkxNzU5Myw5MTc1OTQsOTE3NTk1LDkxNzU5Niw5MTc1OTcsOTE3NTk4LDkxNzU5OSw5MTc2MDAsOTE3NjAxLDkxNzYwMiw5MTc2MDMsOTE3NjA0LDkxNzYwNSw5MTc2MDYsOTE3NjA3LDkxNzYwOCw5MTc2MDksOTE3NjEwLDkxNzYxMSw5MTc2MTIsOTE3NjEzLDkxNzYxNCw5MTc2MTUsOTE3NjE2LDkxNzYxNyw5MTc2MTgsOTE3NjE5LDkxNzYyMCw5MTc2MjEsOTE3NjIyLDkxNzYyMyw5MTc2MjQsOTE3NjI1LDkxNzYyNiw5MTc2MjcsOTE3NjI4LDkxNzYyOSw5MTc2MzAsOTE3NjMxLDkxNzc2MCw5MTc3NjEsOTE3NzYyLDkxNzc2Myw5MTc3NjQsOTE3NzY1LDkxNzc2Niw5MTc3NjcsOTE3NzY4LDkxNzc2OSw5MTc3NzAsOTE3NzcxLDkxNzc3Miw5MTc3NzMsOTE3Nzc0LDkxNzc3NSw5MTc3NzYsOTE3Nzc3LDkxNzc3OCw5MTc3NzksOTE3NzgwLDkxNzc4MSw5MTc3ODIsOTE3NzgzLDkxNzc4NCw5MTc3ODUsOTE3Nzg2LDkxNzc4Nyw5MTc3ODgsOTE3Nzg5LDkxNzc5MCw5MTc3OTEsOTE3NzkyLDkxNzc5Myw5MTc3OTQsOTE3Nzk1LDkxNzc5Niw5MTc3OTcsOTE3Nzk4LDkxNzc5OSw5MTc4MDAsOTE3ODAxLDkxNzgwMiw5MTc4MDMsOTE3ODA0LDkxNzgwNSw5MTc4MDYsOTE3ODA3LDkxNzgwOCw5MTc4MDksOTE3ODEwLDkxNzgxMSw5MTc4MTIsOTE3ODEzLDkxNzgxNCw5MTc4MTUsOTE3ODE2LDkxNzgxNyw5MTc4MTgsOTE3ODE5LDkxNzgyMCw5MTc4MjEsOTE3ODIyLDkxNzgyMyw5MTc4MjQsOTE3ODI1LDkxNzgyNiw5MTc4MjcsOTE3ODI4LDkxNzgyOSw5MTc4MzAsOTE3ODMxLDkxNzgzMiw5MTc4MzMsOTE3ODM0LDkxNzgzNSw5MTc4MzYsOTE3ODM3LDkxNzgzOCw5MTc4MzksOTE3ODQwLDkxNzg0MSw5MTc4NDIsOTE3ODQzLDkxNzg0NCw5MTc4NDUsOTE3ODQ2LDkxNzg0Nyw5MTc4NDgsOTE3ODQ5LDkxNzg1MCw5MTc4NTEsOTE3ODUyLDkxNzg1Myw5MTc4NTQsOTE3ODU1LDkxNzg1Niw5MTc4NTcsOTE3ODU4LDkxNzg1OSw5MTc4NjAsOTE3ODYxLDkxNzg2Miw5MTc4NjMsOTE3ODY0LDkxNzg2NSw5MTc4NjYsOTE3ODY3LDkxNzg2OCw5MTc4NjksOTE3ODcwLDkxNzg3MSw5MTc4NzIsOTE3ODczLDkxNzg3NCw5MTc4NzUsOTE3ODc2LDkxNzg3Nyw5MTc4NzgsOTE3ODc5LDkxNzg4MCw5MTc4ODEsOTE3ODgyLDkxNzg4Myw5MTc4ODQsOTE3ODg1LDkxNzg4Niw5MTc4ODcsOTE3ODg4LDkxNzg4OSw5MTc4OTAsOTE3ODkxLDkxNzg5Miw5MTc4OTMsOTE3ODk0LDkxNzg5NSw5MTc4OTYsOTE3ODk3LDkxNzg5OCw5MTc4OTksOTE3OTAwLDkxNzkwMSw5MTc5MDIsOTE3OTAzLDkxNzkwNCw5MTc5MDUsOTE3OTA2LDkxNzkwNyw5MTc5MDgsOTE3OTA5LDkxNzkxMCw5MTc5MTEsOTE3OTEyLDkxNzkxMyw5MTc5MTQsOTE3OTE1LDkxNzkxNiw5MTc5MTcsOTE3OTE4LDkxNzkxOSw5MTc5MjAsOTE3OTIxLDkxNzkyMiw5MTc5MjMsOTE3OTI0LDkxNzkyNSw5MTc5MjYsOTE3OTI3LDkxNzkyOCw5MTc5MjksOTE3OTMwLDkxNzkzMSw5MTc5MzIsOTE3OTMzLDkxNzkzNCw5MTc5MzUsOTE3OTM2LDkxNzkzNyw5MTc5MzgsOTE3OTM5LDkxNzk0MCw5MTc5NDEsOTE3OTQyLDkxNzk0Myw5MTc5NDQsOTE3OTQ1LDkxNzk0Niw5MTc5NDcsOTE3OTQ4LDkxNzk0OSw5MTc5NTAsOTE3OTUxLDkxNzk1Miw5MTc5NTMsOTE3OTU0LDkxNzk1NSw5MTc5NTYsOTE3OTU3LDkxNzk1OCw5MTc5NTksOTE3OTYwLDkxNzk2MSw5MTc5NjIsOTE3OTYzLDkxNzk2NCw5MTc5NjUsOTE3OTY2LDkxNzk2Nyw5MTc5NjgsOTE3OTY5LDkxNzk3MCw5MTc5NzEsOTE3OTcyLDkxNzk3Myw5MTc5NzQsOTE3OTc1LDkxNzk3Niw5MTc5NzcsOTE3OTc4LDkxNzk3OSw5MTc5ODAsOTE3OTgxLDkxNzk4Miw5MTc5ODMsOTE3OTg0LDkxNzk4NSw5MTc5ODYsOTE3OTg3LDkxNzk4OCw5MTc5ODksOTE3OTkwLDkxNzk5MSw5MTc5OTIsOTE3OTkzLDkxNzk5NCw5MTc5OTUsOTE3OTk2LDkxNzk5Nyw5MTc5OTgsOTE3OTk5XSIpfXN0YXRpYyBnZXREYXRhKCl7cmV0dXJuIHRoaXMuX2RhdGF8fCh0aGlzLl9kYXRhPW5ldyBTZXQoZGUuZ2V0UmF3RGF0YSgpKSksdGhpcy5fZGF0YX1zdGF0aWMgaXNJbnZpc2libGVDaGFyYWN0ZXIodCl7cmV0dXJuIGRlLmdldERhdGEoKS5oYXModCl9c3RhdGljIGdldCBjb2RlUG9pbnRzKCl7cmV0dXJuIGRlLmdldERhdGEoKX19ZGUuX2RhdGE9dm9pZCAwO2NvbnN0IFJzPSIkaW5pdGlhbGl6ZSI7Y2xhc3MgeXN7Y29uc3RydWN0b3IodCxuLHIscyl7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy5tZXRob2Q9cix0aGlzLmFyZ3M9cyx0aGlzLnR5cGU9MH19Y2xhc3Mgcm57Y29uc3RydWN0b3IodCxuLHIscyl7dGhpcy52c1dvcmtlcj10LHRoaXMuc2VxPW4sdGhpcy5yZXM9cix0aGlzLmVycj1zLHRoaXMudHlwZT0xfX1jbGFzcyBFc3tjb25zdHJ1Y3Rvcih0LG4scixzKXt0aGlzLnZzV29ya2VyPXQsdGhpcy5yZXE9bix0aGlzLmV2ZW50TmFtZT1yLHRoaXMuYXJnPXMsdGhpcy50eXBlPTJ9fWNsYXNzIE1ze2NvbnN0cnVjdG9yKHQsbixyKXt0aGlzLnZzV29ya2VyPXQsdGhpcy5yZXE9bix0aGlzLmV2ZW50PXIsdGhpcy50eXBlPTN9fWNsYXNzIGtze2NvbnN0cnVjdG9yKHQsbil7dGhpcy52c1dvcmtlcj10LHRoaXMucmVxPW4sdGhpcy50eXBlPTR9fWNsYXNzIEZze2NvbnN0cnVjdG9yKHQpe3RoaXMuX3dvcmtlcklkPS0xLHRoaXMuX2hhbmRsZXI9dCx0aGlzLl9sYXN0U2VudFJlcT0wLHRoaXMuX3BlbmRpbmdSZXBsaWVzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fcGVuZGluZ0VtaXR0ZXJzPW5ldyBNYXAsdGhpcy5fcGVuZGluZ0V2ZW50cz1uZXcgTWFwfXNldFdvcmtlcklkKHQpe3RoaXMuX3dvcmtlcklkPXR9c2VuZE1lc3NhZ2UodCxuKXtjb25zdCByPVN0cmluZygrK3RoaXMuX2xhc3RTZW50UmVxKTtyZXR1cm4gbmV3IFByb21pc2UoKHMsaSk9Pnt0aGlzLl9wZW5kaW5nUmVwbGllc1tyXT17cmVzb2x2ZTpzLHJlamVjdDppfSx0aGlzLl9zZW5kKG5ldyB5cyh0aGlzLl93b3JrZXJJZCxyLHQsbikpfSl9bGlzdGVuKHQsbil7bGV0IHI9bnVsbDtjb25zdCBzPW5ldyBzZSh7b25XaWxsQWRkRmlyc3RMaXN0ZW5lcjooKT0+e3I9U3RyaW5nKCsrdGhpcy5fbGFzdFNlbnRSZXEpLHRoaXMuX3BlbmRpbmdFbWl0dGVycy5zZXQocixzKSx0aGlzLl9zZW5kKG5ldyBFcyh0aGlzLl93b3JrZXJJZCxyLHQsbikpfSxvbkRpZFJlbW92ZUxhc3RMaXN0ZW5lcjooKT0+e3RoaXMuX3BlbmRpbmdFbWl0dGVycy5kZWxldGUociksdGhpcy5fc2VuZChuZXcga3ModGhpcy5fd29ya2VySWQscikpLHI9bnVsbH19KTtyZXR1cm4gcy5ldmVudH1oYW5kbGVNZXNzYWdlKHQpeyF0fHwhdC52c1dvcmtlcnx8dGhpcy5fd29ya2VySWQhPT0tMSYmdC52c1dvcmtlciE9PXRoaXMuX3dvcmtlcklkfHx0aGlzLl9oYW5kbGVNZXNzYWdlKHQpfV9oYW5kbGVNZXNzYWdlKHQpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgMTpyZXR1cm4gdGhpcy5faGFuZGxlUmVwbHlNZXNzYWdlKHQpO2Nhc2UgMDpyZXR1cm4gdGhpcy5faGFuZGxlUmVxdWVzdE1lc3NhZ2UodCk7Y2FzZSAyOnJldHVybiB0aGlzLl9oYW5kbGVTdWJzY3JpYmVFdmVudE1lc3NhZ2UodCk7Y2FzZSAzOnJldHVybiB0aGlzLl9oYW5kbGVFdmVudE1lc3NhZ2UodCk7Y2FzZSA0OnJldHVybiB0aGlzLl9oYW5kbGVVbnN1YnNjcmliZUV2ZW50TWVzc2FnZSh0KX19X2hhbmRsZVJlcGx5TWVzc2FnZSh0KXtpZighdGhpcy5fcGVuZGluZ1JlcGxpZXNbdC5zZXFdKXtjb25zb2xlLndhcm4oIkdvdCByZXBseSB0byB1bmtub3duIHNlcSIpO3JldHVybn1jb25zdCBuPXRoaXMuX3BlbmRpbmdSZXBsaWVzW3Quc2VxXTtpZihkZWxldGUgdGhpcy5fcGVuZGluZ1JlcGxpZXNbdC5zZXFdLHQuZXJyKXtsZXQgcj10LmVycjt0LmVyci4kaXNFcnJvciYmKHI9bmV3IEVycm9yLHIubmFtZT10LmVyci5uYW1lLHIubWVzc2FnZT10LmVyci5tZXNzYWdlLHIuc3RhY2s9dC5lcnIuc3RhY2spLG4ucmVqZWN0KHIpO3JldHVybn1uLnJlc29sdmUodC5yZXMpfV9oYW5kbGVSZXF1ZXN0TWVzc2FnZSh0KXtjb25zdCBuPXQucmVxO3RoaXMuX2hhbmRsZXIuaGFuZGxlTWVzc2FnZSh0Lm1ldGhvZCx0LmFyZ3MpLnRoZW4ocz0+e3RoaXMuX3NlbmQobmV3IHJuKHRoaXMuX3dvcmtlcklkLG4scyx2b2lkIDApKX0scz0+e3MuZGV0YWlsIGluc3RhbmNlb2YgRXJyb3ImJihzLmRldGFpbD1adChzLmRldGFpbCkpLHRoaXMuX3NlbmQobmV3IHJuKHRoaXMuX3dvcmtlcklkLG4sdm9pZCAwLFp0KHMpKSl9KX1faGFuZGxlU3Vic2NyaWJlRXZlbnRNZXNzYWdlKHQpe2NvbnN0IG49dC5yZXEscj10aGlzLl9oYW5kbGVyLmhhbmRsZUV2ZW50KHQuZXZlbnROYW1lLHQuYXJnKShzPT57dGhpcy5fc2VuZChuZXcgTXModGhpcy5fd29ya2VySWQsbixzKSl9KTt0aGlzLl9wZW5kaW5nRXZlbnRzLnNldChuLHIpfV9oYW5kbGVFdmVudE1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdFbWl0dGVycy5oYXModC5yZXEpKXtjb25zb2xlLndhcm4oIkdvdCBldmVudCBmb3IgdW5rbm93biByZXEiKTtyZXR1cm59dGhpcy5fcGVuZGluZ0VtaXR0ZXJzLmdldCh0LnJlcSkuZmlyZSh0LmV2ZW50KX1faGFuZGxlVW5zdWJzY3JpYmVFdmVudE1lc3NhZ2UodCl7aWYoIXRoaXMuX3BlbmRpbmdFdmVudHMuaGFzKHQucmVxKSl7Y29uc29sZS53YXJuKCJHb3QgdW5zdWJzY3JpYmUgZm9yIHVua25vd24gcmVxIik7cmV0dXJufXRoaXMuX3BlbmRpbmdFdmVudHMuZ2V0KHQucmVxKS5kaXNwb3NlKCksdGhpcy5fcGVuZGluZ0V2ZW50cy5kZWxldGUodC5yZXEpfV9zZW5kKHQpe2NvbnN0IG49W107aWYodC50eXBlPT09MClmb3IobGV0IHI9MDtyPHQuYXJncy5sZW5ndGg7cisrKXQuYXJnc1tyXWluc3RhbmNlb2YgQXJyYXlCdWZmZXImJm4ucHVzaCh0LmFyZ3Nbcl0pO2Vsc2UgdC50eXBlPT09MSYmdC5yZXMgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmbi5wdXNoKHQucmVzKTt0aGlzLl9oYW5kbGVyLnNlbmRNZXNzYWdlKHQsbil9fWZ1bmN0aW9uIHNuKGUpe3JldHVybiBlWzBdPT09Im8iJiZlWzFdPT09Im4iJiZubihlLmNoYXJDb2RlQXQoMikpfWZ1bmN0aW9uIGFuKGUpe3JldHVybi9eb25EeW5hbWljLy50ZXN0KGUpJiZubihlLmNoYXJDb2RlQXQoOSkpfWZ1bmN0aW9uIFBzKGUsdCxuKXtjb25zdCByPWw9PmZ1bmN0aW9uKCl7Y29uc3Qgbz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIHQobCxvKX0scz1sPT5mdW5jdGlvbihvKXtyZXR1cm4gbihsLG8pfSxpPXt9O2Zvcihjb25zdCBsIG9mIGUpe2lmKGFuKGwpKXtpW2xdPXMobCk7Y29udGludWV9aWYoc24obCkpe2lbbF09bihsLHZvaWQgMCk7Y29udGludWV9aVtsXT1yKGwpfXJldHVybiBpfWNsYXNzIERze2NvbnN0cnVjdG9yKHQsbil7dGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5PW4sdGhpcy5fcmVxdWVzdEhhbmRsZXI9bnVsbCx0aGlzLl9wcm90b2NvbD1uZXcgRnMoe3NlbmRNZXNzYWdlOihyLHMpPT57dChyLHMpfSxoYW5kbGVNZXNzYWdlOihyLHMpPT50aGlzLl9oYW5kbGVNZXNzYWdlKHIscyksaGFuZGxlRXZlbnQ6KHIscyk9PnRoaXMuX2hhbmRsZUV2ZW50KHIscyl9KX1vbm1lc3NhZ2UodCl7dGhpcy5fcHJvdG9jb2wuaGFuZGxlTWVzc2FnZSh0KX1faGFuZGxlTWVzc2FnZSh0LG4pe2lmKHQ9PT1ScylyZXR1cm4gdGhpcy5pbml0aWFsaXplKG5bMF0sblsxXSxuWzJdLG5bM10pO2lmKCF0aGlzLl9yZXF1ZXN0SGFuZGxlcnx8dHlwZW9mIHRoaXMuX3JlcXVlc3RIYW5kbGVyW3RdIT0iZnVuY3Rpb24iKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoIk1pc3NpbmcgcmVxdWVzdEhhbmRsZXIgb3IgbWV0aG9kOiAiK3QpKTt0cnl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9yZXF1ZXN0SGFuZGxlclt0XS5hcHBseSh0aGlzLl9yZXF1ZXN0SGFuZGxlcixuKSl9Y2F0Y2gocil7cmV0dXJuIFByb21pc2UucmVqZWN0KHIpfX1faGFuZGxlRXZlbnQodCxuKXtpZighdGhpcy5fcmVxdWVzdEhhbmRsZXIpdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIik7aWYoYW4odCkpe2NvbnN0IHI9dGhpcy5fcmVxdWVzdEhhbmRsZXJbdF0uY2FsbCh0aGlzLl9yZXF1ZXN0SGFuZGxlcixuKTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZHluYW1pYyBldmVudCAke3R9IG9uIHJlcXVlc3QgaGFuZGxlci5gKTtyZXR1cm4gcn1pZihzbih0KSl7Y29uc3Qgcj10aGlzLl9yZXF1ZXN0SGFuZGxlclt0XTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXZlbnQgJHt0fSBvbiByZXF1ZXN0IGhhbmRsZXIuYCk7cmV0dXJuIHJ9dGhyb3cgbmV3IEVycm9yKGBNYWxmb3JtZWQgZXZlbnQgbmFtZSAke3R9YCl9aW5pdGlhbGl6ZSh0LG4scixzKXt0aGlzLl9wcm90b2NvbC5zZXRXb3JrZXJJZCh0KTtjb25zdCBvPVBzKHMsKHUsYyk9PnRoaXMuX3Byb3RvY29sLnNlbmRNZXNzYWdlKHUsYyksKHUsYyk9PnRoaXMuX3Byb3RvY29sLmxpc3Rlbih1LGMpKTtyZXR1cm4gdGhpcy5fcmVxdWVzdEhhbmRsZXJGYWN0b3J5Pyh0aGlzLl9yZXF1ZXN0SGFuZGxlcj10aGlzLl9yZXF1ZXN0SGFuZGxlckZhY3RvcnkobyksUHJvbWlzZS5yZXNvbHZlKHZ0KHRoaXMuX3JlcXVlc3RIYW5kbGVyKSkpOihuJiYodHlwZW9mIG4uYmFzZVVybDwidSImJmRlbGV0ZSBuLmJhc2VVcmwsdHlwZW9mIG4ucGF0aHM8InUiJiZ0eXBlb2Ygbi5wYXRocy52czwidSImJmRlbGV0ZSBuLnBhdGhzLnZzLHR5cGVvZiBuLnRydXN0ZWRUeXBlc1BvbGljeTwidSImJmRlbGV0ZSBuLnRydXN0ZWRUeXBlc1BvbGljeSxuLmNhdGNoRXJyb3I9ITAsZ2xvYmFsVGhpcy5yZXF1aXJlLmNvbmZpZyhuKSksbmV3IFByb21pc2UoKHUsYyk9Pntjb25zdCBoPWdsb2JhbFRoaXMucmVxdWlyZTtoKFtyXSxmPT57aWYodGhpcy5fcmVxdWVzdEhhbmRsZXI9Zi5jcmVhdGUobyksIXRoaXMuX3JlcXVlc3RIYW5kbGVyKXtjKG5ldyBFcnJvcigiTm8gUmVxdWVzdEhhbmRsZXIhIikpO3JldHVybn11KHZ0KHRoaXMuX3JlcXVlc3RIYW5kbGVyKSl9LGMpfSkpfX1jbGFzcyBtZXtjb25zdHJ1Y3Rvcih0LG4scixzKXt0aGlzLm9yaWdpbmFsU3RhcnQ9dCx0aGlzLm9yaWdpbmFsTGVuZ3RoPW4sdGhpcy5tb2RpZmllZFN0YXJ0PXIsdGhpcy5tb2RpZmllZExlbmd0aD1zfWdldE9yaWdpbmFsRW5kKCl7cmV0dXJuIHRoaXMub3JpZ2luYWxTdGFydCt0aGlzLm9yaWdpbmFsTGVuZ3RofWdldE1vZGlmaWVkRW5kKCl7cmV0dXJuIHRoaXMubW9kaWZpZWRTdGFydCt0aGlzLm1vZGlmaWVkTGVuZ3RofX1mdW5jdGlvbiBsbihlLHQpe3JldHVybih0PDw1KS10K2V8MH1mdW5jdGlvbiBUcyhlLHQpe3Q9bG4oMTQ5NDE3LHQpO2ZvcihsZXQgbj0wLHI9ZS5sZW5ndGg7bjxyO24rKyl0PWxuKGUuY2hhckNvZGVBdChuKSx0KTtyZXR1cm4gdH1jbGFzcyBvbntjb25zdHJ1Y3Rvcih0KXt0aGlzLnNvdXJjZT10fWdldEVsZW1lbnRzKCl7Y29uc3QgdD10aGlzLnNvdXJjZSxuPW5ldyBJbnQzMkFycmF5KHQubGVuZ3RoKTtmb3IobGV0IHI9MCxzPXQubGVuZ3RoO3I8cztyKyspbltyXT10LmNoYXJDb2RlQXQocik7cmV0dXJuIG59fWZ1bmN0aW9uIFZzKGUsdCxuKXtyZXR1cm4gbmV3IGdlKG5ldyBvbihlKSxuZXcgb24odCkpLkNvbXB1dGVEaWZmKG4pLmNoYW5nZXN9Y2xhc3Mga2V7c3RhdGljIEFzc2VydCh0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcihuKX19Y2xhc3MgRmV7c3RhdGljIENvcHkodCxuLHIscyxpKXtmb3IobGV0IGw9MDtsPGk7bCsrKXJbcytsXT10W24rbF19c3RhdGljIENvcHkyKHQsbixyLHMsaSl7Zm9yKGxldCBsPTA7bDxpO2wrKylyW3MrbF09dFtuK2xdfX1jbGFzcyB1bntjb25zdHJ1Y3Rvcigpe3RoaXMubV9jaGFuZ2VzPVtdLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNCx0aGlzLm1fb3JpZ2luYWxDb3VudD0wLHRoaXMubV9tb2RpZmllZENvdW50PTB9TWFya05leHRDaGFuZ2UoKXsodGhpcy5tX29yaWdpbmFsQ291bnQ+MHx8dGhpcy5tX21vZGlmaWVkQ291bnQ+MCkmJnRoaXMubV9jaGFuZ2VzLnB1c2gobmV3IG1lKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHRoaXMubV9vcmlnaW5hbENvdW50LHRoaXMubV9tb2RpZmllZFN0YXJ0LHRoaXMubV9tb2RpZmllZENvdW50KSksdGhpcy5tX29yaWdpbmFsQ291bnQ9MCx0aGlzLm1fbW9kaWZpZWRDb3VudD0wLHRoaXMubV9vcmlnaW5hbFN0YXJ0PTEwNzM3NDE4MjQsdGhpcy5tX21vZGlmaWVkU3RhcnQ9MTA3Mzc0MTgyNH1BZGRPcmlnaW5hbEVsZW1lbnQodCxuKXt0aGlzLm1fb3JpZ2luYWxTdGFydD1NYXRoLm1pbih0aGlzLm1fb3JpZ2luYWxTdGFydCx0KSx0aGlzLm1fbW9kaWZpZWRTdGFydD1NYXRoLm1pbih0aGlzLm1fbW9kaWZpZWRTdGFydCxuKSx0aGlzLm1fb3JpZ2luYWxDb3VudCsrfUFkZE1vZGlmaWVkRWxlbWVudCh0LG4pe3RoaXMubV9vcmlnaW5hbFN0YXJ0PU1hdGgubWluKHRoaXMubV9vcmlnaW5hbFN0YXJ0LHQpLHRoaXMubV9tb2RpZmllZFN0YXJ0PU1hdGgubWluKHRoaXMubV9tb2RpZmllZFN0YXJ0LG4pLHRoaXMubV9tb2RpZmllZENvdW50Kyt9Z2V0Q2hhbmdlcygpe3JldHVybih0aGlzLm1fb3JpZ2luYWxDb3VudD4wfHx0aGlzLm1fbW9kaWZpZWRDb3VudD4wKSYmdGhpcy5NYXJrTmV4dENoYW5nZSgpLHRoaXMubV9jaGFuZ2VzfWdldFJldmVyc2VDaGFuZ2VzKCl7cmV0dXJuKHRoaXMubV9vcmlnaW5hbENvdW50PjB8fHRoaXMubV9tb2RpZmllZENvdW50PjApJiZ0aGlzLk1hcmtOZXh0Q2hhbmdlKCksdGhpcy5tX2NoYW5nZXMucmV2ZXJzZSgpLHRoaXMubV9jaGFuZ2VzfX1jbGFzcyBnZXtjb25zdHJ1Y3Rvcih0LG4scj1udWxsKXt0aGlzLkNvbnRpbnVlUHJvY2Vzc2luZ1ByZWRpY2F0ZT1yLHRoaXMuX29yaWdpbmFsU2VxdWVuY2U9dCx0aGlzLl9tb2RpZmllZFNlcXVlbmNlPW47Y29uc3RbcyxpLGxdPWdlLl9nZXRFbGVtZW50cyh0KSxbbyx1LGNdPWdlLl9nZXRFbGVtZW50cyhuKTt0aGlzLl9oYXNTdHJpbmdzPWwmJmMsdGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50cz1zLHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2g9aSx0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzPW8sdGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaD11LHRoaXMubV9mb3J3YXJkSGlzdG9yeT1bXSx0aGlzLm1fcmV2ZXJzZUhpc3Rvcnk9W119c3RhdGljIF9pc1N0cmluZ0FycmF5KHQpe3JldHVybiB0Lmxlbmd0aD4wJiZ0eXBlb2YgdFswXT09InN0cmluZyJ9c3RhdGljIF9nZXRFbGVtZW50cyh0KXtjb25zdCBuPXQuZ2V0RWxlbWVudHMoKTtpZihnZS5faXNTdHJpbmdBcnJheShuKSl7Y29uc3Qgcj1uZXcgSW50MzJBcnJheShuLmxlbmd0aCk7Zm9yKGxldCBzPTAsaT1uLmxlbmd0aDtzPGk7cysrKXJbc109VHMobltzXSwwKTtyZXR1cm5bbixyLCEwXX1yZXR1cm4gbiBpbnN0YW5jZW9mIEludDMyQXJyYXk/W1tdLG4sITFdOltbXSxuZXcgSW50MzJBcnJheShuKSwhMV19RWxlbWVudHNBcmVFcXVhbCh0LG4pe3JldHVybiB0aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW3RdIT09dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaFtuXT8hMTp0aGlzLl9oYXNTdHJpbmdzP3RoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF09PT10aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW25dOiEwfUVsZW1lbnRzQXJlU3RyaWN0RXF1YWwodCxuKXtpZighdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQsbikpcmV0dXJuITE7Y29uc3Qgcj1nZS5fZ2V0U3RyaWN0RWxlbWVudCh0aGlzLl9vcmlnaW5hbFNlcXVlbmNlLHQpLHM9Z2UuX2dldFN0cmljdEVsZW1lbnQodGhpcy5fbW9kaWZpZWRTZXF1ZW5jZSxuKTtyZXR1cm4gcj09PXN9c3RhdGljIF9nZXRTdHJpY3RFbGVtZW50KHQsbil7cmV0dXJuIHR5cGVvZiB0LmdldFN0cmljdEVsZW1lbnQ9PSJmdW5jdGlvbiI/dC5nZXRTdHJpY3RFbGVtZW50KG4pOm51bGx9T3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2hbdF0hPT10aGlzLl9vcmlnaW5hbEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fb3JpZ2luYWxTdHJpbmdFbGVtZW50c1t0XT09PXRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbbl06ITB9TW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2hbdF0hPT10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoW25dPyExOnRoaXMuX2hhc1N0cmluZ3M/dGhpcy5fbW9kaWZpZWRTdHJpbmdFbGVtZW50c1t0XT09PXRoaXMuX21vZGlmaWVkU3RyaW5nRWxlbWVudHNbbl06ITB9Q29tcHV0ZURpZmYodCl7cmV0dXJuIHRoaXMuX0NvbXB1dGVEaWZmKDAsdGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgtMSwwLHRoaXMuX21vZGlmaWVkRWxlbWVudHNPckhhc2gubGVuZ3RoLTEsdCl9X0NvbXB1dGVEaWZmKHQsbixyLHMsaSl7Y29uc3QgbD1bITFdO2xldCBvPXRoaXMuQ29tcHV0ZURpZmZSZWN1cnNpdmUodCxuLHIscyxsKTtyZXR1cm4gaSYmKG89dGhpcy5QcmV0dGlmeUNoYW5nZXMobykpLHtxdWl0RWFybHk6bFswXSxjaGFuZ2VzOm99fUNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsbixyLHMsaSl7Zm9yKGlbMF09ITE7dDw9biYmcjw9cyYmdGhpcy5FbGVtZW50c0FyZUVxdWFsKHQscik7KXQrKyxyKys7Zm9yKDtuPj10JiZzPj1yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwobixzKTspbi0tLHMtLTtpZih0Pm58fHI+cyl7bGV0IGY7cmV0dXJuIHI8PXM/KGtlLkFzc2VydCh0PT09bisxLCJvcmlnaW5hbFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gb3JpZ2luYWxFbmQiKSxmPVtuZXcgbWUodCwwLHIscy1yKzEpXSk6dDw9bj8oa2UuQXNzZXJ0KHI9PT1zKzEsIm1vZGlmaWVkU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBtb2RpZmllZEVuZCIpLGY9W25ldyBtZSh0LG4tdCsxLHIsMCldKTooa2UuQXNzZXJ0KHQ9PT1uKzEsIm9yaWdpbmFsU3RhcnQgc2hvdWxkIG9ubHkgYmUgb25lIG1vcmUgdGhhbiBvcmlnaW5hbEVuZCIpLGtlLkFzc2VydChyPT09cysxLCJtb2RpZmllZFN0YXJ0IHNob3VsZCBvbmx5IGJlIG9uZSBtb3JlIHRoYW4gbW9kaWZpZWRFbmQiKSxmPVtdKSxmfWNvbnN0IGw9WzBdLG89WzBdLHU9dGhpcy5Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxuLHIscyxsLG8saSksYz1sWzBdLGg9b1swXTtpZih1IT09bnVsbClyZXR1cm4gdTtpZighaVswXSl7Y29uc3QgZj10aGlzLkNvbXB1dGVEaWZmUmVjdXJzaXZlKHQsYyxyLGgsaSk7bGV0IGQ9W107cmV0dXJuIGlbMF0/ZD1bbmV3IG1lKGMrMSxuLShjKzEpKzEsaCsxLHMtKGgrMSkrMSldOmQ9dGhpcy5Db21wdXRlRGlmZlJlY3Vyc2l2ZShjKzEsbixoKzEscyxpKSx0aGlzLkNvbmNhdGVuYXRlQ2hhbmdlcyhmLGQpfXJldHVybltuZXcgbWUodCxuLXQrMSxyLHMtcisxKV19V0FMS1RSQUNFKHQsbixyLHMsaSxsLG8sdSxjLGgsZixkLG0sZyx4LHYsTixTKXtsZXQgXz1udWxsLEw9bnVsbCxwPW5ldyB1bixSPW4seT1yLEU9bVswXS12WzBdLXMsST0tMTA3Mzc0MTgyNCxHPXRoaXMubV9mb3J3YXJkSGlzdG9yeS5sZW5ndGgtMTtkb3tjb25zdCB3PUUrdDt3PT09Unx8dzx5JiZjW3ctMV08Y1t3KzFdPyhmPWNbdysxXSxnPWYtRS1zLGY8SSYmcC5NYXJrTmV4dENoYW5nZSgpLEk9ZixwLkFkZE1vZGlmaWVkRWxlbWVudChmKzEsZyksRT13KzEtdCk6KGY9Y1t3LTFdKzEsZz1mLUUtcyxmPEkmJnAuTWFya05leHRDaGFuZ2UoKSxJPWYtMSxwLkFkZE9yaWdpbmFsRWxlbWVudChmLGcrMSksRT13LTEtdCksRz49MCYmKGM9dGhpcy5tX2ZvcndhcmRIaXN0b3J5W0ddLHQ9Y1swXSxSPTEseT1jLmxlbmd0aC0xKX13aGlsZSgtLUc+PS0xKTtpZihfPXAuZ2V0UmV2ZXJzZUNoYW5nZXMoKSxTWzBdKXtsZXQgdz1tWzBdKzEsYj12WzBdKzE7aWYoXyE9PW51bGwmJl8ubGVuZ3RoPjApe2NvbnN0IEM9X1tfLmxlbmd0aC0xXTt3PU1hdGgubWF4KHcsQy5nZXRPcmlnaW5hbEVuZCgpKSxiPU1hdGgubWF4KGIsQy5nZXRNb2RpZmllZEVuZCgpKX1MPVtuZXcgbWUodyxkLXcrMSxiLHgtYisxKV19ZWxzZXtwPW5ldyB1bixSPWwseT1vLEU9bVswXS12WzBdLXUsST0xMDczNzQxODI0LEc9Tj90aGlzLm1fcmV2ZXJzZUhpc3RvcnkubGVuZ3RoLTE6dGhpcy5tX3JldmVyc2VIaXN0b3J5Lmxlbmd0aC0yO2Rve2NvbnN0IHc9RStpO3c9PT1SfHx3PHkmJmhbdy0xXT49aFt3KzFdPyhmPWhbdysxXS0xLGc9Zi1FLXUsZj5JJiZwLk1hcmtOZXh0Q2hhbmdlKCksST1mKzEscC5BZGRPcmlnaW5hbEVsZW1lbnQoZisxLGcrMSksRT13KzEtaSk6KGY9aFt3LTFdLGc9Zi1FLXUsZj5JJiZwLk1hcmtOZXh0Q2hhbmdlKCksST1mLHAuQWRkTW9kaWZpZWRFbGVtZW50KGYrMSxnKzEpLEU9dy0xLWkpLEc+PTAmJihoPXRoaXMubV9yZXZlcnNlSGlzdG9yeVtHXSxpPWhbMF0sUj0xLHk9aC5sZW5ndGgtMSl9d2hpbGUoLS1HPj0tMSk7TD1wLmdldENoYW5nZXMoKX1yZXR1cm4gdGhpcy5Db25jYXRlbmF0ZUNoYW5nZXMoXyxMKX1Db21wdXRlUmVjdXJzaW9uUG9pbnQodCxuLHIscyxpLGwsbyl7bGV0IHU9MCxjPTAsaD0wLGY9MCxkPTAsbT0wO3QtLSxyLS0saVswXT0wLGxbMF09MCx0aGlzLm1fZm9yd2FyZEhpc3Rvcnk9W10sdGhpcy5tX3JldmVyc2VIaXN0b3J5PVtdO2NvbnN0IGc9bi10KyhzLXIpLHg9ZysxLHY9bmV3IEludDMyQXJyYXkoeCksTj1uZXcgSW50MzJBcnJheSh4KSxTPXMtcixfPW4tdCxMPXQtcixwPW4tcyx5PShfLVMpJTI9PT0wO3ZbU109dCxOW19dPW4sb1swXT0hMTtmb3IobGV0IEU9MTtFPD1nLzIrMTtFKyspe2xldCBJPTAsRz0wO2g9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChTLUUsRSxTLHgpLGY9dGhpcy5DbGlwRGlhZ29uYWxCb3VuZChTK0UsRSxTLHgpO2ZvcihsZXQgYj1oO2I8PWY7Yis9Mil7Yj09PWh8fGI8ZiYmdltiLTFdPHZbYisxXT91PXZbYisxXTp1PXZbYi0xXSsxLGM9dS0oYi1TKS1MO2NvbnN0IEM9dTtmb3IoO3U8biYmYzxzJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodSsxLGMrMSk7KXUrKyxjKys7aWYodltiXT11LHUrYz5JK0cmJihJPXUsRz1jKSwheSYmTWF0aC5hYnMoYi1fKTw9RS0xJiZ1Pj1OW2JdKXJldHVybiBpWzBdPXUsbFswXT1jLEM8PU5bYl0mJkU8PTE0NDg/dGhpcy5XQUxLVFJBQ0UoUyxoLGYsTCxfLGQsbSxwLHYsTix1LG4saSxjLHMsbCx5LG8pOm51bGx9Y29uc3Qgdz0oSS10KyhHLXIpLUUpLzI7aWYodGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUhPT1udWxsJiYhdGhpcy5Db250aW51ZVByb2Nlc3NpbmdQcmVkaWNhdGUoSSx3KSlyZXR1cm4gb1swXT0hMCxpWzBdPUksbFswXT1HLHc+MCYmRTw9MTQ0OD90aGlzLldBTEtUUkFDRShTLGgsZixMLF8sZCxtLHAsdixOLHUsbixpLGMscyxsLHksbyk6KHQrKyxyKyssW25ldyBtZSh0LG4tdCsxLHIscy1yKzEpXSk7ZD10aGlzLkNsaXBEaWFnb25hbEJvdW5kKF8tRSxFLF8seCksbT10aGlzLkNsaXBEaWFnb25hbEJvdW5kKF8rRSxFLF8seCk7Zm9yKGxldCBiPWQ7Yjw9bTtiKz0yKXtiPT09ZHx8YjxtJiZOW2ItMV0+PU5bYisxXT91PU5bYisxXS0xOnU9TltiLTFdLGM9dS0oYi1fKS1wO2NvbnN0IEM9dTtmb3IoO3U+dCYmYz5yJiZ0aGlzLkVsZW1lbnRzQXJlRXF1YWwodSxjKTspdS0tLGMtLTtpZihOW2JdPXUseSYmTWF0aC5hYnMoYi1TKTw9RSYmdTw9dltiXSlyZXR1cm4gaVswXT11LGxbMF09YyxDPj12W2JdJiZFPD0xNDQ4P3RoaXMuV0FMS1RSQUNFKFMsaCxmLEwsXyxkLG0scCx2LE4sdSxuLGksYyxzLGwseSxvKTpudWxsfWlmKEU8PTE0NDcpe2xldCBiPW5ldyBJbnQzMkFycmF5KGYtaCsyKTtiWzBdPVMtaCsxLEZlLkNvcHkyKHYsaCxiLDEsZi1oKzEpLHRoaXMubV9mb3J3YXJkSGlzdG9yeS5wdXNoKGIpLGI9bmV3IEludDMyQXJyYXkobS1kKzIpLGJbMF09Xy1kKzEsRmUuQ29weTIoTixkLGIsMSxtLWQrMSksdGhpcy5tX3JldmVyc2VIaXN0b3J5LnB1c2goYil9fXJldHVybiB0aGlzLldBTEtUUkFDRShTLGgsZixMLF8sZCxtLHAsdixOLHUsbixpLGMscyxsLHksbyl9UHJldHRpZnlDaGFuZ2VzKHQpe2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtjb25zdCByPXRbbl0scz1uPHQubGVuZ3RoLTE/dFtuKzFdLm9yaWdpbmFsU3RhcnQ6dGhpcy5fb3JpZ2luYWxFbGVtZW50c09ySGFzaC5sZW5ndGgsaT1uPHQubGVuZ3RoLTE/dFtuKzFdLm1vZGlmaWVkU3RhcnQ6dGhpcy5fbW9kaWZpZWRFbGVtZW50c09ySGFzaC5sZW5ndGgsbD1yLm9yaWdpbmFsTGVuZ3RoPjAsbz1yLm1vZGlmaWVkTGVuZ3RoPjA7Zm9yKDtyLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aDxzJiZyLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aDxpJiYoIWx8fHRoaXMuT3JpZ2luYWxFbGVtZW50c0FyZUVxdWFsKHIub3JpZ2luYWxTdGFydCxyLm9yaWdpbmFsU3RhcnQrci5vcmlnaW5hbExlbmd0aCkpJiYoIW98fHRoaXMuTW9kaWZpZWRFbGVtZW50c0FyZUVxdWFsKHIubW9kaWZpZWRTdGFydCxyLm1vZGlmaWVkU3RhcnQrci5tb2RpZmllZExlbmd0aCkpOyl7Y29uc3QgYz10aGlzLkVsZW1lbnRzQXJlU3RyaWN0RXF1YWwoci5vcmlnaW5hbFN0YXJ0LHIubW9kaWZpZWRTdGFydCk7aWYodGhpcy5FbGVtZW50c0FyZVN0cmljdEVxdWFsKHIub3JpZ2luYWxTdGFydCtyLm9yaWdpbmFsTGVuZ3RoLHIubW9kaWZpZWRTdGFydCtyLm1vZGlmaWVkTGVuZ3RoKSYmIWMpYnJlYWs7ci5vcmlnaW5hbFN0YXJ0Kyssci5tb2RpZmllZFN0YXJ0Kyt9Y29uc3QgdT1bbnVsbF07aWYobjx0Lmxlbmd0aC0xJiZ0aGlzLkNoYW5nZXNPdmVybGFwKHRbbl0sdFtuKzFdLHUpKXt0W25dPXVbMF0sdC5zcGxpY2UobisxLDEpLG4tLTtjb250aW51ZX19Zm9yKGxldCBuPXQubGVuZ3RoLTE7bj49MDtuLS0pe2NvbnN0IHI9dFtuXTtsZXQgcz0wLGk9MDtpZihuPjApe2NvbnN0IGY9dFtuLTFdO3M9Zi5vcmlnaW5hbFN0YXJ0K2Yub3JpZ2luYWxMZW5ndGgsaT1mLm1vZGlmaWVkU3RhcnQrZi5tb2RpZmllZExlbmd0aH1jb25zdCBsPXIub3JpZ2luYWxMZW5ndGg+MCxvPXIubW9kaWZpZWRMZW5ndGg+MDtsZXQgdT0wLGM9dGhpcy5fYm91bmRhcnlTY29yZShyLm9yaWdpbmFsU3RhcnQsci5vcmlnaW5hbExlbmd0aCxyLm1vZGlmaWVkU3RhcnQsci5tb2RpZmllZExlbmd0aCk7Zm9yKGxldCBmPTE7O2YrKyl7Y29uc3QgZD1yLm9yaWdpbmFsU3RhcnQtZixtPXIubW9kaWZpZWRTdGFydC1mO2lmKGQ8c3x8bTxpfHxsJiYhdGhpcy5PcmlnaW5hbEVsZW1lbnRzQXJlRXF1YWwoZCxkK3Iub3JpZ2luYWxMZW5ndGgpfHxvJiYhdGhpcy5Nb2RpZmllZEVsZW1lbnRzQXJlRXF1YWwobSxtK3IubW9kaWZpZWRMZW5ndGgpKWJyZWFrO2NvbnN0IHg9KGQ9PT1zJiZtPT09aT81OjApK3RoaXMuX2JvdW5kYXJ5U2NvcmUoZCxyLm9yaWdpbmFsTGVuZ3RoLG0sci5tb2RpZmllZExlbmd0aCk7eD5jJiYoYz14LHU9Zil9ci5vcmlnaW5hbFN0YXJ0LT11LHIubW9kaWZpZWRTdGFydC09dTtjb25zdCBoPVtudWxsXTtpZihuPjAmJnRoaXMuQ2hhbmdlc092ZXJsYXAodFtuLTFdLHRbbl0saCkpe3Rbbi0xXT1oWzBdLHQuc3BsaWNlKG4sMSksbisrO2NvbnRpbnVlfX1pZih0aGlzLl9oYXNTdHJpbmdzKWZvcihsZXQgbj0xLHI9dC5sZW5ndGg7bjxyO24rKyl7Y29uc3Qgcz10W24tMV0saT10W25dLGw9aS5vcmlnaW5hbFN0YXJ0LXMub3JpZ2luYWxTdGFydC1zLm9yaWdpbmFsTGVuZ3RoLG89cy5vcmlnaW5hbFN0YXJ0LHU9aS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGgsYz11LW8saD1zLm1vZGlmaWVkU3RhcnQsZj1pLm1vZGlmaWVkU3RhcnQraS5tb2RpZmllZExlbmd0aCxkPWYtaDtpZihsPDUmJmM8MjAmJmQ8MjApe2NvbnN0IG09dGhpcy5fZmluZEJldHRlckNvbnRpZ3VvdXNTZXF1ZW5jZShvLGMsaCxkLGwpO2lmKG0pe2NvbnN0W2cseF09bTsoZyE9PXMub3JpZ2luYWxTdGFydCtzLm9yaWdpbmFsTGVuZ3RofHx4IT09cy5tb2RpZmllZFN0YXJ0K3MubW9kaWZpZWRMZW5ndGgpJiYocy5vcmlnaW5hbExlbmd0aD1nLXMub3JpZ2luYWxTdGFydCxzLm1vZGlmaWVkTGVuZ3RoPXgtcy5tb2RpZmllZFN0YXJ0LGkub3JpZ2luYWxTdGFydD1nK2wsaS5tb2RpZmllZFN0YXJ0PXgrbCxpLm9yaWdpbmFsTGVuZ3RoPXUtaS5vcmlnaW5hbFN0YXJ0LGkubW9kaWZpZWRMZW5ndGg9Zi1pLm1vZGlmaWVkU3RhcnQpfX19cmV0dXJuIHR9X2ZpbmRCZXR0ZXJDb250aWd1b3VzU2VxdWVuY2UodCxuLHIscyxpKXtpZihuPGl8fHM8aSlyZXR1cm4gbnVsbDtjb25zdCBsPXQrbi1pKzEsbz1yK3MtaSsxO2xldCB1PTAsYz0wLGg9MDtmb3IobGV0IGY9dDtmPGw7ZisrKWZvcihsZXQgZD1yO2Q8bztkKyspe2NvbnN0IG09dGhpcy5fY29udGlndW91c1NlcXVlbmNlU2NvcmUoZixkLGkpO20+MCYmbT51JiYodT1tLGM9ZixoPWQpfXJldHVybiB1PjA/W2MsaF06bnVsbH1fY29udGlndW91c1NlcXVlbmNlU2NvcmUodCxuLHIpe2xldCBzPTA7Zm9yKGxldCBpPTA7aTxyO2krKyl7aWYoIXRoaXMuRWxlbWVudHNBcmVFcXVhbCh0K2ksbitpKSlyZXR1cm4gMDtzKz10aGlzLl9vcmlnaW5hbFN0cmluZ0VsZW1lbnRzW3QraV0ubGVuZ3RofXJldHVybiBzfV9PcmlnaW5hbElzQm91bmRhcnkodCl7cmV0dXJuIHQ8PTB8fHQ+PXRoaXMuX29yaWdpbmFsRWxlbWVudHNPckhhc2gubGVuZ3RoLTE/ITA6dGhpcy5faGFzU3RyaW5ncyYmL15ccyokLy50ZXN0KHRoaXMuX29yaWdpbmFsU3RyaW5nRWxlbWVudHNbdF0pfV9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkodCxuKXtpZih0aGlzLl9PcmlnaW5hbElzQm91bmRhcnkodCl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeSh0LTEpKXJldHVybiEwO2lmKG4+MCl7Y29uc3Qgcj10K247aWYodGhpcy5fT3JpZ2luYWxJc0JvdW5kYXJ5KHItMSl8fHRoaXMuX09yaWdpbmFsSXNCb3VuZGFyeShyKSlyZXR1cm4hMH1yZXR1cm4hMX1fTW9kaWZpZWRJc0JvdW5kYXJ5KHQpe3JldHVybiB0PD0wfHx0Pj10aGlzLl9tb2RpZmllZEVsZW1lbnRzT3JIYXNoLmxlbmd0aC0xPyEwOnRoaXMuX2hhc1N0cmluZ3MmJi9eXHMqJC8udGVzdCh0aGlzLl9tb2RpZmllZFN0cmluZ0VsZW1lbnRzW3RdKX1fTW9kaWZpZWRSZWdpb25Jc0JvdW5kYXJ5KHQsbil7aWYodGhpcy5fTW9kaWZpZWRJc0JvdW5kYXJ5KHQpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkodC0xKSlyZXR1cm4hMDtpZihuPjApe2NvbnN0IHI9dCtuO2lmKHRoaXMuX01vZGlmaWVkSXNCb3VuZGFyeShyLTEpfHx0aGlzLl9Nb2RpZmllZElzQm91bmRhcnkocikpcmV0dXJuITB9cmV0dXJuITF9X2JvdW5kYXJ5U2NvcmUodCxuLHIscyl7Y29uc3QgaT10aGlzLl9PcmlnaW5hbFJlZ2lvbklzQm91bmRhcnkodCxuKT8xOjAsbD10aGlzLl9Nb2RpZmllZFJlZ2lvbklzQm91bmRhcnkocixzKT8xOjA7cmV0dXJuIGkrbH1Db25jYXRlbmF0ZUNoYW5nZXModCxuKXtjb25zdCByPVtdO2lmKHQubGVuZ3RoPT09MHx8bi5sZW5ndGg9PT0wKXJldHVybiBuLmxlbmd0aD4wP246dDtpZih0aGlzLkNoYW5nZXNPdmVybGFwKHRbdC5sZW5ndGgtMV0sblswXSxyKSl7Y29uc3Qgcz1uZXcgQXJyYXkodC5sZW5ndGgrbi5sZW5ndGgtMSk7cmV0dXJuIEZlLkNvcHkodCwwLHMsMCx0Lmxlbmd0aC0xKSxzW3QubGVuZ3RoLTFdPXJbMF0sRmUuQ29weShuLDEscyx0Lmxlbmd0aCxuLmxlbmd0aC0xKSxzfWVsc2V7Y29uc3Qgcz1uZXcgQXJyYXkodC5sZW5ndGgrbi5sZW5ndGgpO3JldHVybiBGZS5Db3B5KHQsMCxzLDAsdC5sZW5ndGgpLEZlLkNvcHkobiwwLHMsdC5sZW5ndGgsbi5sZW5ndGgpLHN9fUNoYW5nZXNPdmVybGFwKHQsbixyKXtpZihrZS5Bc3NlcnQodC5vcmlnaW5hbFN0YXJ0PD1uLm9yaWdpbmFsU3RhcnQsIkxlZnQgY2hhbmdlIGlzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gcmlnaHQgY2hhbmdlIiksa2UuQXNzZXJ0KHQubW9kaWZpZWRTdGFydDw9bi5tb2RpZmllZFN0YXJ0LCJMZWZ0IGNoYW5nZSBpcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHJpZ2h0IGNoYW5nZSIpLHQub3JpZ2luYWxTdGFydCt0Lm9yaWdpbmFsTGVuZ3RoPj1uLm9yaWdpbmFsU3RhcnR8fHQubW9kaWZpZWRTdGFydCt0Lm1vZGlmaWVkTGVuZ3RoPj1uLm1vZGlmaWVkU3RhcnQpe2NvbnN0IHM9dC5vcmlnaW5hbFN0YXJ0O2xldCBpPXQub3JpZ2luYWxMZW5ndGg7Y29uc3QgbD10Lm1vZGlmaWVkU3RhcnQ7bGV0IG89dC5tb2RpZmllZExlbmd0aDtyZXR1cm4gdC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGg+PW4ub3JpZ2luYWxTdGFydCYmKGk9bi5vcmlnaW5hbFN0YXJ0K24ub3JpZ2luYWxMZW5ndGgtdC5vcmlnaW5hbFN0YXJ0KSx0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aD49bi5tb2RpZmllZFN0YXJ0JiYobz1uLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aC10Lm1vZGlmaWVkU3RhcnQpLHJbMF09bmV3IG1lKHMsaSxsLG8pLCEwfWVsc2UgcmV0dXJuIHJbMF09bnVsbCwhMX1DbGlwRGlhZ29uYWxCb3VuZCh0LG4scixzKXtpZih0Pj0wJiZ0PHMpcmV0dXJuIHQ7Y29uc3QgaT1yLGw9cy1yLTEsbz1uJTI9PT0wO2lmKHQ8MCl7Y29uc3QgdT1pJTI9PT0wO3JldHVybiBvPT09dT8wOjF9ZWxzZXtjb25zdCB1PWwlMj09PTA7cmV0dXJuIG89PT11P3MtMTpzLTJ9fX12YXIgY249e0VOVl9UWVBFOiJsb2NhbCIsTk9ERV9FTlY6InByb2R1Y3Rpb24ifTtsZXQgUGU7Y29uc3QgeXQ9Z2xvYmFsVGhpcy52c2NvZGU7aWYodHlwZW9mIHl0PCJ1IiYmdHlwZW9mIHl0LnByb2Nlc3M8InUiKXtjb25zdCBlPXl0LnByb2Nlc3M7UGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBlLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBlLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gZS5lbnZ9LGN3ZCgpe3JldHVybiBlLmN3ZCgpfX19ZWxzZSB0eXBlb2YgcHJvY2VzczwidSI/UGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiBwcm9jZXNzLnBsYXRmb3JtfSxnZXQgYXJjaCgpe3JldHVybiBwcm9jZXNzLmFyY2h9LGdldCBlbnYoKXtyZXR1cm4gY259LGN3ZCgpe3JldHVybiBjbi5WU0NPREVfQ1dEfHxwcm9jZXNzLmN3ZCgpfX06UGU9e2dldCBwbGF0Zm9ybSgpe3JldHVybiB6ZT8id2luMzIiOm1zPyJkYXJ3aW4iOiJsaW51eCJ9LGdldCBhcmNoKCl7fSxnZXQgZW52KCl7cmV0dXJue319LGN3ZCgpe3JldHVybiIvIn19O2NvbnN0IG50PVBlLmN3ZCxCcz1QZS5lbnYscXM9UGUucGxhdGZvcm0sSXM9NjUsVXM9OTcsSHM9OTAsV3M9MTIyLGJlPTQ2LGo9NDcsSz05MixfZT01OCx6cz02MztjbGFzcyBobiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHQsbixyKXtsZXQgczt0eXBlb2Ygbj09InN0cmluZyImJm4uaW5kZXhPZigibm90ICIpPT09MD8ocz0ibXVzdCBub3QgYmUiLG49bi5yZXBsYWNlKC9ebm90IC8sIiIpKTpzPSJtdXN0IGJlIjtjb25zdCBpPXQuaW5kZXhPZigiLiIpIT09LTE/InByb3BlcnR5IjoiYXJndW1lbnQiO2xldCBsPWBUaGUgIiR7dH0iICR7aX0gJHtzfSBvZiB0eXBlICR7bn1gO2wrPWAuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2Ygcn1gLHN1cGVyKGwpLHRoaXMuY29kZT0iRVJSX0lOVkFMSURfQVJHX1RZUEUifX1mdW5jdGlvbiAkcyhlLHQpe2lmKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpdGhyb3cgbmV3IGhuKHQsIk9iamVjdCIsZSl9ZnVuY3Rpb24gJChlLHQpe2lmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBuZXcgaG4odCwic3RyaW5nIixlKX1jb25zdCB4ZT1xcz09PSJ3aW4zMiI7ZnVuY3Rpb24gRihlKXtyZXR1cm4gZT09PWp8fGU9PT1LfWZ1bmN0aW9uIEV0KGUpe3JldHVybiBlPT09an1mdW5jdGlvbiBwZShlKXtyZXR1cm4gZT49SXMmJmU8PUhzfHxlPj1VcyYmZTw9V3N9ZnVuY3Rpb24gcnQoZSx0LG4scil7bGV0IHM9IiIsaT0wLGw9LTEsbz0wLHU9MDtmb3IobGV0IGM9MDtjPD1lLmxlbmd0aDsrK2Mpe2lmKGM8ZS5sZW5ndGgpdT1lLmNoYXJDb2RlQXQoYyk7ZWxzZXtpZihyKHUpKWJyZWFrO3U9an1pZihyKHUpKXtpZighKGw9PT1jLTF8fG89PT0xKSlpZihvPT09Mil7aWYocy5sZW5ndGg8Mnx8aSE9PTJ8fHMuY2hhckNvZGVBdChzLmxlbmd0aC0xKSE9PWJlfHxzLmNoYXJDb2RlQXQocy5sZW5ndGgtMikhPT1iZSl7aWYocy5sZW5ndGg+Mil7Y29uc3QgaD1zLmxhc3RJbmRleE9mKG4pO2g9PT0tMT8ocz0iIixpPTApOihzPXMuc2xpY2UoMCxoKSxpPXMubGVuZ3RoLTEtcy5sYXN0SW5kZXhPZihuKSksbD1jLG89MDtjb250aW51ZX1lbHNlIGlmKHMubGVuZ3RoIT09MCl7cz0iIixpPTAsbD1jLG89MDtjb250aW51ZX19dCYmKHMrPXMubGVuZ3RoPjA/YCR7bn0uLmA6Ii4uIixpPTIpfWVsc2Ugcy5sZW5ndGg+MD9zKz1gJHtufSR7ZS5zbGljZShsKzEsYyl9YDpzPWUuc2xpY2UobCsxLGMpLGk9Yy1sLTE7bD1jLG89MH1lbHNlIHU9PT1iZSYmbyE9PS0xPysrbzpvPS0xfXJldHVybiBzfWZ1bmN0aW9uIGZuKGUsdCl7JHModCwicGF0aE9iamVjdCIpO2NvbnN0IG49dC5kaXJ8fHQucm9vdCxyPXQuYmFzZXx8YCR7dC5uYW1lfHwiIn0ke3QuZXh0fHwiIn1gO3JldHVybiBuP249PT10LnJvb3Q/YCR7bn0ke3J9YDpgJHtufSR7ZX0ke3J9YDpyfWNvbnN0IFo9e3Jlc29sdmUoLi4uZSl7bGV0IHQ9IiIsbj0iIixyPSExO2ZvcihsZXQgcz1lLmxlbmd0aC0xO3M+PS0xO3MtLSl7bGV0IGk7aWYocz49MCl7aWYoaT1lW3NdLCQoaSwicGF0aCIpLGkubGVuZ3RoPT09MCljb250aW51ZX1lbHNlIHQubGVuZ3RoPT09MD9pPW50KCk6KGk9QnNbYD0ke3R9YF18fG50KCksKGk9PT12b2lkIDB8fGkuc2xpY2UoMCwyKS50b0xvd2VyQ2FzZSgpIT09dC50b0xvd2VyQ2FzZSgpJiZpLmNoYXJDb2RlQXQoMik9PT1LKSYmKGk9YCR7dH1cXGApKTtjb25zdCBsPWkubGVuZ3RoO2xldCBvPTAsdT0iIixjPSExO2NvbnN0IGg9aS5jaGFyQ29kZUF0KDApO2lmKGw9PT0xKUYoaCkmJihvPTEsYz0hMCk7ZWxzZSBpZihGKGgpKWlmKGM9ITAsRihpLmNoYXJDb2RlQXQoMSkpKXtsZXQgZj0yLGQ9Zjtmb3IoO2Y8bCYmIUYoaS5jaGFyQ29kZUF0KGYpKTspZisrO2lmKGY8bCYmZiE9PWQpe2NvbnN0IG09aS5zbGljZShkLGYpO2ZvcihkPWY7ZjxsJiZGKGkuY2hhckNvZGVBdChmKSk7KWYrKztpZihmPGwmJmYhPT1kKXtmb3IoZD1mO2Y8bCYmIUYoaS5jaGFyQ29kZUF0KGYpKTspZisrOyhmPT09bHx8ZiE9PWQpJiYodT1gXFxcXCR7bX1cXCR7aS5zbGljZShkLGYpfWAsbz1mKX19fWVsc2Ugbz0xO2Vsc2UgcGUoaCkmJmkuY2hhckNvZGVBdCgxKT09PV9lJiYodT1pLnNsaWNlKDAsMiksbz0yLGw+MiYmRihpLmNoYXJDb2RlQXQoMikpJiYoYz0hMCxvPTMpKTtpZih1Lmxlbmd0aD4wKWlmKHQubGVuZ3RoPjApe2lmKHUudG9Mb3dlckNhc2UoKSE9PXQudG9Mb3dlckNhc2UoKSljb250aW51ZX1lbHNlIHQ9dTtpZihyKXtpZih0Lmxlbmd0aD4wKWJyZWFrfWVsc2UgaWYobj1gJHtpLnNsaWNlKG8pfVxcJHtufWAscj1jLGMmJnQubGVuZ3RoPjApYnJlYWt9cmV0dXJuIG49cnQobiwhciwiXFwiLEYpLHI/YCR7dH1cXCR7bn1gOmAke3R9JHtufWB8fCIuIn0sbm9ybWFsaXplKGUpeyQoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuIi4iO2xldCBuPTAscixzPSExO2NvbnN0IGk9ZS5jaGFyQ29kZUF0KDApO2lmKHQ9PT0xKXJldHVybiBFdChpKT8iXFwiOmU7aWYoRihpKSlpZihzPSEwLEYoZS5jaGFyQ29kZUF0KDEpKSl7bGV0IG89Mix1PW87Zm9yKDtvPHQmJiFGKGUuY2hhckNvZGVBdChvKSk7KW8rKztpZihvPHQmJm8hPT11KXtjb25zdCBjPWUuc2xpY2UodSxvKTtmb3IodT1vO288dCYmRihlLmNoYXJDb2RlQXQobykpOylvKys7aWYobzx0JiZvIT09dSl7Zm9yKHU9bztvPHQmJiFGKGUuY2hhckNvZGVBdChvKSk7KW8rKztpZihvPT09dClyZXR1cm5gXFxcXCR7Y31cXCR7ZS5zbGljZSh1KX1cXGA7byE9PXUmJihyPWBcXFxcJHtjfVxcJHtlLnNsaWNlKHUsbyl9YCxuPW8pfX19ZWxzZSBuPTE7ZWxzZSBwZShpKSYmZS5jaGFyQ29kZUF0KDEpPT09X2UmJihyPWUuc2xpY2UoMCwyKSxuPTIsdD4yJiZGKGUuY2hhckNvZGVBdCgyKSkmJihzPSEwLG49MykpO2xldCBsPW48dD9ydChlLnNsaWNlKG4pLCFzLCJcXCIsRik6IiI7cmV0dXJuIGwubGVuZ3RoPT09MCYmIXMmJihsPSIuIiksbC5sZW5ndGg+MCYmRihlLmNoYXJDb2RlQXQodC0xKSkmJihsKz0iXFwiKSxyPT09dm9pZCAwP3M/YFxcJHtsfWA6bDpzP2Ake3J9XFwke2x9YDpgJHtyfSR7bH1gfSxpc0Fic29sdXRlKGUpeyQoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuITE7Y29uc3Qgbj1lLmNoYXJDb2RlQXQoMCk7cmV0dXJuIEYobil8fHQ+MiYmcGUobikmJmUuY2hhckNvZGVBdCgxKT09PV9lJiZGKGUuY2hhckNvZGVBdCgyKSl9LGpvaW4oLi4uZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiIuIjtsZXQgdCxuO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7KytpKXtjb25zdCBsPWVbaV07JChsLCJwYXRoIiksbC5sZW5ndGg+MCYmKHQ9PT12b2lkIDA/dD1uPWw6dCs9YFxcJHtsfWApfWlmKHQ9PT12b2lkIDApcmV0dXJuIi4iO2xldCByPSEwLHM9MDtpZih0eXBlb2Ygbj09InN0cmluZyImJkYobi5jaGFyQ29kZUF0KDApKSl7KytzO2NvbnN0IGk9bi5sZW5ndGg7aT4xJiZGKG4uY2hhckNvZGVBdCgxKSkmJigrK3MsaT4yJiYoRihuLmNoYXJDb2RlQXQoMikpPysrczpyPSExKSl9aWYocil7Zm9yKDtzPHQubGVuZ3RoJiZGKHQuY2hhckNvZGVBdChzKSk7KXMrKztzPj0yJiYodD1gXFwke3Quc2xpY2Uocyl9YCl9cmV0dXJuIFoubm9ybWFsaXplKHQpfSxyZWxhdGl2ZShlLHQpe2lmKCQoZSwiZnJvbSIpLCQodCwidG8iKSxlPT09dClyZXR1cm4iIjtjb25zdCBuPVoucmVzb2x2ZShlKSxyPVoucmVzb2x2ZSh0KTtpZihuPT09cnx8KGU9bi50b0xvd2VyQ2FzZSgpLHQ9ci50b0xvd2VyQ2FzZSgpLGU9PT10KSlyZXR1cm4iIjtsZXQgcz0wO2Zvcig7czxlLmxlbmd0aCYmZS5jaGFyQ29kZUF0KHMpPT09SzspcysrO2xldCBpPWUubGVuZ3RoO2Zvcig7aS0xPnMmJmUuY2hhckNvZGVBdChpLTEpPT09SzspaS0tO2NvbnN0IGw9aS1zO2xldCBvPTA7Zm9yKDtvPHQubGVuZ3RoJiZ0LmNoYXJDb2RlQXQobyk9PT1LOylvKys7bGV0IHU9dC5sZW5ndGg7Zm9yKDt1LTE+byYmdC5jaGFyQ29kZUF0KHUtMSk9PT1LOyl1LS07Y29uc3QgYz11LW8saD1sPGM/bDpjO2xldCBmPS0xLGQ9MDtmb3IoO2Q8aDtkKyspe2NvbnN0IGc9ZS5jaGFyQ29kZUF0KHMrZCk7aWYoZyE9PXQuY2hhckNvZGVBdChvK2QpKWJyZWFrO2c9PT1LJiYoZj1kKX1pZihkIT09aCl7aWYoZj09PS0xKXJldHVybiByfWVsc2V7aWYoYz5oKXtpZih0LmNoYXJDb2RlQXQobytkKT09PUspcmV0dXJuIHIuc2xpY2UobytkKzEpO2lmKGQ9PT0yKXJldHVybiByLnNsaWNlKG8rZCl9bD5oJiYoZS5jaGFyQ29kZUF0KHMrZCk9PT1LP2Y9ZDpkPT09MiYmKGY9MykpLGY9PT0tMSYmKGY9MCl9bGV0IG09IiI7Zm9yKGQ9cytmKzE7ZDw9aTsrK2QpKGQ9PT1pfHxlLmNoYXJDb2RlQXQoZCk9PT1LKSYmKG0rPW0ubGVuZ3RoPT09MD8iLi4iOiJcXC4uIik7cmV0dXJuIG8rPWYsbS5sZW5ndGg+MD9gJHttfSR7ci5zbGljZShvLHUpfWA6KHIuY2hhckNvZGVBdChvKT09PUsmJisrbyxyLnNsaWNlKG8sdSkpfSx0b05hbWVzcGFjZWRQYXRoKGUpe2lmKHR5cGVvZiBlIT0ic3RyaW5nInx8ZS5sZW5ndGg9PT0wKXJldHVybiBlO2NvbnN0IHQ9Wi5yZXNvbHZlKGUpO2lmKHQubGVuZ3RoPD0yKXJldHVybiBlO2lmKHQuY2hhckNvZGVBdCgwKT09PUspe2lmKHQuY2hhckNvZGVBdCgxKT09PUspe2NvbnN0IG49dC5jaGFyQ29kZUF0KDIpO2lmKG4hPT16cyYmbiE9PWJlKXJldHVybmBcXFxcP1xcVU5DXFwke3Quc2xpY2UoMil9YH19ZWxzZSBpZihwZSh0LmNoYXJDb2RlQXQoMCkpJiZ0LmNoYXJDb2RlQXQoMSk9PT1fZSYmdC5jaGFyQ29kZUF0KDIpPT09SylyZXR1cm5gXFxcXD9cXCR7dH1gO3JldHVybiBlfSxkaXJuYW1lKGUpeyQoZSwicGF0aCIpO2NvbnN0IHQ9ZS5sZW5ndGg7aWYodD09PTApcmV0dXJuIi4iO2xldCBuPS0xLHI9MDtjb25zdCBzPWUuY2hhckNvZGVBdCgwKTtpZih0PT09MSlyZXR1cm4gRihzKT9lOiIuIjtpZihGKHMpKXtpZihuPXI9MSxGKGUuY2hhckNvZGVBdCgxKSkpe2xldCBvPTIsdT1vO2Zvcig7bzx0JiYhRihlLmNoYXJDb2RlQXQobykpOylvKys7aWYobzx0JiZvIT09dSl7Zm9yKHU9bztvPHQmJkYoZS5jaGFyQ29kZUF0KG8pKTspbysrO2lmKG88dCYmbyE9PXUpe2Zvcih1PW87bzx0JiYhRihlLmNoYXJDb2RlQXQobykpOylvKys7aWYobz09PXQpcmV0dXJuIGU7byE9PXUmJihuPXI9bysxKX19fX1lbHNlIHBlKHMpJiZlLmNoYXJDb2RlQXQoMSk9PT1fZSYmKG49dD4yJiZGKGUuY2hhckNvZGVBdCgyKSk/MzoyLHI9bik7bGV0IGk9LTEsbD0hMDtmb3IobGV0IG89dC0xO28+PXI7LS1vKWlmKEYoZS5jaGFyQ29kZUF0KG8pKSl7aWYoIWwpe2k9bzticmVha319ZWxzZSBsPSExO2lmKGk9PT0tMSl7aWYobj09PS0xKXJldHVybiIuIjtpPW59cmV0dXJuIGUuc2xpY2UoMCxpKX0sYmFzZW5hbWUoZSx0KXt0IT09dm9pZCAwJiYkKHQsImV4dCIpLCQoZSwicGF0aCIpO2xldCBuPTAscj0tMSxzPSEwLGk7aWYoZS5sZW5ndGg+PTImJnBlKGUuY2hhckNvZGVBdCgwKSkmJmUuY2hhckNvZGVBdCgxKT09PV9lJiYobj0yKSx0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBsPXQubGVuZ3RoLTEsbz0tMTtmb3IoaT1lLmxlbmd0aC0xO2k+PW47LS1pKXtjb25zdCB1PWUuY2hhckNvZGVBdChpKTtpZihGKHUpKXtpZighcyl7bj1pKzE7YnJlYWt9fWVsc2Ugbz09PS0xJiYocz0hMSxvPWkrMSksbD49MCYmKHU9PT10LmNoYXJDb2RlQXQobCk/LS1sPT09LTEmJihyPWkpOihsPS0xLHI9bykpfXJldHVybiBuPT09cj9yPW86cj09PS0xJiYocj1lLmxlbmd0aCksZS5zbGljZShuLHIpfWZvcihpPWUubGVuZ3RoLTE7aT49bjstLWkpaWYoRihlLmNoYXJDb2RlQXQoaSkpKXtpZighcyl7bj1pKzE7YnJlYWt9fWVsc2Ugcj09PS0xJiYocz0hMSxyPWkrMSk7cmV0dXJuIHI9PT0tMT8iIjplLnNsaWNlKG4scil9LGV4dG5hbWUoZSl7JChlLCJwYXRoIik7bGV0IHQ9MCxuPS0xLHI9MCxzPS0xLGk9ITAsbD0wO2UubGVuZ3RoPj0yJiZlLmNoYXJDb2RlQXQoMSk9PT1fZSYmcGUoZS5jaGFyQ29kZUF0KDApKSYmKHQ9cj0yKTtmb3IobGV0IG89ZS5sZW5ndGgtMTtvPj10Oy0tbyl7Y29uc3QgdT1lLmNoYXJDb2RlQXQobyk7aWYoRih1KSl7aWYoIWkpe3I9bysxO2JyZWFrfWNvbnRpbnVlfXM9PT0tMSYmKGk9ITEscz1vKzEpLHU9PT1iZT9uPT09LTE/bj1vOmwhPT0xJiYobD0xKTpuIT09LTEmJihsPS0xKX1yZXR1cm4gbj09PS0xfHxzPT09LTF8fGw9PT0wfHxsPT09MSYmbj09PXMtMSYmbj09PXIrMT8iIjplLnNsaWNlKG4scyl9LGZvcm1hdDpmbi5iaW5kKG51bGwsIlxcIikscGFyc2UoZSl7JChlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoZS5sZW5ndGg9PT0wKXJldHVybiB0O2NvbnN0IG49ZS5sZW5ndGg7bGV0IHI9MCxzPWUuY2hhckNvZGVBdCgwKTtpZihuPT09MSlyZXR1cm4gRihzKT8odC5yb290PXQuZGlyPWUsdCk6KHQuYmFzZT10Lm5hbWU9ZSx0KTtpZihGKHMpKXtpZihyPTEsRihlLmNoYXJDb2RlQXQoMSkpKXtsZXQgZj0yLGQ9Zjtmb3IoO2Y8biYmIUYoZS5jaGFyQ29kZUF0KGYpKTspZisrO2lmKGY8biYmZiE9PWQpe2ZvcihkPWY7ZjxuJiZGKGUuY2hhckNvZGVBdChmKSk7KWYrKztpZihmPG4mJmYhPT1kKXtmb3IoZD1mO2Y8biYmIUYoZS5jaGFyQ29kZUF0KGYpKTspZisrO2Y9PT1uP3I9ZjpmIT09ZCYmKHI9ZisxKX19fX1lbHNlIGlmKHBlKHMpJiZlLmNoYXJDb2RlQXQoMSk9PT1fZSl7aWYobjw9MilyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtpZihyPTIsRihlLmNoYXJDb2RlQXQoMikpKXtpZihuPT09MylyZXR1cm4gdC5yb290PXQuZGlyPWUsdDtyPTN9fXI+MCYmKHQucm9vdD1lLnNsaWNlKDAscikpO2xldCBpPS0xLGw9cixvPS0xLHU9ITAsYz1lLmxlbmd0aC0xLGg9MDtmb3IoO2M+PXI7LS1jKXtpZihzPWUuY2hhckNvZGVBdChjKSxGKHMpKXtpZighdSl7bD1jKzE7YnJlYWt9Y29udGludWV9bz09PS0xJiYodT0hMSxvPWMrMSkscz09PWJlP2k9PT0tMT9pPWM6aCE9PTEmJihoPTEpOmkhPT0tMSYmKGg9LTEpfXJldHVybiBvIT09LTEmJihpPT09LTF8fGg9PT0wfHxoPT09MSYmaT09PW8tMSYmaT09PWwrMT90LmJhc2U9dC5uYW1lPWUuc2xpY2UobCxvKToodC5uYW1lPWUuc2xpY2UobCxpKSx0LmJhc2U9ZS5zbGljZShsLG8pLHQuZXh0PWUuc2xpY2UoaSxvKSkpLGw+MCYmbCE9PXI/dC5kaXI9ZS5zbGljZSgwLGwtMSk6dC5kaXI9dC5yb290LHR9LHNlcDoiXFwiLGRlbGltaXRlcjoiOyIsd2luMzI6bnVsbCxwb3NpeDpudWxsfSxPcz0oKCk9PntpZih4ZSl7Y29uc3QgZT0vXFwvZztyZXR1cm4oKT0+e2NvbnN0IHQ9bnQoKS5yZXBsYWNlKGUsIi8iKTtyZXR1cm4gdC5zbGljZSh0LmluZGV4T2YoIi8iKSl9fXJldHVybigpPT5udCgpfSkoKSxlZT17cmVzb2x2ZSguLi5lKXtsZXQgdD0iIixuPSExO2ZvcihsZXQgcj1lLmxlbmd0aC0xO3I+PS0xJiYhbjtyLS0pe2NvbnN0IHM9cj49MD9lW3JdOk9zKCk7JChzLCJwYXRoIikscy5sZW5ndGghPT0wJiYodD1gJHtzfS8ke3R9YCxuPXMuY2hhckNvZGVBdCgwKT09PWopfXJldHVybiB0PXJ0KHQsIW4sIi8iLEV0KSxuP2AvJHt0fWA6dC5sZW5ndGg+MD90OiIuIn0sbm9ybWFsaXplKGUpe2lmKCQoZSwicGF0aCIpLGUubGVuZ3RoPT09MClyZXR1cm4iLiI7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk9PT1qLG49ZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpPT09ajtyZXR1cm4gZT1ydChlLCF0LCIvIixFdCksZS5sZW5ndGg9PT0wP3Q/Ii8iOm4/Ii4vIjoiLiI6KG4mJihlKz0iLyIpLHQ/YC8ke2V9YDplKX0saXNBYnNvbHV0ZShlKXtyZXR1cm4gJChlLCJwYXRoIiksZS5sZW5ndGg+MCYmZS5jaGFyQ29kZUF0KDApPT09an0sam9pbiguLi5lKXtpZihlLmxlbmd0aD09PTApcmV0dXJuIi4iO2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7KytuKXtjb25zdCByPWVbbl07JChyLCJwYXRoIiksci5sZW5ndGg+MCYmKHQ9PT12b2lkIDA/dD1yOnQrPWAvJHtyfWApfXJldHVybiB0PT09dm9pZCAwPyIuIjplZS5ub3JtYWxpemUodCl9LHJlbGF0aXZlKGUsdCl7aWYoJChlLCJmcm9tIiksJCh0LCJ0byIpLGU9PT10fHwoZT1lZS5yZXNvbHZlKGUpLHQ9ZWUucmVzb2x2ZSh0KSxlPT09dCkpcmV0dXJuIiI7Y29uc3Qgbj0xLHI9ZS5sZW5ndGgscz1yLW4saT0xLGw9dC5sZW5ndGgtaSxvPXM8bD9zOmw7bGV0IHU9LTEsYz0wO2Zvcig7YzxvO2MrKyl7Y29uc3QgZj1lLmNoYXJDb2RlQXQobitjKTtpZihmIT09dC5jaGFyQ29kZUF0KGkrYykpYnJlYWs7Zj09PWomJih1PWMpfWlmKGM9PT1vKWlmKGw+byl7aWYodC5jaGFyQ29kZUF0KGkrYyk9PT1qKXJldHVybiB0LnNsaWNlKGkrYysxKTtpZihjPT09MClyZXR1cm4gdC5zbGljZShpK2MpfWVsc2Ugcz5vJiYoZS5jaGFyQ29kZUF0KG4rYyk9PT1qP3U9YzpjPT09MCYmKHU9MCkpO2xldCBoPSIiO2ZvcihjPW4rdSsxO2M8PXI7KytjKShjPT09cnx8ZS5jaGFyQ29kZUF0KGMpPT09aikmJihoKz1oLmxlbmd0aD09PTA/Ii4uIjoiLy4uIik7cmV0dXJuYCR7aH0ke3Quc2xpY2UoaSt1KX1gfSx0b05hbWVzcGFjZWRQYXRoKGUpe3JldHVybiBlfSxkaXJuYW1lKGUpe2lmKCQoZSwicGF0aCIpLGUubGVuZ3RoPT09MClyZXR1cm4iLiI7Y29uc3QgdD1lLmNoYXJDb2RlQXQoMCk9PT1qO2xldCBuPS0xLHI9ITA7Zm9yKGxldCBzPWUubGVuZ3RoLTE7cz49MTstLXMpaWYoZS5jaGFyQ29kZUF0KHMpPT09ail7aWYoIXIpe249czticmVha319ZWxzZSByPSExO3JldHVybiBuPT09LTE/dD8iLyI6Ii4iOnQmJm49PT0xPyIvLyI6ZS5zbGljZSgwLG4pfSxiYXNlbmFtZShlLHQpe3QhPT12b2lkIDAmJiQodCwiZXh0IiksJChlLCJwYXRoIik7bGV0IG49MCxyPS0xLHM9ITAsaTtpZih0IT09dm9pZCAwJiZ0Lmxlbmd0aD4wJiZ0Lmxlbmd0aDw9ZS5sZW5ndGgpe2lmKHQ9PT1lKXJldHVybiIiO2xldCBsPXQubGVuZ3RoLTEsbz0tMTtmb3IoaT1lLmxlbmd0aC0xO2k+PTA7LS1pKXtjb25zdCB1PWUuY2hhckNvZGVBdChpKTtpZih1PT09ail7aWYoIXMpe249aSsxO2JyZWFrfX1lbHNlIG89PT0tMSYmKHM9ITEsbz1pKzEpLGw+PTAmJih1PT09dC5jaGFyQ29kZUF0KGwpPy0tbD09PS0xJiYocj1pKToobD0tMSxyPW8pKX1yZXR1cm4gbj09PXI/cj1vOnI9PT0tMSYmKHI9ZS5sZW5ndGgpLGUuc2xpY2UobixyKX1mb3IoaT1lLmxlbmd0aC0xO2k+PTA7LS1pKWlmKGUuY2hhckNvZGVBdChpKT09PWope2lmKCFzKXtuPWkrMTticmVha319ZWxzZSByPT09LTEmJihzPSExLHI9aSsxKTtyZXR1cm4gcj09PS0xPyIiOmUuc2xpY2UobixyKX0sZXh0bmFtZShlKXskKGUsInBhdGgiKTtsZXQgdD0tMSxuPTAscj0tMSxzPSEwLGk9MDtmb3IobGV0IGw9ZS5sZW5ndGgtMTtsPj0wOy0tbCl7Y29uc3Qgbz1lLmNoYXJDb2RlQXQobCk7aWYobz09PWope2lmKCFzKXtuPWwrMTticmVha31jb250aW51ZX1yPT09LTEmJihzPSExLHI9bCsxKSxvPT09YmU/dD09PS0xP3Q9bDppIT09MSYmKGk9MSk6dCE9PS0xJiYoaT0tMSl9cmV0dXJuIHQ9PT0tMXx8cj09PS0xfHxpPT09MHx8aT09PTEmJnQ9PT1yLTEmJnQ9PT1uKzE/IiI6ZS5zbGljZSh0LHIpfSxmb3JtYXQ6Zm4uYmluZChudWxsLCIvIikscGFyc2UoZSl7JChlLCJwYXRoIik7Y29uc3QgdD17cm9vdDoiIixkaXI6IiIsYmFzZToiIixleHQ6IiIsbmFtZToiIn07aWYoZS5sZW5ndGg9PT0wKXJldHVybiB0O2NvbnN0IG49ZS5jaGFyQ29kZUF0KDApPT09ajtsZXQgcjtuPyh0LnJvb3Q9Ii8iLHI9MSk6cj0wO2xldCBzPS0xLGk9MCxsPS0xLG89ITAsdT1lLmxlbmd0aC0xLGM9MDtmb3IoO3U+PXI7LS11KXtjb25zdCBoPWUuY2hhckNvZGVBdCh1KTtpZihoPT09ail7aWYoIW8pe2k9dSsxO2JyZWFrfWNvbnRpbnVlfWw9PT0tMSYmKG89ITEsbD11KzEpLGg9PT1iZT9zPT09LTE/cz11OmMhPT0xJiYoYz0xKTpzIT09LTEmJihjPS0xKX1pZihsIT09LTEpe2NvbnN0IGg9aT09PTAmJm4/MTppO3M9PT0tMXx8Yz09PTB8fGM9PT0xJiZzPT09bC0xJiZzPT09aSsxP3QuYmFzZT10Lm5hbWU9ZS5zbGljZShoLGwpOih0Lm5hbWU9ZS5zbGljZShoLHMpLHQuYmFzZT1lLnNsaWNlKGgsbCksdC5leHQ9ZS5zbGljZShzLGwpKX1yZXR1cm4gaT4wP3QuZGlyPWUuc2xpY2UoMCxpLTEpOm4mJih0LmRpcj0iLyIpLHR9LHNlcDoiLyIsZGVsaW1pdGVyOiI6Iix3aW4zMjpudWxsLHBvc2l4Om51bGx9O2VlLndpbjMyPVoud2luMzI9WixlZS5wb3NpeD1aLnBvc2l4PWVlLHhlP1oubm9ybWFsaXplOmVlLm5vcm1hbGl6ZSx4ZT9aLnJlc29sdmU6ZWUucmVzb2x2ZSx4ZT9aLnJlbGF0aXZlOmVlLnJlbGF0aXZlLHhlP1ouZGlybmFtZTplZS5kaXJuYW1lLHhlP1ouYmFzZW5hbWU6ZWUuYmFzZW5hbWUseGU/Wi5leHRuYW1lOmVlLmV4dG5hbWUseGU/Wi5zZXA6ZWUuc2VwO2NvbnN0IEdzPS9eXHdbXHdcZCsuLV0qJC8sanM9L15cLy8sUXM9L15cL1wvLztmdW5jdGlvbiBYcyhlLHQpe2lmKCFlLnNjaGVtZSYmdCl0aHJvdyBuZXcgRXJyb3IoYFtVcmlFcnJvcl06IFNjaGVtZSBpcyBtaXNzaW5nOiB7c2NoZW1lOiAiIiwgYXV0aG9yaXR5OiAiJHtlLmF1dGhvcml0eX0iLCBwYXRoOiAiJHtlLnBhdGh9IiwgcXVlcnk6ICIke2UucXVlcnl9IiwgZnJhZ21lbnQ6ICIke2UuZnJhZ21lbnR9In1gKTtpZihlLnNjaGVtZSYmIUdzLnRlc3QoZS5zY2hlbWUpKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogU2NoZW1lIGNvbnRhaW5zIGlsbGVnYWwgY2hhcmFjdGVycy4iKTtpZihlLnBhdGgpe2lmKGUuYXV0aG9yaXR5KXtpZighanMudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgY29udGFpbnMgYW4gYXV0aG9yaXR5IGNvbXBvbmVudCwgdGhlbiB0aGUgcGF0aCBjb21wb25lbnQgbXVzdCBlaXRoZXIgYmUgZW1wdHkgb3IgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpIGNoYXJhY3RlcicpfWVsc2UgaWYoUXMudGVzdChlLnBhdGgpKXRocm93IG5ldyBFcnJvcignW1VyaUVycm9yXTogSWYgYSBVUkkgZG9lcyBub3QgY29udGFpbiBhbiBhdXRob3JpdHkgY29tcG9uZW50LCB0aGVuIHRoZSBwYXRoIGNhbm5vdCBiZWdpbiB3aXRoIHR3byBzbGFzaCBjaGFyYWN0ZXJzICgiLy8iKScpfX1mdW5jdGlvbiBKcyhlLHQpe3JldHVybiFlJiYhdD8iZmlsZSI6ZX1mdW5jdGlvbiBZcyhlLHQpe3N3aXRjaChlKXtjYXNlImh0dHBzIjpjYXNlImh0dHAiOmNhc2UiZmlsZSI6dD90WzBdIT09YWUmJih0PWFlK3QpOnQ9YWU7YnJlYWt9cmV0dXJuIHR9Y29uc3QgVz0iIixhZT0iLyIsWnM9L14oKFteOi8/I10rPyk6KT8oXC9cLyhbXi8/I10qKSk/KFtePyNdKikoXD8oW14jXSopKT8oIyguKikpPy87Y2xhc3MgTmV7c3RhdGljIGlzVXJpKHQpe3JldHVybiB0IGluc3RhbmNlb2YgTmU/ITA6dD90eXBlb2YgdC5hdXRob3JpdHk9PSJzdHJpbmciJiZ0eXBlb2YgdC5mcmFnbWVudD09InN0cmluZyImJnR5cGVvZiB0LnBhdGg9PSJzdHJpbmciJiZ0eXBlb2YgdC5xdWVyeT09InN0cmluZyImJnR5cGVvZiB0LnNjaGVtZT09InN0cmluZyImJnR5cGVvZiB0LmZzUGF0aD09InN0cmluZyImJnR5cGVvZiB0LndpdGg9PSJmdW5jdGlvbiImJnR5cGVvZiB0LnRvU3RyaW5nPT0iZnVuY3Rpb24iOiExfWNvbnN0cnVjdG9yKHQsbixyLHMsaSxsPSExKXt0eXBlb2YgdD09Im9iamVjdCI/KHRoaXMuc2NoZW1lPXQuc2NoZW1lfHxXLHRoaXMuYXV0aG9yaXR5PXQuYXV0aG9yaXR5fHxXLHRoaXMucGF0aD10LnBhdGh8fFcsdGhpcy5xdWVyeT10LnF1ZXJ5fHxXLHRoaXMuZnJhZ21lbnQ9dC5mcmFnbWVudHx8Vyk6KHRoaXMuc2NoZW1lPUpzKHQsbCksdGhpcy5hdXRob3JpdHk9bnx8Vyx0aGlzLnBhdGg9WXModGhpcy5zY2hlbWUscnx8VyksdGhpcy5xdWVyeT1zfHxXLHRoaXMuZnJhZ21lbnQ9aXx8VyxYcyh0aGlzLGwpKX1nZXQgZnNQYXRoKCl7cmV0dXJuIE10KHRoaXMsITEpfXdpdGgodCl7aWYoIXQpcmV0dXJuIHRoaXM7bGV0e3NjaGVtZTpuLGF1dGhvcml0eTpyLHBhdGg6cyxxdWVyeTppLGZyYWdtZW50Omx9PXQ7cmV0dXJuIG49PT12b2lkIDA/bj10aGlzLnNjaGVtZTpuPT09bnVsbCYmKG49Vykscj09PXZvaWQgMD9yPXRoaXMuYXV0aG9yaXR5OnI9PT1udWxsJiYocj1XKSxzPT09dm9pZCAwP3M9dGhpcy5wYXRoOnM9PT1udWxsJiYocz1XKSxpPT09dm9pZCAwP2k9dGhpcy5xdWVyeTppPT09bnVsbCYmKGk9VyksbD09PXZvaWQgMD9sPXRoaXMuZnJhZ21lbnQ6bD09PW51bGwmJihsPVcpLG49PT10aGlzLnNjaGVtZSYmcj09PXRoaXMuYXV0aG9yaXR5JiZzPT09dGhpcy5wYXRoJiZpPT09dGhpcy5xdWVyeSYmbD09PXRoaXMuZnJhZ21lbnQ/dGhpczpuZXcgRGUobixyLHMsaSxsKX1zdGF0aWMgcGFyc2UodCxuPSExKXtjb25zdCByPVpzLmV4ZWModCk7cmV0dXJuIHI/bmV3IERlKHJbMl18fFcsc3Qocls0XXx8Vyksc3Qocls1XXx8Vyksc3Qocls3XXx8Vyksc3Qocls5XXx8Vyksbik6bmV3IERlKFcsVyxXLFcsVyl9c3RhdGljIGZpbGUodCl7bGV0IG49VztpZih6ZSYmKHQ9dC5yZXBsYWNlKC9cXC9nLGFlKSksdFswXT09PWFlJiZ0WzFdPT09YWUpe2NvbnN0IHI9dC5pbmRleE9mKGFlLDIpO3I9PT0tMT8obj10LnN1YnN0cmluZygyKSx0PWFlKToobj10LnN1YnN0cmluZygyLHIpLHQ9dC5zdWJzdHJpbmcocil8fGFlKX1yZXR1cm4gbmV3IERlKCJmaWxlIixuLHQsVyxXKX1zdGF0aWMgZnJvbSh0LG4pe3JldHVybiBuZXcgRGUodC5zY2hlbWUsdC5hdXRob3JpdHksdC5wYXRoLHQucXVlcnksdC5mcmFnbWVudCxuKX1zdGF0aWMgam9pblBhdGgodCwuLi5uKXtpZighdC5wYXRoKXRocm93IG5ldyBFcnJvcigiW1VyaUVycm9yXTogY2Fubm90IGNhbGwgam9pblBhdGggb24gVVJJIHdpdGhvdXQgcGF0aCIpO2xldCByO3JldHVybiB6ZSYmdC5zY2hlbWU9PT0iZmlsZSI/cj1OZS5maWxlKFouam9pbihNdCh0LCEwKSwuLi5uKSkucGF0aDpyPWVlLmpvaW4odC5wYXRoLC4uLm4pLHQud2l0aCh7cGF0aDpyfSl9dG9TdHJpbmcodD0hMSl7cmV0dXJuIGt0KHRoaXMsdCl9dG9KU09OKCl7cmV0dXJuIHRoaXN9c3RhdGljIHJldml2ZSh0KXt2YXIgbixyO2lmKHQpe2lmKHQgaW5zdGFuY2VvZiBOZSlyZXR1cm4gdDt7Y29uc3Qgcz1uZXcgRGUodCk7cmV0dXJuIHMuX2Zvcm1hdHRlZD0obj10LmV4dGVybmFsKSE9PW51bGwmJm4hPT12b2lkIDA/bjpudWxsLHMuX2ZzUGF0aD10Ll9zZXA9PT1kbiYmKHI9dC5mc1BhdGgpIT09bnVsbCYmciE9PXZvaWQgMD9yOm51bGwsc319ZWxzZSByZXR1cm4gdH19Y29uc3QgZG49emU/MTp2b2lkIDA7Y2xhc3MgRGUgZXh0ZW5kcyBOZXtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fZm9ybWF0dGVkPW51bGwsdGhpcy5fZnNQYXRoPW51bGx9Z2V0IGZzUGF0aCgpe3JldHVybiB0aGlzLl9mc1BhdGh8fCh0aGlzLl9mc1BhdGg9TXQodGhpcywhMSkpLHRoaXMuX2ZzUGF0aH10b1N0cmluZyh0PSExKXtyZXR1cm4gdD9rdCh0aGlzLCEwKToodGhpcy5fZm9ybWF0dGVkfHwodGhpcy5fZm9ybWF0dGVkPWt0KHRoaXMsITEpKSx0aGlzLl9mb3JtYXR0ZWQpfXRvSlNPTigpe2NvbnN0IHQ9eyRtaWQ6MX07cmV0dXJuIHRoaXMuX2ZzUGF0aCYmKHQuZnNQYXRoPXRoaXMuX2ZzUGF0aCx0Ll9zZXA9ZG4pLHRoaXMuX2Zvcm1hdHRlZCYmKHQuZXh0ZXJuYWw9dGhpcy5fZm9ybWF0dGVkKSx0aGlzLnBhdGgmJih0LnBhdGg9dGhpcy5wYXRoKSx0aGlzLnNjaGVtZSYmKHQuc2NoZW1lPXRoaXMuc2NoZW1lKSx0aGlzLmF1dGhvcml0eSYmKHQuYXV0aG9yaXR5PXRoaXMuYXV0aG9yaXR5KSx0aGlzLnF1ZXJ5JiYodC5xdWVyeT10aGlzLnF1ZXJ5KSx0aGlzLmZyYWdtZW50JiYodC5mcmFnbWVudD10aGlzLmZyYWdtZW50KSx0fX1jb25zdCBtbj17NTg6IiUzQSIsNDc6IiUyRiIsNjM6IiUzRiIsMzU6IiUyMyIsOTE6IiU1QiIsOTM6IiU1RCIsNjQ6IiU0MCIsMzM6IiUyMSIsMzY6IiUyNCIsMzg6IiUyNiIsMzk6IiUyNyIsNDA6IiUyOCIsNDE6IiUyOSIsNDI6IiUyQSIsNDM6IiUyQiIsNDQ6IiUyQyIsNTk6IiUzQiIsNjE6IiUzRCIsMzI6IiUyMCJ9O2Z1bmN0aW9uIGduKGUsdCxuKXtsZXQgcixzPS0xO2ZvcihsZXQgaT0wO2k8ZS5sZW5ndGg7aSsrKXtjb25zdCBsPWUuY2hhckNvZGVBdChpKTtpZihsPj05NyYmbDw9MTIyfHxsPj02NSYmbDw9OTB8fGw+PTQ4JiZsPD01N3x8bD09PTQ1fHxsPT09NDZ8fGw9PT05NXx8bD09PTEyNnx8dCYmbD09PTQ3fHxuJiZsPT09OTF8fG4mJmw9PT05M3x8biYmbD09PTU4KXMhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhzLGkpKSxzPS0xKSxyIT09dm9pZCAwJiYocis9ZS5jaGFyQXQoaSkpO2Vsc2V7cj09PXZvaWQgMCYmKHI9ZS5zdWJzdHIoMCxpKSk7Y29uc3Qgbz1tbltsXTtvIT09dm9pZCAwPyhzIT09LTEmJihyKz1lbmNvZGVVUklDb21wb25lbnQoZS5zdWJzdHJpbmcocyxpKSkscz0tMSkscis9byk6cz09PS0xJiYocz1pKX19cmV0dXJuIHMhPT0tMSYmKHIrPWVuY29kZVVSSUNvbXBvbmVudChlLnN1YnN0cmluZyhzKSkpLHIhPT12b2lkIDA/cjplfWZ1bmN0aW9uIEtzKGUpe2xldCB0O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXtjb25zdCByPWUuY2hhckNvZGVBdChuKTtyPT09MzV8fHI9PT02Mz8odD09PXZvaWQgMCYmKHQ9ZS5zdWJzdHIoMCxuKSksdCs9bW5bcl0pOnQhPT12b2lkIDAmJih0Kz1lW25dKX1yZXR1cm4gdCE9PXZvaWQgMD90OmV9ZnVuY3Rpb24gTXQoZSx0KXtsZXQgbjtyZXR1cm4gZS5hdXRob3JpdHkmJmUucGF0aC5sZW5ndGg+MSYmZS5zY2hlbWU9PT0iZmlsZSI/bj1gLy8ke2UuYXV0aG9yaXR5fSR7ZS5wYXRofWA6ZS5wYXRoLmNoYXJDb2RlQXQoMCk9PT00NyYmKGUucGF0aC5jaGFyQ29kZUF0KDEpPj02NSYmZS5wYXRoLmNoYXJDb2RlQXQoMSk8PTkwfHxlLnBhdGguY2hhckNvZGVBdCgxKT49OTcmJmUucGF0aC5jaGFyQ29kZUF0KDEpPD0xMjIpJiZlLnBhdGguY2hhckNvZGVBdCgyKT09PTU4P3Q/bj1lLnBhdGguc3Vic3RyKDEpOm49ZS5wYXRoWzFdLnRvTG93ZXJDYXNlKCkrZS5wYXRoLnN1YnN0cigyKTpuPWUucGF0aCx6ZSYmKG49bi5yZXBsYWNlKC9cLy9nLCJcXCIpKSxufWZ1bmN0aW9uIGt0KGUsdCl7Y29uc3Qgbj10P0tzOmduO2xldCByPSIiLHtzY2hlbWU6cyxhdXRob3JpdHk6aSxwYXRoOmwscXVlcnk6byxmcmFnbWVudDp1fT1lO2lmKHMmJihyKz1zLHIrPSI6IiksKGl8fHM9PT0iZmlsZSIpJiYocis9YWUscis9YWUpLGkpe2xldCBjPWkuaW5kZXhPZigiQCIpO2lmKGMhPT0tMSl7Y29uc3QgaD1pLnN1YnN0cigwLGMpO2k9aS5zdWJzdHIoYysxKSxjPWgubGFzdEluZGV4T2YoIjoiKSxjPT09LTE/cis9bihoLCExLCExKToocis9bihoLnN1YnN0cigwLGMpLCExLCExKSxyKz0iOiIscis9bihoLnN1YnN0cihjKzEpLCExLCEwKSkscis9IkAifWk9aS50b0xvd2VyQ2FzZSgpLGM9aS5sYXN0SW5kZXhPZigiOiIpLGM9PT0tMT9yKz1uKGksITEsITApOihyKz1uKGkuc3Vic3RyKDAsYyksITEsITApLHIrPWkuc3Vic3RyKGMpKX1pZihsKXtpZihsLmxlbmd0aD49MyYmbC5jaGFyQ29kZUF0KDApPT09NDcmJmwuY2hhckNvZGVBdCgyKT09PTU4KXtjb25zdCBjPWwuY2hhckNvZGVBdCgxKTtjPj02NSYmYzw9OTAmJihsPWAvJHtTdHJpbmcuZnJvbUNoYXJDb2RlKGMrMzIpfToke2wuc3Vic3RyKDMpfWApfWVsc2UgaWYobC5sZW5ndGg+PTImJmwuY2hhckNvZGVBdCgxKT09PTU4KXtjb25zdCBjPWwuY2hhckNvZGVBdCgwKTtjPj02NSYmYzw9OTAmJihsPWAke1N0cmluZy5mcm9tQ2hhckNvZGUoYyszMil9OiR7bC5zdWJzdHIoMil9YCl9cis9bihsLCEwLCExKX1yZXR1cm4gbyYmKHIrPSI/IixyKz1uKG8sITEsITEpKSx1JiYocis9IiMiLHIrPXQ/dTpnbih1LCExLCExKSkscn1mdW5jdGlvbiBibihlKXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaHtyZXR1cm4gZS5sZW5ndGg+Mz9lLnN1YnN0cigwLDMpK2JuKGUuc3Vic3RyKDMpKTplfX1jb25zdCBfbj0vKCVbMC05QS1aYS16XVswLTlBLVphLXpdKSsvZztmdW5jdGlvbiBzdChlKXtyZXR1cm4gZS5tYXRjaChfbik/ZS5yZXBsYWNlKF9uLHQ9PmJuKHQpKTplfWNsYXNzIEp7Y29uc3RydWN0b3IodCxuKXt0aGlzLmxpbmVOdW1iZXI9dCx0aGlzLmNvbHVtbj1ufXdpdGgodD10aGlzLmxpbmVOdW1iZXIsbj10aGlzLmNvbHVtbil7cmV0dXJuIHQ9PT10aGlzLmxpbmVOdW1iZXImJm49PT10aGlzLmNvbHVtbj90aGlzOm5ldyBKKHQsbil9ZGVsdGEodD0wLG49MCl7cmV0dXJuIHRoaXMud2l0aCh0aGlzLmxpbmVOdW1iZXIrdCx0aGlzLmNvbHVtbituKX1lcXVhbHModCl7cmV0dXJuIEouZXF1YWxzKHRoaXMsdCl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiF0JiYhbj8hMDohIXQmJiEhbiYmdC5saW5lTnVtYmVyPT09bi5saW5lTnVtYmVyJiZ0LmNvbHVtbj09PW4uY29sdW1ufWlzQmVmb3JlKHQpe3JldHVybiBKLmlzQmVmb3JlKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlKHQsbil7cmV0dXJuIHQubGluZU51bWJlcjxuLmxpbmVOdW1iZXI/ITA6bi5saW5lTnVtYmVyPHQubGluZU51bWJlcj8hMTp0LmNvbHVtbjxuLmNvbHVtbn1pc0JlZm9yZU9yRXF1YWwodCl7cmV0dXJuIEouaXNCZWZvcmVPckVxdWFsKHRoaXMsdCl9c3RhdGljIGlzQmVmb3JlT3JFcXVhbCh0LG4pe3JldHVybiB0LmxpbmVOdW1iZXI8bi5saW5lTnVtYmVyPyEwOm4ubGluZU51bWJlcjx0LmxpbmVOdW1iZXI/ITE6dC5jb2x1bW48PW4uY29sdW1ufXN0YXRpYyBjb21wYXJlKHQsbil7Y29uc3Qgcj10LmxpbmVOdW1iZXJ8MCxzPW4ubGluZU51bWJlcnwwO2lmKHI9PT1zKXtjb25zdCBpPXQuY29sdW1ufDAsbD1uLmNvbHVtbnwwO3JldHVybiBpLWx9cmV0dXJuIHItc31jbG9uZSgpe3JldHVybiBuZXcgSih0aGlzLmxpbmVOdW1iZXIsdGhpcy5jb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIigiK3RoaXMubGluZU51bWJlcisiLCIrdGhpcy5jb2x1bW4rIikifXN0YXRpYyBsaWZ0KHQpe3JldHVybiBuZXcgSih0LmxpbmVOdW1iZXIsdC5jb2x1bW4pfXN0YXRpYyBpc0lQb3NpdGlvbih0KXtyZXR1cm4gdCYmdHlwZW9mIHQubGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LmNvbHVtbj09Im51bWJlciJ9dG9KU09OKCl7cmV0dXJue2xpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbjp0aGlzLmNvbHVtbn19fWNsYXNzIFB7Y29uc3RydWN0b3IodCxuLHIscyl7dD5yfHx0PT09ciYmbj5zPyh0aGlzLnN0YXJ0TGluZU51bWJlcj1yLHRoaXMuc3RhcnRDb2x1bW49cyx0aGlzLmVuZExpbmVOdW1iZXI9dCx0aGlzLmVuZENvbHVtbj1uKToodGhpcy5zdGFydExpbmVOdW1iZXI9dCx0aGlzLnN0YXJ0Q29sdW1uPW4sdGhpcy5lbmRMaW5lTnVtYmVyPXIsdGhpcy5lbmRDb2x1bW49cyl9aXNFbXB0eSgpe3JldHVybiBQLmlzRW1wdHkodGhpcyl9c3RhdGljIGlzRW1wdHkodCl7cmV0dXJuIHQuc3RhcnRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZ0LnN0YXJ0Q29sdW1uPT09dC5lbmRDb2x1bW59Y29udGFpbnNQb3NpdGlvbih0KXtyZXR1cm4gUC5jb250YWluc1Bvc2l0aW9uKHRoaXMsdCl9c3RhdGljIGNvbnRhaW5zUG9zaXRpb24odCxuKXtyZXR1cm4hKG4ubGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5saW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5saW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uY29sdW1uPHQuc3RhcnRDb2x1bW58fG4ubGluZU51bWJlcj09PXQuZW5kTGluZU51bWJlciYmbi5jb2x1bW4+dC5lbmRDb2x1bW4pfXN0YXRpYyBzdHJpY3RDb250YWluc1Bvc2l0aW9uKHQsbil7cmV0dXJuIShuLmxpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4ubGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmNvbHVtbjw9dC5zdGFydENvbHVtbnx8bi5saW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmNvbHVtbj49dC5lbmRDb2x1bW4pfWNvbnRhaW5zUmFuZ2UodCl7cmV0dXJuIFAuY29udGFpbnNSYW5nZSh0aGlzLHQpfXN0YXRpYyBjb250YWluc1JhbmdlKHQsbil7cmV0dXJuIShuLnN0YXJ0TGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLnN0YXJ0TGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj50LmVuZExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uc3RhcnRDb2x1bW48dC5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbj50LmVuZENvbHVtbil9c3RyaWN0Q29udGFpbnNSYW5nZSh0KXtyZXR1cm4gUC5zdHJpY3RDb250YWluc1JhbmdlKHRoaXMsdCl9c3RhdGljIHN0cmljdENvbnRhaW5zUmFuZ2UodCxuKXtyZXR1cm4hKG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyfHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uc3RhcnRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcnx8bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmbi5zdGFydENvbHVtbjw9dC5zdGFydENvbHVtbnx8bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbj49dC5lbmRDb2x1bW4pfXBsdXNSYW5nZSh0KXtyZXR1cm4gUC5wbHVzUmFuZ2UodGhpcyx0KX1zdGF0aWMgcGx1c1JhbmdlKHQsbil7bGV0IHIscyxpLGw7cmV0dXJuIG4uc3RhcnRMaW5lTnVtYmVyPHQuc3RhcnRMaW5lTnVtYmVyPyhyPW4uc3RhcnRMaW5lTnVtYmVyLHM9bi5zdGFydENvbHVtbik6bi5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlcj8ocj1uLnN0YXJ0TGluZU51bWJlcixzPU1hdGgubWluKG4uc3RhcnRDb2x1bW4sdC5zdGFydENvbHVtbikpOihyPXQuc3RhcnRMaW5lTnVtYmVyLHM9dC5zdGFydENvbHVtbiksbi5lbmRMaW5lTnVtYmVyPnQuZW5kTGluZU51bWJlcj8oaT1uLmVuZExpbmVOdW1iZXIsbD1uLmVuZENvbHVtbik6bi5lbmRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyPyhpPW4uZW5kTGluZU51bWJlcixsPU1hdGgubWF4KG4uZW5kQ29sdW1uLHQuZW5kQ29sdW1uKSk6KGk9dC5lbmRMaW5lTnVtYmVyLGw9dC5lbmRDb2x1bW4pLG5ldyBQKHIscyxpLGwpfWludGVyc2VjdFJhbmdlcyh0KXtyZXR1cm4gUC5pbnRlcnNlY3RSYW5nZXModGhpcyx0KX1zdGF0aWMgaW50ZXJzZWN0UmFuZ2VzKHQsbil7bGV0IHI9dC5zdGFydExpbmVOdW1iZXIscz10LnN0YXJ0Q29sdW1uLGk9dC5lbmRMaW5lTnVtYmVyLGw9dC5lbmRDb2x1bW47Y29uc3Qgbz1uLnN0YXJ0TGluZU51bWJlcix1PW4uc3RhcnRDb2x1bW4sYz1uLmVuZExpbmVOdW1iZXIsaD1uLmVuZENvbHVtbjtyZXR1cm4gcjxvPyhyPW8scz11KTpyPT09byYmKHM9TWF0aC5tYXgocyx1KSksaT5jPyhpPWMsbD1oKTppPT09YyYmKGw9TWF0aC5taW4obCxoKSkscj5pfHxyPT09aSYmcz5sP251bGw6bmV3IFAocixzLGksbCl9ZXF1YWxzUmFuZ2UodCl7cmV0dXJuIFAuZXF1YWxzUmFuZ2UodGhpcyx0KX1zdGF0aWMgZXF1YWxzUmFuZ2UodCxuKXtyZXR1cm4hdCYmIW4/ITA6ISF0JiYhIW4mJnQuc3RhcnRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuc3RhcnRDb2x1bW49PT1uLnN0YXJ0Q29sdW1uJiZ0LmVuZExpbmVOdW1iZXI9PT1uLmVuZExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPT09bi5lbmRDb2x1bW59Z2V0RW5kUG9zaXRpb24oKXtyZXR1cm4gUC5nZXRFbmRQb3NpdGlvbih0aGlzKX1zdGF0aWMgZ2V0RW5kUG9zaXRpb24odCl7cmV0dXJuIG5ldyBKKHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbil9Z2V0U3RhcnRQb3NpdGlvbigpe3JldHVybiBQLmdldFN0YXJ0UG9zaXRpb24odGhpcyl9c3RhdGljIGdldFN0YXJ0UG9zaXRpb24odCl7cmV0dXJuIG5ldyBKKHQuc3RhcnRMaW5lTnVtYmVyLHQuc3RhcnRDb2x1bW4pfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLmVuZExpbmVOdW1iZXIrIiwiK3RoaXMuZW5kQ29sdW1uKyJdIn1zZXRFbmRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgUCh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbil9c2V0U3RhcnRQb3NpdGlvbih0LG4pe3JldHVybiBuZXcgUCh0LG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKX1jb2xsYXBzZVRvU3RhcnQoKXtyZXR1cm4gUC5jb2xsYXBzZVRvU3RhcnQodGhpcyl9c3RhdGljIGNvbGxhcHNlVG9TdGFydCh0KXtyZXR1cm4gbmV3IFAodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uKX1jb2xsYXBzZVRvRW5kKCl7cmV0dXJuIFAuY29sbGFwc2VUb0VuZCh0aGlzKX1zdGF0aWMgY29sbGFwc2VUb0VuZCh0KXtyZXR1cm4gbmV3IFAodC5lbmRMaW5lTnVtYmVyLHQuZW5kQ29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbil9ZGVsdGEodCl7cmV0dXJuIG5ldyBQKHRoaXMuc3RhcnRMaW5lTnVtYmVyK3QsdGhpcy5zdGFydENvbHVtbix0aGlzLmVuZExpbmVOdW1iZXIrdCx0aGlzLmVuZENvbHVtbil9c3RhdGljIGZyb21Qb3NpdGlvbnModCxuPXQpe3JldHVybiBuZXcgUCh0LmxpbmVOdW1iZXIsdC5jb2x1bW4sbi5saW5lTnVtYmVyLG4uY29sdW1uKX1zdGF0aWMgbGlmdCh0KXtyZXR1cm4gdD9uZXcgUCh0LnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0Q29sdW1uLHQuZW5kTGluZU51bWJlcix0LmVuZENvbHVtbik6bnVsbH1zdGF0aWMgaXNJUmFuZ2UodCl7cmV0dXJuIHQmJnR5cGVvZiB0LnN0YXJ0TGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LnN0YXJ0Q29sdW1uPT0ibnVtYmVyIiYmdHlwZW9mIHQuZW5kTGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LmVuZENvbHVtbj09Im51bWJlciJ9c3RhdGljIGFyZUludGVyc2VjdGluZ09yVG91Y2hpbmcodCxuKXtyZXR1cm4hKHQuZW5kTGluZU51bWJlcjxuLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPG4uc3RhcnRDb2x1bW58fG4uZW5kTGluZU51bWJlcjx0LnN0YXJ0TGluZU51bWJlcnx8bi5lbmRMaW5lTnVtYmVyPT09dC5zdGFydExpbmVOdW1iZXImJm4uZW5kQ29sdW1uPHQuc3RhcnRDb2x1bW4pfXN0YXRpYyBhcmVJbnRlcnNlY3RpbmcodCxuKXtyZXR1cm4hKHQuZW5kTGluZU51bWJlcjxuLnN0YXJ0TGluZU51bWJlcnx8dC5lbmRMaW5lTnVtYmVyPT09bi5zdGFydExpbmVOdW1iZXImJnQuZW5kQ29sdW1uPD1uLnN0YXJ0Q29sdW1ufHxuLmVuZExpbmVOdW1iZXI8dC5zdGFydExpbmVOdW1iZXJ8fG4uZW5kTGluZU51bWJlcj09PXQuc3RhcnRMaW5lTnVtYmVyJiZuLmVuZENvbHVtbjw9dC5zdGFydENvbHVtbil9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ1N0YXJ0cyh0LG4pe2lmKHQmJm4pe2NvbnN0IGk9dC5zdGFydExpbmVOdW1iZXJ8MCxsPW4uc3RhcnRMaW5lTnVtYmVyfDA7aWYoaT09PWwpe2NvbnN0IG89dC5zdGFydENvbHVtbnwwLHU9bi5zdGFydENvbHVtbnwwO2lmKG89PT11KXtjb25zdCBjPXQuZW5kTGluZU51bWJlcnwwLGg9bi5lbmRMaW5lTnVtYmVyfDA7aWYoYz09PWgpe2NvbnN0IGY9dC5lbmRDb2x1bW58MCxkPW4uZW5kQ29sdW1ufDA7cmV0dXJuIGYtZH1yZXR1cm4gYy1ofXJldHVybiBvLXV9cmV0dXJuIGktbH1yZXR1cm4odD8xOjApLShuPzE6MCl9c3RhdGljIGNvbXBhcmVSYW5nZXNVc2luZ0VuZHModCxuKXtyZXR1cm4gdC5lbmRMaW5lTnVtYmVyPT09bi5lbmRMaW5lTnVtYmVyP3QuZW5kQ29sdW1uPT09bi5lbmRDb2x1bW4/dC5zdGFydExpbmVOdW1iZXI9PT1uLnN0YXJ0TGluZU51bWJlcj90LnN0YXJ0Q29sdW1uLW4uc3RhcnRDb2x1bW46dC5zdGFydExpbmVOdW1iZXItbi5zdGFydExpbmVOdW1iZXI6dC5lbmRDb2x1bW4tbi5lbmRDb2x1bW46dC5lbmRMaW5lTnVtYmVyLW4uZW5kTGluZU51bWJlcn1zdGF0aWMgc3BhbnNNdWx0aXBsZUxpbmVzKHQpe3JldHVybiB0LmVuZExpbmVOdW1iZXI+dC5zdGFydExpbmVOdW1iZXJ9dG9KU09OKCl7cmV0dXJuIHRoaXN9fWZ1bmN0aW9uIGVpKGUsdCxuPShyLHMpPT5yPT09cyl7aWYoZT09PXQpcmV0dXJuITA7aWYoIWV8fCF0fHxlLmxlbmd0aCE9PXQubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wLHM9ZS5sZW5ndGg7cjxzO3IrKylpZighbihlW3JdLHRbcl0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uKnRpKGUsdCl7bGV0IG4scjtmb3IoY29uc3QgcyBvZiBlKXIhPT12b2lkIDAmJnQocixzKT9uLnB1c2gocyk6KG4mJih5aWVsZCBuKSxuPVtzXSkscj1zO24mJih5aWVsZCBuKX1mdW5jdGlvbiBuaShlLHQpe2ZvcihsZXQgbj0wO248PWUubGVuZ3RoO24rKyl0KG49PT0wP3ZvaWQgMDplW24tMV0sbj09PWUubGVuZ3RoP3ZvaWQgMDplW25dKX1mdW5jdGlvbiByaShlLHQpe2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKXQobj09PTA/dm9pZCAwOmVbbi0xXSxlW25dLG4rMT09PWUubGVuZ3RoP3ZvaWQgMDplW24rMV0pfWZ1bmN0aW9uIHNpKGUsdCl7Zm9yKGNvbnN0IG4gb2YgdCllLnB1c2gobil9dmFyIHhuOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGkpe3JldHVybiBpPDB9ZS5pc0xlc3NUaGFuPXQ7ZnVuY3Rpb24gbihpKXtyZXR1cm4gaTw9MH1lLmlzTGVzc1RoYW5PckVxdWFsPW47ZnVuY3Rpb24gcihpKXtyZXR1cm4gaT4wfWUuaXNHcmVhdGVyVGhhbj1yO2Z1bmN0aW9uIHMoaSl7cmV0dXJuIGk9PT0wfWUuaXNOZWl0aGVyTGVzc09yR3JlYXRlclRoYW49cyxlLmdyZWF0ZXJUaGFuPTEsZS5sZXNzVGhhbj0tMSxlLm5laXRoZXJMZXNzT3JHcmVhdGVyVGhhbj0wfSkoeG58fCh4bj17fSkpO2Z1bmN0aW9uIGl0KGUsdCl7cmV0dXJuKG4scik9PnQoZShuKSxlKHIpKX1jb25zdCBhdD0oZSx0KT0+ZS10O2Z1bmN0aW9uIGlpKGUpe3JldHVybih0LG4pPT4tZSh0LG4pfWZ1bmN0aW9uIHBuKGUpe3JldHVybiBlPDA/MDplPjI1NT8yNTU6ZXwwfWZ1bmN0aW9uIFRlKGUpe3JldHVybiBlPDA/MDplPjQyOTQ5NjcyOTU/NDI5NDk2NzI5NTplfDB9Y2xhc3MgYWl7Y29uc3RydWN0b3IodCl7dGhpcy52YWx1ZXM9dCx0aGlzLnByZWZpeFN1bT1uZXcgVWludDMyQXJyYXkodC5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleD1uZXcgSW50MzJBcnJheSgxKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09LTF9aW5zZXJ0VmFsdWVzKHQsbil7dD1UZSh0KTtjb25zdCByPXRoaXMudmFsdWVzLHM9dGhpcy5wcmVmaXhTdW0saT1uLmxlbmd0aDtyZXR1cm4gaT09PTA/ITE6KHRoaXMudmFsdWVzPW5ldyBVaW50MzJBcnJheShyLmxlbmd0aCtpKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSgwLHQpLDApLHRoaXMudmFsdWVzLnNldChyLnN1YmFycmF5KHQpLHQraSksdGhpcy52YWx1ZXMuc2V0KG4sdCksdC0xPHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSYmKHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT10LTEpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXT49MCYmdGhpcy5wcmVmaXhTdW0uc2V0KHMuc3ViYXJyYXkoMCx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMSkpLCEwKX1zZXRWYWx1ZSh0LG4pe3JldHVybiB0PVRlKHQpLG49VGUobiksdGhpcy52YWx1ZXNbdF09PT1uPyExOih0aGlzLnZhbHVlc1t0XT1uLHQtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09dC0xKSwhMCl9cmVtb3ZlVmFsdWVzKHQsbil7dD1UZSh0KSxuPVRlKG4pO2NvbnN0IHI9dGhpcy52YWx1ZXMscz10aGlzLnByZWZpeFN1bTtpZih0Pj1yLmxlbmd0aClyZXR1cm4hMTtjb25zdCBpPXIubGVuZ3RoLXQ7cmV0dXJuIG4+PWkmJihuPWkpLG49PT0wPyExOih0aGlzLnZhbHVlcz1uZXcgVWludDMyQXJyYXkoci5sZW5ndGgtbiksdGhpcy52YWx1ZXMuc2V0KHIuc3ViYXJyYXkoMCx0KSwwKSx0aGlzLnZhbHVlcy5zZXQoci5zdWJhcnJheSh0K24pLHQpLHRoaXMucHJlZml4U3VtPW5ldyBVaW50MzJBcnJheSh0aGlzLnZhbHVlcy5sZW5ndGgpLHQtMTx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0mJih0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF09dC0xKSx0aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0+PTAmJnRoaXMucHJlZml4U3VtLnNldChzLnN1YmFycmF5KDAsdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKzEpKSwhMCl9Z2V0VG90YWxTdW0oKXtyZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoPT09MD8wOnRoaXMuX2dldFByZWZpeFN1bSh0aGlzLnZhbHVlcy5sZW5ndGgtMSl9Z2V0UHJlZml4U3VtKHQpe3JldHVybiB0PDA/MDoodD1UZSh0KSx0aGlzLl9nZXRQcmVmaXhTdW0odCkpfV9nZXRQcmVmaXhTdW0odCl7aWYodDw9dGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdKXJldHVybiB0aGlzLnByZWZpeFN1bVt0XTtsZXQgbj10aGlzLnByZWZpeFN1bVZhbGlkSW5kZXhbMF0rMTtuPT09MCYmKHRoaXMucHJlZml4U3VtWzBdPXRoaXMudmFsdWVzWzBdLG4rKyksdD49dGhpcy52YWx1ZXMubGVuZ3RoJiYodD10aGlzLnZhbHVlcy5sZW5ndGgtMSk7Zm9yKGxldCByPW47cjw9dDtyKyspdGhpcy5wcmVmaXhTdW1bcl09dGhpcy5wcmVmaXhTdW1bci0xXSt0aGlzLnZhbHVlc1tyXTtyZXR1cm4gdGhpcy5wcmVmaXhTdW1WYWxpZEluZGV4WzBdPU1hdGgubWF4KHRoaXMucHJlZml4U3VtVmFsaWRJbmRleFswXSx0KSx0aGlzLnByZWZpeFN1bVt0XX1nZXRJbmRleE9mKHQpe3Q9TWF0aC5mbG9vcih0KSx0aGlzLmdldFRvdGFsU3VtKCk7bGV0IG49MCxyPXRoaXMudmFsdWVzLmxlbmd0aC0xLHM9MCxpPTAsbD0wO2Zvcig7bjw9cjspaWYocz1uKyhyLW4pLzJ8MCxpPXRoaXMucHJlZml4U3VtW3NdLGw9aS10aGlzLnZhbHVlc1tzXSx0PGwpcj1zLTE7ZWxzZSBpZih0Pj1pKW49cysxO2Vsc2UgYnJlYWs7cmV0dXJuIG5ldyBsaShzLHQtbCl9fWNsYXNzIGxpe2NvbnN0cnVjdG9yKHQsbil7dGhpcy5pbmRleD10LHRoaXMucmVtYWluZGVyPW4sdGhpcy5fcHJlZml4U3VtSW5kZXhPZlJlc3VsdEJyYW5kPXZvaWQgMCx0aGlzLmluZGV4PXQsdGhpcy5yZW1haW5kZXI9bn19Y2xhc3Mgb2l7Y29uc3RydWN0b3IodCxuLHIscyl7dGhpcy5fdXJpPXQsdGhpcy5fbGluZXM9bix0aGlzLl9lb2w9cix0aGlzLl92ZXJzaW9uSWQ9cyx0aGlzLl9saW5lU3RhcnRzPW51bGwsdGhpcy5fY2FjaGVkVGV4dFZhbHVlPW51bGx9ZGlzcG9zZSgpe3RoaXMuX2xpbmVzLmxlbmd0aD0wfWdldCB2ZXJzaW9uKCl7cmV0dXJuIHRoaXMuX3ZlcnNpb25JZH1nZXRUZXh0KCl7cmV0dXJuIHRoaXMuX2NhY2hlZFRleHRWYWx1ZT09PW51bGwmJih0aGlzLl9jYWNoZWRUZXh0VmFsdWU9dGhpcy5fbGluZXMuam9pbih0aGlzLl9lb2wpKSx0aGlzLl9jYWNoZWRUZXh0VmFsdWV9b25FdmVudHModCl7dC5lb2wmJnQuZW9sIT09dGhpcy5fZW9sJiYodGhpcy5fZW9sPXQuZW9sLHRoaXMuX2xpbmVTdGFydHM9bnVsbCk7Y29uc3Qgbj10LmNoYW5nZXM7Zm9yKGNvbnN0IHIgb2Ygbil0aGlzLl9hY2NlcHREZWxldGVSYW5nZShyLnJhbmdlKSx0aGlzLl9hY2NlcHRJbnNlcnRUZXh0KG5ldyBKKHIucmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLHIucmFuZ2Uuc3RhcnRDb2x1bW4pLHIudGV4dCk7dGhpcy5fdmVyc2lvbklkPXQudmVyc2lvbklkLHRoaXMuX2NhY2hlZFRleHRWYWx1ZT1udWxsfV9lbnN1cmVMaW5lU3RhcnRzKCl7aWYoIXRoaXMuX2xpbmVTdGFydHMpe2NvbnN0IHQ9dGhpcy5fZW9sLmxlbmd0aCxuPXRoaXMuX2xpbmVzLmxlbmd0aCxyPW5ldyBVaW50MzJBcnJheShuKTtmb3IobGV0IHM9MDtzPG47cysrKXJbc109dGhpcy5fbGluZXNbc10ubGVuZ3RoK3Q7dGhpcy5fbGluZVN0YXJ0cz1uZXcgYWkocil9fV9zZXRMaW5lVGV4dCh0LG4pe3RoaXMuX2xpbmVzW3RdPW4sdGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5zZXRWYWx1ZSh0LHRoaXMuX2xpbmVzW3RdLmxlbmd0aCt0aGlzLl9lb2wubGVuZ3RoKX1fYWNjZXB0RGVsZXRlUmFuZ2UodCl7aWYodC5zdGFydExpbmVOdW1iZXI9PT10LmVuZExpbmVOdW1iZXIpe2lmKHQuc3RhcnRDb2x1bW49PT10LmVuZENvbHVtbilyZXR1cm47dGhpcy5fc2V0TGluZVRleHQodC5zdGFydExpbmVOdW1iZXItMSx0aGlzLl9saW5lc1t0LnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcoMCx0LnN0YXJ0Q29sdW1uLTEpK3RoaXMuX2xpbmVzW3Quc3RhcnRMaW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmVuZENvbHVtbi0xKSk7cmV0dXJufXRoaXMuX3NldExpbmVUZXh0KHQuc3RhcnRMaW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5zdGFydExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKDAsdC5zdGFydENvbHVtbi0xKSt0aGlzLl9saW5lc1t0LmVuZExpbmVOdW1iZXItMV0uc3Vic3RyaW5nKHQuZW5kQ29sdW1uLTEpKSx0aGlzLl9saW5lcy5zcGxpY2UodC5zdGFydExpbmVOdW1iZXIsdC5lbmRMaW5lTnVtYmVyLXQuc3RhcnRMaW5lTnVtYmVyKSx0aGlzLl9saW5lU3RhcnRzJiZ0aGlzLl9saW5lU3RhcnRzLnJlbW92ZVZhbHVlcyh0LnN0YXJ0TGluZU51bWJlcix0LmVuZExpbmVOdW1iZXItdC5zdGFydExpbmVOdW1iZXIpfV9hY2NlcHRJbnNlcnRUZXh0KHQsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybjtjb25zdCByPXBzKG4pO2lmKHIubGVuZ3RoPT09MSl7dGhpcy5fc2V0TGluZVRleHQodC5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuY29sdW1uLTEpK3JbMF0rdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZyh0LmNvbHVtbi0xKSk7cmV0dXJufXJbci5sZW5ndGgtMV0rPXRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5jb2x1bW4tMSksdGhpcy5fc2V0TGluZVRleHQodC5saW5lTnVtYmVyLTEsdGhpcy5fbGluZXNbdC5saW5lTnVtYmVyLTFdLnN1YnN0cmluZygwLHQuY29sdW1uLTEpK3JbMF0pO2NvbnN0IHM9bmV3IFVpbnQzMkFycmF5KHIubGVuZ3RoLTEpO2ZvcihsZXQgaT0xO2k8ci5sZW5ndGg7aSsrKXRoaXMuX2xpbmVzLnNwbGljZSh0LmxpbmVOdW1iZXIraS0xLDAscltpXSksc1tpLTFdPXJbaV0ubGVuZ3RoK3RoaXMuX2VvbC5sZW5ndGg7dGhpcy5fbGluZVN0YXJ0cyYmdGhpcy5fbGluZVN0YXJ0cy5pbnNlcnRWYWx1ZXModC5saW5lTnVtYmVyLHMpfX1jb25zdCB1aT0iYH4hQCMkJV4mKigpLT0rW3tdfVxcfDs6J1wiLC48Pi8/IjtmdW5jdGlvbiBjaShlPSIiKXtsZXQgdD0iKC0/XFxkKlxcLlxcZFxcdyopfChbXiI7Zm9yKGNvbnN0IG4gb2YgdWkpZS5pbmRleE9mKG4pPj0wfHwodCs9IlxcIituKTtyZXR1cm4gdCs9Ilxcc10rKSIsbmV3IFJlZ0V4cCh0LCJnIil9Y29uc3Qgdm49Y2koKTtmdW5jdGlvbiB3bihlKXtsZXQgdD12bjtpZihlJiZlIGluc3RhbmNlb2YgUmVnRXhwKWlmKGUuZ2xvYmFsKXQ9ZTtlbHNle2xldCBuPSJnIjtlLmlnbm9yZUNhc2UmJihuKz0iaSIpLGUubXVsdGlsaW5lJiYobis9Im0iKSxlLnVuaWNvZGUmJihuKz0idSIpLHQ9bmV3IFJlZ0V4cChlLnNvdXJjZSxuKX1yZXR1cm4gdC5sYXN0SW5kZXg9MCx0fWNvbnN0IExuPW5ldyB0cztMbi51bnNoaWZ0KHttYXhMZW46MWUzLHdpbmRvd1NpemU6MTUsdGltZUJ1ZGdldDoxNTB9KTtmdW5jdGlvbiBGdChlLHQsbixyLHMpe2lmKHQ9d24odCksc3x8KHM9WmUuZmlyc3QoTG4pKSxuLmxlbmd0aD5zLm1heExlbil7bGV0IGM9ZS1zLm1heExlbi8yO3JldHVybiBjPDA/Yz0wOnIrPWMsbj1uLnN1YnN0cmluZyhjLGUrcy5tYXhMZW4vMiksRnQoZSx0LG4scixzKX1jb25zdCBpPURhdGUubm93KCksbD1lLTEtcjtsZXQgbz0tMSx1PW51bGw7Zm9yKGxldCBjPTE7IShEYXRlLm5vdygpLWk+PXMudGltZUJ1ZGdldCk7YysrKXtjb25zdCBoPWwtcy53aW5kb3dTaXplKmM7dC5sYXN0SW5kZXg9TWF0aC5tYXgoMCxoKTtjb25zdCBmPWhpKHQsbixsLG8pO2lmKCFmJiZ1fHwodT1mLGg8PTApKWJyZWFrO289aH1pZih1KXtjb25zdCBjPXt3b3JkOnVbMF0sc3RhcnRDb2x1bW46cisxK3UuaW5kZXgsZW5kQ29sdW1uOnIrMSt1LmluZGV4K3VbMF0ubGVuZ3RofTtyZXR1cm4gdC5sYXN0SW5kZXg9MCxjfXJldHVybiBudWxsfWZ1bmN0aW9uIGhpKGUsdCxuLHIpe2xldCBzO2Zvcig7cz1lLmV4ZWModCk7KXtjb25zdCBpPXMuaW5kZXh8fDA7aWYoaTw9biYmZS5sYXN0SW5kZXg+PW4pcmV0dXJuIHM7aWYocj4wJiZpPnIpcmV0dXJuIG51bGx9cmV0dXJuIG51bGx9Y2xhc3MgUHR7Y29uc3RydWN0b3IodCl7Y29uc3Qgbj1wbih0KTt0aGlzLl9kZWZhdWx0VmFsdWU9bix0aGlzLl9hc2NpaU1hcD1QdC5fY3JlYXRlQXNjaWlNYXAobiksdGhpcy5fbWFwPW5ldyBNYXB9c3RhdGljIF9jcmVhdGVBc2NpaU1hcCh0KXtjb25zdCBuPW5ldyBVaW50OEFycmF5KDI1Nik7cmV0dXJuIG4uZmlsbCh0KSxufXNldCh0LG4pe2NvbnN0IHI9cG4obik7dD49MCYmdDwyNTY/dGhpcy5fYXNjaWlNYXBbdF09cjp0aGlzLl9tYXAuc2V0KHQscil9Z2V0KHQpe3JldHVybiB0Pj0wJiZ0PDI1Nj90aGlzLl9hc2NpaU1hcFt0XTp0aGlzLl9tYXAuZ2V0KHQpfHx0aGlzLl9kZWZhdWx0VmFsdWV9Y2xlYXIoKXt0aGlzLl9hc2NpaU1hcC5maWxsKHRoaXMuX2RlZmF1bHRWYWx1ZSksdGhpcy5fbWFwLmNsZWFyKCl9fWNsYXNzIGZpe2NvbnN0cnVjdG9yKHQsbixyKXtjb25zdCBzPW5ldyBVaW50OEFycmF5KHQqbik7Zm9yKGxldCBpPTAsbD10Km47aTxsO2krKylzW2ldPXI7dGhpcy5fZGF0YT1zLHRoaXMucm93cz10LHRoaXMuY29scz1ufWdldCh0LG4pe3JldHVybiB0aGlzLl9kYXRhW3QqdGhpcy5jb2xzK25dfXNldCh0LG4scil7dGhpcy5fZGF0YVt0KnRoaXMuY29scytuXT1yfX1jbGFzcyBkaXtjb25zdHJ1Y3Rvcih0KXtsZXQgbj0wLHI9MDtmb3IobGV0IGk9MCxsPXQubGVuZ3RoO2k8bDtpKyspe2NvbnN0W28sdSxjXT10W2ldO3U+biYmKG49dSksbz5yJiYocj1vKSxjPnImJihyPWMpfW4rKyxyKys7Y29uc3Qgcz1uZXcgZmkocixuLDApO2ZvcihsZXQgaT0wLGw9dC5sZW5ndGg7aTxsO2krKyl7Y29uc3Rbbyx1LGNdPXRbaV07cy5zZXQobyx1LGMpfXRoaXMuX3N0YXRlcz1zLHRoaXMuX21heENoYXJDb2RlPW59bmV4dFN0YXRlKHQsbil7cmV0dXJuIG48MHx8bj49dGhpcy5fbWF4Q2hhckNvZGU/MDp0aGlzLl9zdGF0ZXMuZ2V0KHQsbil9fWxldCBEdD1udWxsO2Z1bmN0aW9uIG1pKCl7cmV0dXJuIER0PT09bnVsbCYmKER0PW5ldyBkaShbWzEsMTA0LDJdLFsxLDcyLDJdLFsxLDEwMiw2XSxbMSw3MCw2XSxbMiwxMTYsM10sWzIsODQsM10sWzMsMTE2LDRdLFszLDg0LDRdLFs0LDExMiw1XSxbNCw4MCw1XSxbNSwxMTUsOV0sWzUsODMsOV0sWzUsNTgsMTBdLFs2LDEwNSw3XSxbNiw3Myw3XSxbNywxMDgsOF0sWzcsNzYsOF0sWzgsMTAxLDldLFs4LDY5LDldLFs5LDU4LDEwXSxbMTAsNDcsMTFdLFsxMSw0NywxMl1dKSksRHR9bGV0ICRlPW51bGw7ZnVuY3Rpb24gZ2koKXtpZigkZT09PW51bGwpeyRlPW5ldyBQdCgwKTtjb25zdCBlPWAgCTw+JyLjgIHjgILvvaHvvaTvvIzvvI7vvJrvvJvigJjjgIjjgIzjgI7jgJTvvIjvvLvvvZvvvaLvvaPvvZ3vvL3vvInjgJXjgI/jgI3jgInigJnvvYDvvZ7igKZgO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKSRlLnNldChlLmNoYXJDb2RlQXQobiksMSk7Y29uc3QgdD0iLiw7OiI7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspJGUuc2V0KHQuY2hhckNvZGVBdChuKSwyKX1yZXR1cm4gJGV9Y2xhc3MgbHR7c3RhdGljIF9jcmVhdGVMaW5rKHQsbixyLHMsaSl7bGV0IGw9aS0xO2Rve2NvbnN0IG89bi5jaGFyQ29kZUF0KGwpO2lmKHQuZ2V0KG8pIT09MilicmVhaztsLS19d2hpbGUobD5zKTtpZihzPjApe2NvbnN0IG89bi5jaGFyQ29kZUF0KHMtMSksdT1uLmNoYXJDb2RlQXQobCk7KG89PT00MCYmdT09PTQxfHxvPT09OTEmJnU9PT05M3x8bz09PTEyMyYmdT09PTEyNSkmJmwtLX1yZXR1cm57cmFuZ2U6e3N0YXJ0TGluZU51bWJlcjpyLHN0YXJ0Q29sdW1uOnMrMSxlbmRMaW5lTnVtYmVyOnIsZW5kQ29sdW1uOmwrMn0sdXJsOm4uc3Vic3RyaW5nKHMsbCsxKX19c3RhdGljIGNvbXB1dGVMaW5rcyh0LG49bWkoKSl7Y29uc3Qgcj1naSgpLHM9W107Zm9yKGxldCBpPTEsbD10LmdldExpbmVDb3VudCgpO2k8PWw7aSsrKXtjb25zdCBvPXQuZ2V0TGluZUNvbnRlbnQoaSksdT1vLmxlbmd0aDtsZXQgYz0wLGg9MCxmPTAsZD0xLG09ITEsZz0hMSx4PSExLHY9ITE7Zm9yKDtjPHU7KXtsZXQgTj0hMTtjb25zdCBTPW8uY2hhckNvZGVBdChjKTtpZihkPT09MTMpe2xldCBfO3N3aXRjaChTKXtjYXNlIDQwOm09ITAsXz0wO2JyZWFrO2Nhc2UgNDE6Xz1tPzA6MTticmVhaztjYXNlIDkxOng9ITAsZz0hMCxfPTA7YnJlYWs7Y2FzZSA5Mzp4PSExLF89Zz8wOjE7YnJlYWs7Y2FzZSAxMjM6dj0hMCxfPTA7YnJlYWs7Y2FzZSAxMjU6Xz12PzA6MTticmVhaztjYXNlIDM5OmNhc2UgMzQ6Y2FzZSA5NjpmPT09Uz9fPTE6Zj09PTM5fHxmPT09MzR8fGY9PT05Nj9fPTA6Xz0xO2JyZWFrO2Nhc2UgNDI6Xz1mPT09NDI/MTowO2JyZWFrO2Nhc2UgMTI0Ol89Zj09PTEyND8xOjA7YnJlYWs7Y2FzZSAzMjpfPXg/MDoxO2JyZWFrO2RlZmF1bHQ6Xz1yLmdldChTKX1fPT09MSYmKHMucHVzaChsdC5fY3JlYXRlTGluayhyLG8saSxoLGMpKSxOPSEwKX1lbHNlIGlmKGQ9PT0xMil7bGV0IF87Uz09PTkxPyhnPSEwLF89MCk6Xz1yLmdldChTKSxfPT09MT9OPSEwOmQ9MTN9ZWxzZSBkPW4ubmV4dFN0YXRlKGQsUyksZD09PTAmJihOPSEwKTtOJiYoZD0xLG09ITEsZz0hMSx2PSExLGg9YysxLGY9UyksYysrfWQ9PT0xMyYmcy5wdXNoKGx0Ll9jcmVhdGVMaW5rKHIsbyxpLGgsdSkpfXJldHVybiBzfX1mdW5jdGlvbiBiaShlKXtyZXR1cm4hZXx8dHlwZW9mIGUuZ2V0TGluZUNvdW50IT0iZnVuY3Rpb24ifHx0eXBlb2YgZS5nZXRMaW5lQ29udGVudCE9ImZ1bmN0aW9uIj9bXTpsdC5jb21wdXRlTGlua3MoZSl9Y2xhc3MgVHR7Y29uc3RydWN0b3IoKXt0aGlzLl9kZWZhdWx0VmFsdWVTZXQ9W1sidHJ1ZSIsImZhbHNlIl0sWyJUcnVlIiwiRmFsc2UiXSxbIlByaXZhdGUiLCJQdWJsaWMiLCJGcmllbmQiLCJSZWFkT25seSIsIlBhcnRpYWwiLCJQcm90ZWN0ZWQiLCJXcml0ZU9ubHkiXSxbInB1YmxpYyIsInByb3RlY3RlZCIsInByaXZhdGUiXV19bmF2aWdhdGVWYWx1ZVNldCh0LG4scixzLGkpe2lmKHQmJm4pe2NvbnN0IGw9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQobixpKTtpZihsKXJldHVybntyYW5nZTp0LHZhbHVlOmx9fWlmKHImJnMpe2NvbnN0IGw9dGhpcy5kb05hdmlnYXRlVmFsdWVTZXQocyxpKTtpZihsKXJldHVybntyYW5nZTpyLHZhbHVlOmx9fXJldHVybiBudWxsfWRvTmF2aWdhdGVWYWx1ZVNldCh0LG4pe2NvbnN0IHI9dGhpcy5udW1iZXJSZXBsYWNlKHQsbik7cmV0dXJuIHIhPT1udWxsP3I6dGhpcy50ZXh0UmVwbGFjZSh0LG4pfW51bWJlclJlcGxhY2UodCxuKXtjb25zdCByPU1hdGgucG93KDEwLHQubGVuZ3RoLSh0Lmxhc3RJbmRleE9mKCIuIikrMSkpO2xldCBzPU51bWJlcih0KTtjb25zdCBpPXBhcnNlRmxvYXQodCk7cmV0dXJuIWlzTmFOKHMpJiYhaXNOYU4oaSkmJnM9PT1pP3M9PT0wJiYhbj9udWxsOihzPU1hdGguZmxvb3IocypyKSxzKz1uP3I6LXIsU3RyaW5nKHMvcikpOm51bGx9dGV4dFJlcGxhY2UodCxuKXtyZXR1cm4gdGhpcy52YWx1ZVNldHNSZXBsYWNlKHRoaXMuX2RlZmF1bHRWYWx1ZVNldCx0LG4pfXZhbHVlU2V0c1JlcGxhY2UodCxuLHIpe2xldCBzPW51bGw7Zm9yKGxldCBpPTAsbD10Lmxlbmd0aDtzPT09bnVsbCYmaTxsO2krKylzPXRoaXMudmFsdWVTZXRSZXBsYWNlKHRbaV0sbixyKTtyZXR1cm4gc312YWx1ZVNldFJlcGxhY2UodCxuLHIpe2xldCBzPXQuaW5kZXhPZihuKTtyZXR1cm4gcz49MD8ocys9cj8xOi0xLHM8MD9zPXQubGVuZ3RoLTE6cyU9dC5sZW5ndGgsdFtzXSk6bnVsbH19VHQuSU5TVEFOQ0U9bmV3IFR0O2NvbnN0IE5uPU9iamVjdC5mcmVlemUoZnVuY3Rpb24oZSx0KXtjb25zdCBuPXNldFRpbWVvdXQoZS5iaW5kKHQpLDApO3JldHVybntkaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KG4pfX19KTt2YXIgb3Q7KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIG49PT1lLk5vbmV8fG49PT1lLkNhbmNlbGxlZHx8biBpbnN0YW5jZW9mIHV0PyEwOiFufHx0eXBlb2YgbiE9Im9iamVjdCI/ITE6dHlwZW9mIG4uaXNDYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJib29sZWFuIiYmdHlwZW9mIG4ub25DYW5jZWxsYXRpb25SZXF1ZXN0ZWQ9PSJmdW5jdGlvbiJ9ZS5pc0NhbmNlbGxhdGlvblRva2VuPXQsZS5Ob25lPU9iamVjdC5mcmVlemUoe2lzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOiExLG9uQ2FuY2VsbGF0aW9uUmVxdWVzdGVkOl90Lk5vbmV9KSxlLkNhbmNlbGxlZD1PYmplY3QuZnJlZXplKHtpc0NhbmNlbGxhdGlvblJlcXVlc3RlZDohMCxvbkNhbmNlbGxhdGlvblJlcXVlc3RlZDpObn0pfSkob3R8fChvdD17fSkpO2NsYXNzIHV0e2NvbnN0cnVjdG9yKCl7dGhpcy5faXNDYW5jZWxsZWQ9ITEsdGhpcy5fZW1pdHRlcj1udWxsfWNhbmNlbCgpe3RoaXMuX2lzQ2FuY2VsbGVkfHwodGhpcy5faXNDYW5jZWxsZWQ9ITAsdGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZmlyZSh2b2lkIDApLHRoaXMuZGlzcG9zZSgpKSl9Z2V0IGlzQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKCl7cmV0dXJuIHRoaXMuX2lzQ2FuY2VsbGVkfWdldCBvbkNhbmNlbGxhdGlvblJlcXVlc3RlZCgpe3JldHVybiB0aGlzLl9pc0NhbmNlbGxlZD9ObjoodGhpcy5fZW1pdHRlcnx8KHRoaXMuX2VtaXR0ZXI9bmV3IHNlKSx0aGlzLl9lbWl0dGVyLmV2ZW50KX1kaXNwb3NlKCl7dGhpcy5fZW1pdHRlciYmKHRoaXMuX2VtaXR0ZXIuZGlzcG9zZSgpLHRoaXMuX2VtaXR0ZXI9bnVsbCl9fWNsYXNzIF9pe2NvbnN0cnVjdG9yKHQpe3RoaXMuX3Rva2VuPXZvaWQgMCx0aGlzLl9wYXJlbnRMaXN0ZW5lcj12b2lkIDAsdGhpcy5fcGFyZW50TGlzdGVuZXI9dCYmdC5vbkNhbmNlbGxhdGlvblJlcXVlc3RlZCh0aGlzLmNhbmNlbCx0aGlzKX1nZXQgdG9rZW4oKXtyZXR1cm4gdGhpcy5fdG9rZW58fCh0aGlzLl90b2tlbj1uZXcgdXQpLHRoaXMuX3Rva2VufWNhbmNlbCgpe3RoaXMuX3Rva2VuP3RoaXMuX3Rva2VuIGluc3RhbmNlb2YgdXQmJnRoaXMuX3Rva2VuLmNhbmNlbCgpOnRoaXMuX3Rva2VuPW90LkNhbmNlbGxlZH1kaXNwb3NlKHQ9ITEpe3ZhciBuO3QmJnRoaXMuY2FuY2VsKCksKG49dGhpcy5fcGFyZW50TGlzdGVuZXIpPT09bnVsbHx8bj09PXZvaWQgMHx8bi5kaXNwb3NlKCksdGhpcy5fdG9rZW4/dGhpcy5fdG9rZW4gaW5zdGFuY2VvZiB1dCYmdGhpcy5fdG9rZW4uZGlzcG9zZSgpOnRoaXMuX3Rva2VuPW90Lk5vbmV9fWNsYXNzIFZ0e2NvbnN0cnVjdG9yKCl7dGhpcy5fa2V5Q29kZVRvU3RyPVtdLHRoaXMuX3N0clRvS2V5Q29kZT1PYmplY3QuY3JlYXRlKG51bGwpfWRlZmluZSh0LG4pe3RoaXMuX2tleUNvZGVUb1N0clt0XT1uLHRoaXMuX3N0clRvS2V5Q29kZVtuLnRvTG93ZXJDYXNlKCldPXR9a2V5Q29kZVRvU3RyKHQpe3JldHVybiB0aGlzLl9rZXlDb2RlVG9TdHJbdF19c3RyVG9LZXlDb2RlKHQpe3JldHVybiB0aGlzLl9zdHJUb0tleUNvZGVbdC50b0xvd2VyQ2FzZSgpXXx8MH19Y29uc3QgY3Q9bmV3IFZ0LEJ0PW5ldyBWdCxxdD1uZXcgVnQseGk9bmV3IEFycmF5KDIzMCkscGk9T2JqZWN0LmNyZWF0ZShudWxsKSx2aT1PYmplY3QuY3JlYXRlKG51bGwpOyhmdW5jdGlvbigpe2NvbnN0IGU9IiIsdD1bWzEsMCwiTm9uZSIsMCwidW5rbm93biIsMCwiVktfVU5LTk9XTiIsZSxlXSxbMSwxLCJIeXBlciIsMCxlLDAsZSxlLGVdLFsxLDIsIlN1cGVyIiwwLGUsMCxlLGUsZV0sWzEsMywiRm4iLDAsZSwwLGUsZSxlXSxbMSw0LCJGbkxvY2siLDAsZSwwLGUsZSxlXSxbMSw1LCJTdXNwZW5kIiwwLGUsMCxlLGUsZV0sWzEsNiwiUmVzdW1lIiwwLGUsMCxlLGUsZV0sWzEsNywiVHVyYm8iLDAsZSwwLGUsZSxlXSxbMSw4LCJTbGVlcCIsMCxlLDAsIlZLX1NMRUVQIixlLGVdLFsxLDksIldha2VVcCIsMCxlLDAsZSxlLGVdLFswLDEwLCJLZXlBIiwzMSwiQSIsNjUsIlZLX0EiLGUsZV0sWzAsMTEsIktleUIiLDMyLCJCIiw2NiwiVktfQiIsZSxlXSxbMCwxMiwiS2V5QyIsMzMsIkMiLDY3LCJWS19DIixlLGVdLFswLDEzLCJLZXlEIiwzNCwiRCIsNjgsIlZLX0QiLGUsZV0sWzAsMTQsIktleUUiLDM1LCJFIiw2OSwiVktfRSIsZSxlXSxbMCwxNSwiS2V5RiIsMzYsIkYiLDcwLCJWS19GIixlLGVdLFswLDE2LCJLZXlHIiwzNywiRyIsNzEsIlZLX0ciLGUsZV0sWzAsMTcsIktleUgiLDM4LCJIIiw3MiwiVktfSCIsZSxlXSxbMCwxOCwiS2V5SSIsMzksIkkiLDczLCJWS19JIixlLGVdLFswLDE5LCJLZXlKIiw0MCwiSiIsNzQsIlZLX0oiLGUsZV0sWzAsMjAsIktleUsiLDQxLCJLIiw3NSwiVktfSyIsZSxlXSxbMCwyMSwiS2V5TCIsNDIsIkwiLDc2LCJWS19MIixlLGVdLFswLDIyLCJLZXlNIiw0MywiTSIsNzcsIlZLX00iLGUsZV0sWzAsMjMsIktleU4iLDQ0LCJOIiw3OCwiVktfTiIsZSxlXSxbMCwyNCwiS2V5TyIsNDUsIk8iLDc5LCJWS19PIixlLGVdLFswLDI1LCJLZXlQIiw0NiwiUCIsODAsIlZLX1AiLGUsZV0sWzAsMjYsIktleVEiLDQ3LCJRIiw4MSwiVktfUSIsZSxlXSxbMCwyNywiS2V5UiIsNDgsIlIiLDgyLCJWS19SIixlLGVdLFswLDI4LCJLZXlTIiw0OSwiUyIsODMsIlZLX1MiLGUsZV0sWzAsMjksIktleVQiLDUwLCJUIiw4NCwiVktfVCIsZSxlXSxbMCwzMCwiS2V5VSIsNTEsIlUiLDg1LCJWS19VIixlLGVdLFswLDMxLCJLZXlWIiw1MiwiViIsODYsIlZLX1YiLGUsZV0sWzAsMzIsIktleVciLDUzLCJXIiw4NywiVktfVyIsZSxlXSxbMCwzMywiS2V5WCIsNTQsIlgiLDg4LCJWS19YIixlLGVdLFswLDM0LCJLZXlZIiw1NSwiWSIsODksIlZLX1kiLGUsZV0sWzAsMzUsIktleVoiLDU2LCJaIiw5MCwiVktfWiIsZSxlXSxbMCwzNiwiRGlnaXQxIiwyMiwiMSIsNDksIlZLXzEiLGUsZV0sWzAsMzcsIkRpZ2l0MiIsMjMsIjIiLDUwLCJWS18yIixlLGVdLFswLDM4LCJEaWdpdDMiLDI0LCIzIiw1MSwiVktfMyIsZSxlXSxbMCwzOSwiRGlnaXQ0IiwyNSwiNCIsNTIsIlZLXzQiLGUsZV0sWzAsNDAsIkRpZ2l0NSIsMjYsIjUiLDUzLCJWS181IixlLGVdLFswLDQxLCJEaWdpdDYiLDI3LCI2Iiw1NCwiVktfNiIsZSxlXSxbMCw0MiwiRGlnaXQ3IiwyOCwiNyIsNTUsIlZLXzciLGUsZV0sWzAsNDMsIkRpZ2l0OCIsMjksIjgiLDU2LCJWS184IixlLGVdLFswLDQ0LCJEaWdpdDkiLDMwLCI5Iiw1NywiVktfOSIsZSxlXSxbMCw0NSwiRGlnaXQwIiwyMSwiMCIsNDgsIlZLXzAiLGUsZV0sWzEsNDYsIkVudGVyIiwzLCJFbnRlciIsMTMsIlZLX1JFVFVSTiIsZSxlXSxbMSw0NywiRXNjYXBlIiw5LCJFc2NhcGUiLDI3LCJWS19FU0NBUEUiLGUsZV0sWzEsNDgsIkJhY2tzcGFjZSIsMSwiQmFja3NwYWNlIiw4LCJWS19CQUNLIixlLGVdLFsxLDQ5LCJUYWIiLDIsIlRhYiIsOSwiVktfVEFCIixlLGVdLFsxLDUwLCJTcGFjZSIsMTAsIlNwYWNlIiwzMiwiVktfU1BBQ0UiLGUsZV0sWzAsNTEsIk1pbnVzIiw4OCwiLSIsMTg5LCJWS19PRU1fTUlOVVMiLCItIiwiT0VNX01JTlVTIl0sWzAsNTIsIkVxdWFsIiw4NiwiPSIsMTg3LCJWS19PRU1fUExVUyIsIj0iLCJPRU1fUExVUyJdLFswLDUzLCJCcmFja2V0TGVmdCIsOTIsIlsiLDIxOSwiVktfT0VNXzQiLCJbIiwiT0VNXzQiXSxbMCw1NCwiQnJhY2tldFJpZ2h0Iiw5NCwiXSIsMjIxLCJWS19PRU1fNiIsIl0iLCJPRU1fNiJdLFswLDU1LCJCYWNrc2xhc2giLDkzLCJcXCIsMjIwLCJWS19PRU1fNSIsIlxcIiwiT0VNXzUiXSxbMCw1NiwiSW50bEhhc2giLDAsZSwwLGUsZSxlXSxbMCw1NywiU2VtaWNvbG9uIiw4NSwiOyIsMTg2LCJWS19PRU1fMSIsIjsiLCJPRU1fMSJdLFswLDU4LCJRdW90ZSIsOTUsIiciLDIyMiwiVktfT0VNXzciLCInIiwiT0VNXzciXSxbMCw1OSwiQmFja3F1b3RlIiw5MSwiYCIsMTkyLCJWS19PRU1fMyIsImAiLCJPRU1fMyJdLFswLDYwLCJDb21tYSIsODcsIiwiLDE4OCwiVktfT0VNX0NPTU1BIiwiLCIsIk9FTV9DT01NQSJdLFswLDYxLCJQZXJpb2QiLDg5LCIuIiwxOTAsIlZLX09FTV9QRVJJT0QiLCIuIiwiT0VNX1BFUklPRCJdLFswLDYyLCJTbGFzaCIsOTAsIi8iLDE5MSwiVktfT0VNXzIiLCIvIiwiT0VNXzIiXSxbMSw2MywiQ2Fwc0xvY2siLDgsIkNhcHNMb2NrIiwyMCwiVktfQ0FQSVRBTCIsZSxlXSxbMSw2NCwiRjEiLDU5LCJGMSIsMTEyLCJWS19GMSIsZSxlXSxbMSw2NSwiRjIiLDYwLCJGMiIsMTEzLCJWS19GMiIsZSxlXSxbMSw2NiwiRjMiLDYxLCJGMyIsMTE0LCJWS19GMyIsZSxlXSxbMSw2NywiRjQiLDYyLCJGNCIsMTE1LCJWS19GNCIsZSxlXSxbMSw2OCwiRjUiLDYzLCJGNSIsMTE2LCJWS19GNSIsZSxlXSxbMSw2OSwiRjYiLDY0LCJGNiIsMTE3LCJWS19GNiIsZSxlXSxbMSw3MCwiRjciLDY1LCJGNyIsMTE4LCJWS19GNyIsZSxlXSxbMSw3MSwiRjgiLDY2LCJGOCIsMTE5LCJWS19GOCIsZSxlXSxbMSw3MiwiRjkiLDY3LCJGOSIsMTIwLCJWS19GOSIsZSxlXSxbMSw3MywiRjEwIiw2OCwiRjEwIiwxMjEsIlZLX0YxMCIsZSxlXSxbMSw3NCwiRjExIiw2OSwiRjExIiwxMjIsIlZLX0YxMSIsZSxlXSxbMSw3NSwiRjEyIiw3MCwiRjEyIiwxMjMsIlZLX0YxMiIsZSxlXSxbMSw3NiwiUHJpbnRTY3JlZW4iLDAsZSwwLGUsZSxlXSxbMSw3NywiU2Nyb2xsTG9jayIsODQsIlNjcm9sbExvY2siLDE0NSwiVktfU0NST0xMIixlLGVdLFsxLDc4LCJQYXVzZSIsNywiUGF1c2VCcmVhayIsMTksIlZLX1BBVVNFIixlLGVdLFsxLDc5LCJJbnNlcnQiLDE5LCJJbnNlcnQiLDQ1LCJWS19JTlNFUlQiLGUsZV0sWzEsODAsIkhvbWUiLDE0LCJIb21lIiwzNiwiVktfSE9NRSIsZSxlXSxbMSw4MSwiUGFnZVVwIiwxMSwiUGFnZVVwIiwzMywiVktfUFJJT1IiLGUsZV0sWzEsODIsIkRlbGV0ZSIsMjAsIkRlbGV0ZSIsNDYsIlZLX0RFTEVURSIsZSxlXSxbMSw4MywiRW5kIiwxMywiRW5kIiwzNSwiVktfRU5EIixlLGVdLFsxLDg0LCJQYWdlRG93biIsMTIsIlBhZ2VEb3duIiwzNCwiVktfTkVYVCIsZSxlXSxbMSw4NSwiQXJyb3dSaWdodCIsMTcsIlJpZ2h0QXJyb3ciLDM5LCJWS19SSUdIVCIsIlJpZ2h0IixlXSxbMSw4NiwiQXJyb3dMZWZ0IiwxNSwiTGVmdEFycm93IiwzNywiVktfTEVGVCIsIkxlZnQiLGVdLFsxLDg3LCJBcnJvd0Rvd24iLDE4LCJEb3duQXJyb3ciLDQwLCJWS19ET1dOIiwiRG93biIsZV0sWzEsODgsIkFycm93VXAiLDE2LCJVcEFycm93IiwzOCwiVktfVVAiLCJVcCIsZV0sWzEsODksIk51bUxvY2siLDgzLCJOdW1Mb2NrIiwxNDQsIlZLX05VTUxPQ0siLGUsZV0sWzEsOTAsIk51bXBhZERpdmlkZSIsMTEzLCJOdW1QYWRfRGl2aWRlIiwxMTEsIlZLX0RJVklERSIsZSxlXSxbMSw5MSwiTnVtcGFkTXVsdGlwbHkiLDEwOCwiTnVtUGFkX011bHRpcGx5IiwxMDYsIlZLX01VTFRJUExZIixlLGVdLFsxLDkyLCJOdW1wYWRTdWJ0cmFjdCIsMTExLCJOdW1QYWRfU3VidHJhY3QiLDEwOSwiVktfU1VCVFJBQ1QiLGUsZV0sWzEsOTMsIk51bXBhZEFkZCIsMTA5LCJOdW1QYWRfQWRkIiwxMDcsIlZLX0FERCIsZSxlXSxbMSw5NCwiTnVtcGFkRW50ZXIiLDMsZSwwLGUsZSxlXSxbMSw5NSwiTnVtcGFkMSIsOTksIk51bVBhZDEiLDk3LCJWS19OVU1QQUQxIixlLGVdLFsxLDk2LCJOdW1wYWQyIiwxMDAsIk51bVBhZDIiLDk4LCJWS19OVU1QQUQyIixlLGVdLFsxLDk3LCJOdW1wYWQzIiwxMDEsIk51bVBhZDMiLDk5LCJWS19OVU1QQUQzIixlLGVdLFsxLDk4LCJOdW1wYWQ0IiwxMDIsIk51bVBhZDQiLDEwMCwiVktfTlVNUEFENCIsZSxlXSxbMSw5OSwiTnVtcGFkNSIsMTAzLCJOdW1QYWQ1IiwxMDEsIlZLX05VTVBBRDUiLGUsZV0sWzEsMTAwLCJOdW1wYWQ2IiwxMDQsIk51bVBhZDYiLDEwMiwiVktfTlVNUEFENiIsZSxlXSxbMSwxMDEsIk51bXBhZDciLDEwNSwiTnVtUGFkNyIsMTAzLCJWS19OVU1QQUQ3IixlLGVdLFsxLDEwMiwiTnVtcGFkOCIsMTA2LCJOdW1QYWQ4IiwxMDQsIlZLX05VTVBBRDgiLGUsZV0sWzEsMTAzLCJOdW1wYWQ5IiwxMDcsIk51bVBhZDkiLDEwNSwiVktfTlVNUEFEOSIsZSxlXSxbMSwxMDQsIk51bXBhZDAiLDk4LCJOdW1QYWQwIiw5NiwiVktfTlVNUEFEMCIsZSxlXSxbMSwxMDUsIk51bXBhZERlY2ltYWwiLDExMiwiTnVtUGFkX0RlY2ltYWwiLDExMCwiVktfREVDSU1BTCIsZSxlXSxbMCwxMDYsIkludGxCYWNrc2xhc2giLDk3LCJPRU1fMTAyIiwyMjYsIlZLX09FTV8xMDIiLGUsZV0sWzEsMTA3LCJDb250ZXh0TWVudSIsNTgsIkNvbnRleHRNZW51Iiw5MyxlLGUsZV0sWzEsMTA4LCJQb3dlciIsMCxlLDAsZSxlLGVdLFsxLDEwOSwiTnVtcGFkRXF1YWwiLDAsZSwwLGUsZSxlXSxbMSwxMTAsIkYxMyIsNzEsIkYxMyIsMTI0LCJWS19GMTMiLGUsZV0sWzEsMTExLCJGMTQiLDcyLCJGMTQiLDEyNSwiVktfRjE0IixlLGVdLFsxLDExMiwiRjE1Iiw3MywiRjE1IiwxMjYsIlZLX0YxNSIsZSxlXSxbMSwxMTMsIkYxNiIsNzQsIkYxNiIsMTI3LCJWS19GMTYiLGUsZV0sWzEsMTE0LCJGMTciLDc1LCJGMTciLDEyOCwiVktfRjE3IixlLGVdLFsxLDExNSwiRjE4Iiw3NiwiRjE4IiwxMjksIlZLX0YxOCIsZSxlXSxbMSwxMTYsIkYxOSIsNzcsIkYxOSIsMTMwLCJWS19GMTkiLGUsZV0sWzEsMTE3LCJGMjAiLDc4LCJGMjAiLDEzMSwiVktfRjIwIixlLGVdLFsxLDExOCwiRjIxIiw3OSwiRjIxIiwxMzIsIlZLX0YyMSIsZSxlXSxbMSwxMTksIkYyMiIsODAsIkYyMiIsMTMzLCJWS19GMjIiLGUsZV0sWzEsMTIwLCJGMjMiLDgxLCJGMjMiLDEzNCwiVktfRjIzIixlLGVdLFsxLDEyMSwiRjI0Iiw4MiwiRjI0IiwxMzUsIlZLX0YyNCIsZSxlXSxbMSwxMjIsIk9wZW4iLDAsZSwwLGUsZSxlXSxbMSwxMjMsIkhlbHAiLDAsZSwwLGUsZSxlXSxbMSwxMjQsIlNlbGVjdCIsMCxlLDAsZSxlLGVdLFsxLDEyNSwiQWdhaW4iLDAsZSwwLGUsZSxlXSxbMSwxMjYsIlVuZG8iLDAsZSwwLGUsZSxlXSxbMSwxMjcsIkN1dCIsMCxlLDAsZSxlLGVdLFsxLDEyOCwiQ29weSIsMCxlLDAsZSxlLGVdLFsxLDEyOSwiUGFzdGUiLDAsZSwwLGUsZSxlXSxbMSwxMzAsIkZpbmQiLDAsZSwwLGUsZSxlXSxbMSwxMzEsIkF1ZGlvVm9sdW1lTXV0ZSIsMTE3LCJBdWRpb1ZvbHVtZU11dGUiLDE3MywiVktfVk9MVU1FX01VVEUiLGUsZV0sWzEsMTMyLCJBdWRpb1ZvbHVtZVVwIiwxMTgsIkF1ZGlvVm9sdW1lVXAiLDE3NSwiVktfVk9MVU1FX1VQIixlLGVdLFsxLDEzMywiQXVkaW9Wb2x1bWVEb3duIiwxMTksIkF1ZGlvVm9sdW1lRG93biIsMTc0LCJWS19WT0xVTUVfRE9XTiIsZSxlXSxbMSwxMzQsIk51bXBhZENvbW1hIiwxMTAsIk51bVBhZF9TZXBhcmF0b3IiLDEwOCwiVktfU0VQQVJBVE9SIixlLGVdLFswLDEzNSwiSW50bFJvIiwxMTUsIkFCTlRfQzEiLDE5MywiVktfQUJOVF9DMSIsZSxlXSxbMSwxMzYsIkthbmFNb2RlIiwwLGUsMCxlLGUsZV0sWzAsMTM3LCJJbnRsWWVuIiwwLGUsMCxlLGUsZV0sWzEsMTM4LCJDb252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTM5LCJOb25Db252ZXJ0IiwwLGUsMCxlLGUsZV0sWzEsMTQwLCJMYW5nMSIsMCxlLDAsZSxlLGVdLFsxLDE0MSwiTGFuZzIiLDAsZSwwLGUsZSxlXSxbMSwxNDIsIkxhbmczIiwwLGUsMCxlLGUsZV0sWzEsMTQzLCJMYW5nNCIsMCxlLDAsZSxlLGVdLFsxLDE0NCwiTGFuZzUiLDAsZSwwLGUsZSxlXSxbMSwxNDUsIkFib3J0IiwwLGUsMCxlLGUsZV0sWzEsMTQ2LCJQcm9wcyIsMCxlLDAsZSxlLGVdLFsxLDE0NywiTnVtcGFkUGFyZW5MZWZ0IiwwLGUsMCxlLGUsZV0sWzEsMTQ4LCJOdW1wYWRQYXJlblJpZ2h0IiwwLGUsMCxlLGUsZV0sWzEsMTQ5LCJOdW1wYWRCYWNrc3BhY2UiLDAsZSwwLGUsZSxlXSxbMSwxNTAsIk51bXBhZE1lbW9yeVN0b3JlIiwwLGUsMCxlLGUsZV0sWzEsMTUxLCJOdW1wYWRNZW1vcnlSZWNhbGwiLDAsZSwwLGUsZSxlXSxbMSwxNTIsIk51bXBhZE1lbW9yeUNsZWFyIiwwLGUsMCxlLGUsZV0sWzEsMTUzLCJOdW1wYWRNZW1vcnlBZGQiLDAsZSwwLGUsZSxlXSxbMSwxNTQsIk51bXBhZE1lbW9yeVN1YnRyYWN0IiwwLGUsMCxlLGUsZV0sWzEsMTU1LCJOdW1wYWRDbGVhciIsMTMxLCJDbGVhciIsMTIsIlZLX0NMRUFSIixlLGVdLFsxLDE1NiwiTnVtcGFkQ2xlYXJFbnRyeSIsMCxlLDAsZSxlLGVdLFsxLDAsZSw1LCJDdHJsIiwxNywiVktfQ09OVFJPTCIsZSxlXSxbMSwwLGUsNCwiU2hpZnQiLDE2LCJWS19TSElGVCIsZSxlXSxbMSwwLGUsNiwiQWx0IiwxOCwiVktfTUVOVSIsZSxlXSxbMSwwLGUsNTcsIk1ldGEiLDkxLCJWS19DT01NQU5EIixlLGVdLFsxLDE1NywiQ29udHJvbExlZnQiLDUsZSwwLCJWS19MQ09OVFJPTCIsZSxlXSxbMSwxNTgsIlNoaWZ0TGVmdCIsNCxlLDAsIlZLX0xTSElGVCIsZSxlXSxbMSwxNTksIkFsdExlZnQiLDYsZSwwLCJWS19MTUVOVSIsZSxlXSxbMSwxNjAsIk1ldGFMZWZ0Iiw1NyxlLDAsIlZLX0xXSU4iLGUsZV0sWzEsMTYxLCJDb250cm9sUmlnaHQiLDUsZSwwLCJWS19SQ09OVFJPTCIsZSxlXSxbMSwxNjIsIlNoaWZ0UmlnaHQiLDQsZSwwLCJWS19SU0hJRlQiLGUsZV0sWzEsMTYzLCJBbHRSaWdodCIsNixlLDAsIlZLX1JNRU5VIixlLGVdLFsxLDE2NCwiTWV0YVJpZ2h0Iiw1NyxlLDAsIlZLX1JXSU4iLGUsZV0sWzEsMTY1LCJCcmlnaHRuZXNzVXAiLDAsZSwwLGUsZSxlXSxbMSwxNjYsIkJyaWdodG5lc3NEb3duIiwwLGUsMCxlLGUsZV0sWzEsMTY3LCJNZWRpYVBsYXkiLDAsZSwwLGUsZSxlXSxbMSwxNjgsIk1lZGlhUmVjb3JkIiwwLGUsMCxlLGUsZV0sWzEsMTY5LCJNZWRpYUZhc3RGb3J3YXJkIiwwLGUsMCxlLGUsZV0sWzEsMTcwLCJNZWRpYVJld2luZCIsMCxlLDAsZSxlLGVdLFsxLDE3MSwiTWVkaWFUcmFja05leHQiLDEyNCwiTWVkaWFUcmFja05leHQiLDE3NiwiVktfTUVESUFfTkVYVF9UUkFDSyIsZSxlXSxbMSwxNzIsIk1lZGlhVHJhY2tQcmV2aW91cyIsMTI1LCJNZWRpYVRyYWNrUHJldmlvdXMiLDE3NywiVktfTUVESUFfUFJFVl9UUkFDSyIsZSxlXSxbMSwxNzMsIk1lZGlhU3RvcCIsMTI2LCJNZWRpYVN0b3AiLDE3OCwiVktfTUVESUFfU1RPUCIsZSxlXSxbMSwxNzQsIkVqZWN0IiwwLGUsMCxlLGUsZV0sWzEsMTc1LCJNZWRpYVBsYXlQYXVzZSIsMTI3LCJNZWRpYVBsYXlQYXVzZSIsMTc5LCJWS19NRURJQV9QTEFZX1BBVVNFIixlLGVdLFsxLDE3NiwiTWVkaWFTZWxlY3QiLDEyOCwiTGF1bmNoTWVkaWFQbGF5ZXIiLDE4MSwiVktfTUVESUFfTEFVTkNIX01FRElBX1NFTEVDVCIsZSxlXSxbMSwxNzcsIkxhdW5jaE1haWwiLDEyOSwiTGF1bmNoTWFpbCIsMTgwLCJWS19NRURJQV9MQVVOQ0hfTUFJTCIsZSxlXSxbMSwxNzgsIkxhdW5jaEFwcDIiLDEzMCwiTGF1bmNoQXBwMiIsMTgzLCJWS19NRURJQV9MQVVOQ0hfQVBQMiIsZSxlXSxbMSwxNzksIkxhdW5jaEFwcDEiLDAsZSwwLCJWS19NRURJQV9MQVVOQ0hfQVBQMSIsZSxlXSxbMSwxODAsIlNlbGVjdFRhc2siLDAsZSwwLGUsZSxlXSxbMSwxODEsIkxhdW5jaFNjcmVlblNhdmVyIiwwLGUsMCxlLGUsZV0sWzEsMTgyLCJCcm93c2VyU2VhcmNoIiwxMjAsIkJyb3dzZXJTZWFyY2giLDE3MCwiVktfQlJPV1NFUl9TRUFSQ0giLGUsZV0sWzEsMTgzLCJCcm93c2VySG9tZSIsMTIxLCJCcm93c2VySG9tZSIsMTcyLCJWS19CUk9XU0VSX0hPTUUiLGUsZV0sWzEsMTg0LCJCcm93c2VyQmFjayIsMTIyLCJCcm93c2VyQmFjayIsMTY2LCJWS19CUk9XU0VSX0JBQ0siLGUsZV0sWzEsMTg1LCJCcm93c2VyRm9yd2FyZCIsMTIzLCJCcm93c2VyRm9yd2FyZCIsMTY3LCJWS19CUk9XU0VSX0ZPUldBUkQiLGUsZV0sWzEsMTg2LCJCcm93c2VyU3RvcCIsMCxlLDAsIlZLX0JST1dTRVJfU1RPUCIsZSxlXSxbMSwxODcsIkJyb3dzZXJSZWZyZXNoIiwwLGUsMCwiVktfQlJPV1NFUl9SRUZSRVNIIixlLGVdLFsxLDE4OCwiQnJvd3NlckZhdm9yaXRlcyIsMCxlLDAsIlZLX0JST1dTRVJfRkFWT1JJVEVTIixlLGVdLFsxLDE4OSwiWm9vbVRvZ2dsZSIsMCxlLDAsZSxlLGVdLFsxLDE5MCwiTWFpbFJlcGx5IiwwLGUsMCxlLGUsZV0sWzEsMTkxLCJNYWlsRm9yd2FyZCIsMCxlLDAsZSxlLGVdLFsxLDE5MiwiTWFpbFNlbmQiLDAsZSwwLGUsZSxlXSxbMSwwLGUsMTE0LCJLZXlJbkNvbXBvc2l0aW9uIiwyMjksZSxlLGVdLFsxLDAsZSwxMTYsIkFCTlRfQzIiLDE5NCwiVktfQUJOVF9DMiIsZSxlXSxbMSwwLGUsOTYsIk9FTV84IiwyMjMsIlZLX09FTV84IixlLGVdLFsxLDAsZSwwLGUsMCwiVktfS0FOQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0hBTkdVTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0pVTkpBIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfRklOQUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IQU5KQSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0tBTkpJIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ09OVkVSVCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX05PTkNPTlZFUlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BQ0NFUFQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19NT0RFQ0hBTkdFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU0VMRUNUIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUFJJTlQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWEVDVVRFIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfU05BUFNIT1QiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19IRUxQIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQVBQUyIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1BST0NFU1NLRVkiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQUNLRVQiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfU0JDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19EQkVfREJDU0NIQVIiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19BVFROIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfQ1JTRUwiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19FWFNFTCIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX0VSRU9GIixlLGVdLFsxLDAsZSwwLGUsMCwiVktfUExBWSIsZSxlXSxbMSwwLGUsMCxlLDAsIlZLX1pPT00iLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19OT05BTUUiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19QQTEiLGUsZV0sWzEsMCxlLDAsZSwwLCJWS19PRU1fQ0xFQVIiLGUsZV1dLG49W10scj1bXTtmb3IoY29uc3QgcyBvZiB0KXtjb25zdFtpLGwsbyx1LGMsaCxmLGQsbV09cztpZihyW2xdfHwocltsXT0hMCxwaVtvXT1sLHZpW28udG9Mb3dlckNhc2UoKV09bCksIW5bdV0pe2lmKG5bdV09ITAsIWMpdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgcmVwcmVzZW50YXRpb24gbWlzc2luZyBmb3Iga2V5IGNvZGUgJHt1fSBhcm91bmQgc2NhbiBjb2RlICR7b31gKTtjdC5kZWZpbmUodSxjKSxCdC5kZWZpbmUodSxkfHxjKSxxdC5kZWZpbmUodSxtfHxkfHxjKX1oJiYoeGlbaF09dSl9fSkoKTt2YXIgU247KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobyl7cmV0dXJuIGN0LmtleUNvZGVUb1N0cihvKX1lLnRvU3RyaW5nPXQ7ZnVuY3Rpb24gbihvKXtyZXR1cm4gY3Quc3RyVG9LZXlDb2RlKG8pfWUuZnJvbVN0cmluZz1uO2Z1bmN0aW9uIHIobyl7cmV0dXJuIEJ0LmtleUNvZGVUb1N0cihvKX1lLnRvVXNlclNldHRpbmdzVVM9cjtmdW5jdGlvbiBzKG8pe3JldHVybiBxdC5rZXlDb2RlVG9TdHIobyl9ZS50b1VzZXJTZXR0aW5nc0dlbmVyYWw9cztmdW5jdGlvbiBpKG8pe3JldHVybiBCdC5zdHJUb0tleUNvZGUobyl8fHF0LnN0clRvS2V5Q29kZShvKX1lLmZyb21Vc2VyU2V0dGluZ3M9aTtmdW5jdGlvbiBsKG8pe2lmKG8+PTk4JiZvPD0xMTMpcmV0dXJuIG51bGw7c3dpdGNoKG8pe2Nhc2UgMTY6cmV0dXJuIlVwIjtjYXNlIDE4OnJldHVybiJEb3duIjtjYXNlIDE1OnJldHVybiJMZWZ0IjtjYXNlIDE3OnJldHVybiJSaWdodCJ9cmV0dXJuIGN0LmtleUNvZGVUb1N0cihvKX1lLnRvRWxlY3Ryb25BY2NlbGVyYXRvcj1sfSkoU258fChTbj17fSkpO2Z1bmN0aW9uIHdpKGUsdCl7Y29uc3Qgbj0odCY2NTUzNSk8PDE2Pj4+MDtyZXR1cm4oZXxuKT4+PjB9Y2xhc3MgdGUgZXh0ZW5kcyBQe2NvbnN0cnVjdG9yKHQsbixyLHMpe3N1cGVyKHQsbixyLHMpLHRoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj1uLHRoaXMucG9zaXRpb25MaW5lTnVtYmVyPXIsdGhpcy5wb3NpdGlvbkNvbHVtbj1zfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyKyIsIit0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKyIgLT4gIit0aGlzLnBvc2l0aW9uTGluZU51bWJlcisiLCIrdGhpcy5wb3NpdGlvbkNvbHVtbisiXSJ9ZXF1YWxzU2VsZWN0aW9uKHQpe3JldHVybiB0ZS5zZWxlY3Rpb25zRXF1YWwodGhpcyx0KX1zdGF0aWMgc2VsZWN0aW9uc0VxdWFsKHQsbil7cmV0dXJuIHQuc2VsZWN0aW9uU3RhcnRMaW5lTnVtYmVyPT09bi5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXImJnQuc2VsZWN0aW9uU3RhcnRDb2x1bW49PT1uLnNlbGVjdGlvblN0YXJ0Q29sdW1uJiZ0LnBvc2l0aW9uTGluZU51bWJlcj09PW4ucG9zaXRpb25MaW5lTnVtYmVyJiZ0LnBvc2l0aW9uQ29sdW1uPT09bi5wb3NpdGlvbkNvbHVtbn1nZXREaXJlY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rpb25TdGFydExpbmVOdW1iZXI9PT10aGlzLnN0YXJ0TGluZU51bWJlciYmdGhpcy5zZWxlY3Rpb25TdGFydENvbHVtbj09PXRoaXMuc3RhcnRDb2x1bW4/MDoxfXNldEVuZFBvc2l0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0RGlyZWN0aW9uKCk9PT0wP25ldyB0ZSh0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uLHQsbik6bmV3IHRlKHQsbix0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLnN0YXJ0Q29sdW1uKX1nZXRQb3NpdGlvbigpe3JldHVybiBuZXcgSih0aGlzLnBvc2l0aW9uTGluZU51bWJlcix0aGlzLnBvc2l0aW9uQ29sdW1uKX1nZXRTZWxlY3Rpb25TdGFydCgpe3JldHVybiBuZXcgSih0aGlzLnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0aGlzLnNlbGVjdGlvblN0YXJ0Q29sdW1uKX1zZXRTdGFydFBvc2l0aW9uKHQsbil7cmV0dXJuIHRoaXMuZ2V0RGlyZWN0aW9uKCk9PT0wP25ldyB0ZSh0LG4sdGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uKTpuZXcgdGUodGhpcy5lbmRMaW5lTnVtYmVyLHRoaXMuZW5kQ29sdW1uLHQsbil9c3RhdGljIGZyb21Qb3NpdGlvbnModCxuPXQpe3JldHVybiBuZXcgdGUodC5saW5lTnVtYmVyLHQuY29sdW1uLG4ubGluZU51bWJlcixuLmNvbHVtbil9c3RhdGljIGZyb21SYW5nZSh0LG4pe3JldHVybiBuPT09MD9uZXcgdGUodC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbix0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4pOm5ldyB0ZSh0LmVuZExpbmVOdW1iZXIsdC5lbmRDb2x1bW4sdC5zdGFydExpbmVOdW1iZXIsdC5zdGFydENvbHVtbil9c3RhdGljIGxpZnRTZWxlY3Rpb24odCl7cmV0dXJuIG5ldyB0ZSh0LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcix0LnNlbGVjdGlvblN0YXJ0Q29sdW1uLHQucG9zaXRpb25MaW5lTnVtYmVyLHQucG9zaXRpb25Db2x1bW4pfXN0YXRpYyBzZWxlY3Rpb25zQXJyRXF1YWwodCxuKXtpZih0JiYhbnx8IXQmJm4pcmV0dXJuITE7aWYoIXQmJiFuKXJldHVybiEwO2lmKHQubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJuITE7Zm9yKGxldCByPTAscz10Lmxlbmd0aDtyPHM7cisrKWlmKCF0aGlzLnNlbGVjdGlvbnNFcXVhbCh0W3JdLG5bcl0pKXJldHVybiExO3JldHVybiEwfXN0YXRpYyBpc0lTZWxlY3Rpb24odCl7cmV0dXJuIHQmJnR5cGVvZiB0LnNlbGVjdGlvblN0YXJ0TGluZU51bWJlcj09Im51bWJlciImJnR5cGVvZiB0LnNlbGVjdGlvblN0YXJ0Q29sdW1uPT0ibnVtYmVyIiYmdHlwZW9mIHQucG9zaXRpb25MaW5lTnVtYmVyPT0ibnVtYmVyIiYmdHlwZW9mIHQucG9zaXRpb25Db2x1bW49PSJudW1iZXIifXN0YXRpYyBjcmVhdGVXaXRoRGlyZWN0aW9uKHQsbixyLHMsaSl7cmV0dXJuIGk9PT0wP25ldyB0ZSh0LG4scixzKTpuZXcgdGUocixzLHQsbil9fWNvbnN0IENuPU9iamVjdC5jcmVhdGUobnVsbCk7ZnVuY3Rpb24gYShlLHQpe2lmKGxzKHQpKXtjb25zdCBuPUNuW3RdO2lmKG49PT12b2lkIDApdGhyb3cgbmV3IEVycm9yKGAke2V9IHJlZmVyZW5jZXMgYW4gdW5rbm93biBjb2RpY29uOiAke3R9YCk7dD1ufXJldHVybiBDbltlXT10LHtpZDplfX1jb25zdCBMaT17YWRkOmEoImFkZCIsNmU0KSxwbHVzOmEoInBsdXMiLDZlNCksZ2lzdE5ldzphKCJnaXN0LW5ldyIsNmU0KSxyZXBvQ3JlYXRlOmEoInJlcG8tY3JlYXRlIiw2ZTQpLGxpZ2h0YnVsYjphKCJsaWdodGJ1bGIiLDYwMDAxKSxsaWdodEJ1bGI6YSgibGlnaHQtYnVsYiIsNjAwMDEpLHJlcG86YSgicmVwbyIsNjAwMDIpLHJlcG9EZWxldGU6YSgicmVwby1kZWxldGUiLDYwMDAyKSxnaXN0Rm9yazphKCJnaXN0LWZvcmsiLDYwMDAzKSxyZXBvRm9ya2VkOmEoInJlcG8tZm9ya2VkIiw2MDAwMyksZ2l0UHVsbFJlcXVlc3Q6YSgiZ2l0LXB1bGwtcmVxdWVzdCIsNjAwMDQpLGdpdFB1bGxSZXF1ZXN0QWJhbmRvbmVkOmEoImdpdC1wdWxsLXJlcXVlc3QtYWJhbmRvbmVkIiw2MDAwNCkscmVjb3JkS2V5czphKCJyZWNvcmQta2V5cyIsNjAwMDUpLGtleWJvYXJkOmEoImtleWJvYXJkIiw2MDAwNSksdGFnOmEoInRhZyIsNjAwMDYpLGdpdFB1bGxSZXF1ZXN0TGFiZWw6YSgiZ2l0LXB1bGwtcmVxdWVzdC1sYWJlbCIsNjAwMDYpLHRhZ0FkZDphKCJ0YWctYWRkIiw2MDAwNiksdGFnUmVtb3ZlOmEoInRhZy1yZW1vdmUiLDYwMDA2KSxwZXJzb246YSgicGVyc29uIiw2MDAwNykscGVyc29uRm9sbG93OmEoInBlcnNvbi1mb2xsb3ciLDYwMDA3KSxwZXJzb25PdXRsaW5lOmEoInBlcnNvbi1vdXRsaW5lIiw2MDAwNykscGVyc29uRmlsbGVkOmEoInBlcnNvbi1maWxsZWQiLDYwMDA3KSxnaXRCcmFuY2g6YSgiZ2l0LWJyYW5jaCIsNjAwMDgpLGdpdEJyYW5jaENyZWF0ZTphKCJnaXQtYnJhbmNoLWNyZWF0ZSIsNjAwMDgpLGdpdEJyYW5jaERlbGV0ZTphKCJnaXQtYnJhbmNoLWRlbGV0ZSIsNjAwMDgpLHNvdXJjZUNvbnRyb2w6YSgic291cmNlLWNvbnRyb2wiLDYwMDA4KSxtaXJyb3I6YSgibWlycm9yIiw2MDAwOSksbWlycm9yUHVibGljOmEoIm1pcnJvci1wdWJsaWMiLDYwMDA5KSxzdGFyOmEoInN0YXIiLDYwMDEwKSxzdGFyQWRkOmEoInN0YXItYWRkIiw2MDAxMCksc3RhckRlbGV0ZTphKCJzdGFyLWRlbGV0ZSIsNjAwMTApLHN0YXJFbXB0eTphKCJzdGFyLWVtcHR5Iiw2MDAxMCksY29tbWVudDphKCJjb21tZW50Iiw2MDAxMSksY29tbWVudEFkZDphKCJjb21tZW50LWFkZCIsNjAwMTEpLGFsZXJ0OmEoImFsZXJ0Iiw2MDAxMiksd2FybmluZzphKCJ3YXJuaW5nIiw2MDAxMiksc2VhcmNoOmEoInNlYXJjaCIsNjAwMTMpLHNlYXJjaFNhdmU6YSgic2VhcmNoLXNhdmUiLDYwMDEzKSxsb2dPdXQ6YSgibG9nLW91dCIsNjAwMTQpLHNpZ25PdXQ6YSgic2lnbi1vdXQiLDYwMDE0KSxsb2dJbjphKCJsb2ctaW4iLDYwMDE1KSxzaWduSW46YSgic2lnbi1pbiIsNjAwMTUpLGV5ZTphKCJleWUiLDYwMDE2KSxleWVVbndhdGNoOmEoImV5ZS11bndhdGNoIiw2MDAxNiksZXllV2F0Y2g6YSgiZXllLXdhdGNoIiw2MDAxNiksY2lyY2xlRmlsbGVkOmEoImNpcmNsZS1maWxsZWQiLDYwMDE3KSxwcmltaXRpdmVEb3Q6YSgicHJpbWl0aXZlLWRvdCIsNjAwMTcpLGNsb3NlRGlydHk6YSgiY2xvc2UtZGlydHkiLDYwMDE3KSxkZWJ1Z0JyZWFrcG9pbnQ6YSgiZGVidWctYnJlYWtwb2ludCIsNjAwMTcpLGRlYnVnQnJlYWtwb2ludERpc2FibGVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZGlzYWJsZWQiLDYwMDE3KSxkZWJ1Z0hpbnQ6YSgiZGVidWctaGludCIsNjAwMTcpLHRlcm1pbmFsRGVjb3JhdGlvblN1Y2Nlc3M6YSgidGVybWluYWwtZGVjb3JhdGlvbi1zdWNjZXNzIiw2MDAxNykscHJpbWl0aXZlU3F1YXJlOmEoInByaW1pdGl2ZS1zcXVhcmUiLDYwMDE4KSxlZGl0OmEoImVkaXQiLDYwMDE5KSxwZW5jaWw6YSgicGVuY2lsIiw2MDAxOSksaW5mbzphKCJpbmZvIiw2MDAyMCksaXNzdWVPcGVuZWQ6YSgiaXNzdWUtb3BlbmVkIiw2MDAyMCksZ2lzdFByaXZhdGU6YSgiZ2lzdC1wcml2YXRlIiw2MDAyMSksZ2l0Rm9ya1ByaXZhdGU6YSgiZ2l0LWZvcmstcHJpdmF0ZSIsNjAwMjEpLGxvY2s6YSgibG9jayIsNjAwMjEpLG1pcnJvclByaXZhdGU6YSgibWlycm9yLXByaXZhdGUiLDYwMDIxKSxjbG9zZTphKCJjbG9zZSIsNjAwMjIpLHJlbW92ZUNsb3NlOmEoInJlbW92ZS1jbG9zZSIsNjAwMjIpLHg6YSgieCIsNjAwMjIpLHJlcG9TeW5jOmEoInJlcG8tc3luYyIsNjAwMjMpLHN5bmM6YSgic3luYyIsNjAwMjMpLGNsb25lOmEoImNsb25lIiw2MDAyNCksZGVza3RvcERvd25sb2FkOmEoImRlc2t0b3AtZG93bmxvYWQiLDYwMDI0KSxiZWFrZXI6YSgiYmVha2VyIiw2MDAyNSksbWljcm9zY29wZTphKCJtaWNyb3Njb3BlIiw2MDAyNSksdm06YSgidm0iLDYwMDI2KSxkZXZpY2VEZXNrdG9wOmEoImRldmljZS1kZXNrdG9wIiw2MDAyNiksZmlsZTphKCJmaWxlIiw2MDAyNyksZmlsZVRleHQ6YSgiZmlsZS10ZXh0Iiw2MDAyNyksbW9yZTphKCJtb3JlIiw2MDAyOCksZWxsaXBzaXM6YSgiZWxsaXBzaXMiLDYwMDI4KSxrZWJhYkhvcml6b250YWw6YSgia2ViYWItaG9yaXpvbnRhbCIsNjAwMjgpLG1haWxSZXBseTphKCJtYWlsLXJlcGx5Iiw2MDAyOSkscmVwbHk6YSgicmVwbHkiLDYwMDI5KSxvcmdhbml6YXRpb246YSgib3JnYW5pemF0aW9uIiw2MDAzMCksb3JnYW5pemF0aW9uRmlsbGVkOmEoIm9yZ2FuaXphdGlvbi1maWxsZWQiLDYwMDMwKSxvcmdhbml6YXRpb25PdXRsaW5lOmEoIm9yZ2FuaXphdGlvbi1vdXRsaW5lIiw2MDAzMCksbmV3RmlsZTphKCJuZXctZmlsZSIsNjAwMzEpLGZpbGVBZGQ6YSgiZmlsZS1hZGQiLDYwMDMxKSxuZXdGb2xkZXI6YSgibmV3LWZvbGRlciIsNjAwMzIpLGZpbGVEaXJlY3RvcnlDcmVhdGU6YSgiZmlsZS1kaXJlY3RvcnktY3JlYXRlIiw2MDAzMiksdHJhc2g6YSgidHJhc2giLDYwMDMzKSx0cmFzaGNhbjphKCJ0cmFzaGNhbiIsNjAwMzMpLGhpc3Rvcnk6YSgiaGlzdG9yeSIsNjAwMzQpLGNsb2NrOmEoImNsb2NrIiw2MDAzNCksZm9sZGVyOmEoImZvbGRlciIsNjAwMzUpLGZpbGVEaXJlY3Rvcnk6YSgiZmlsZS1kaXJlY3RvcnkiLDYwMDM1KSxzeW1ib2xGb2xkZXI6YSgic3ltYm9sLWZvbGRlciIsNjAwMzUpLGxvZ29HaXRodWI6YSgibG9nby1naXRodWIiLDYwMDM2KSxtYXJrR2l0aHViOmEoIm1hcmstZ2l0aHViIiw2MDAzNiksZ2l0aHViOmEoImdpdGh1YiIsNjAwMzYpLHRlcm1pbmFsOmEoInRlcm1pbmFsIiw2MDAzNyksY29uc29sZTphKCJjb25zb2xlIiw2MDAzNykscmVwbDphKCJyZXBsIiw2MDAzNyksemFwOmEoInphcCIsNjAwMzgpLHN5bWJvbEV2ZW50OmEoInN5bWJvbC1ldmVudCIsNjAwMzgpLGVycm9yOmEoImVycm9yIiw2MDAzOSksc3RvcDphKCJzdG9wIiw2MDAzOSksdmFyaWFibGU6YSgidmFyaWFibGUiLDYwMDQwKSxzeW1ib2xWYXJpYWJsZTphKCJzeW1ib2wtdmFyaWFibGUiLDYwMDQwKSxhcnJheTphKCJhcnJheSIsNjAwNDIpLHN5bWJvbEFycmF5OmEoInN5bWJvbC1hcnJheSIsNjAwNDIpLHN5bWJvbE1vZHVsZTphKCJzeW1ib2wtbW9kdWxlIiw2MDA0Myksc3ltYm9sUGFja2FnZTphKCJzeW1ib2wtcGFja2FnZSIsNjAwNDMpLHN5bWJvbE5hbWVzcGFjZTphKCJzeW1ib2wtbmFtZXNwYWNlIiw2MDA0Myksc3ltYm9sT2JqZWN0OmEoInN5bWJvbC1vYmplY3QiLDYwMDQzKSxzeW1ib2xNZXRob2Q6YSgic3ltYm9sLW1ldGhvZCIsNjAwNDQpLHN5bWJvbEZ1bmN0aW9uOmEoInN5bWJvbC1mdW5jdGlvbiIsNjAwNDQpLHN5bWJvbENvbnN0cnVjdG9yOmEoInN5bWJvbC1jb25zdHJ1Y3RvciIsNjAwNDQpLHN5bWJvbEJvb2xlYW46YSgic3ltYm9sLWJvb2xlYW4iLDYwMDQ3KSxzeW1ib2xOdWxsOmEoInN5bWJvbC1udWxsIiw2MDA0Nyksc3ltYm9sTnVtZXJpYzphKCJzeW1ib2wtbnVtZXJpYyIsNjAwNDgpLHN5bWJvbE51bWJlcjphKCJzeW1ib2wtbnVtYmVyIiw2MDA0OCksc3ltYm9sU3RydWN0dXJlOmEoInN5bWJvbC1zdHJ1Y3R1cmUiLDYwMDQ5KSxzeW1ib2xTdHJ1Y3Q6YSgic3ltYm9sLXN0cnVjdCIsNjAwNDkpLHN5bWJvbFBhcmFtZXRlcjphKCJzeW1ib2wtcGFyYW1ldGVyIiw2MDA1MCksc3ltYm9sVHlwZVBhcmFtZXRlcjphKCJzeW1ib2wtdHlwZS1wYXJhbWV0ZXIiLDYwMDUwKSxzeW1ib2xLZXk6YSgic3ltYm9sLWtleSIsNjAwNTEpLHN5bWJvbFRleHQ6YSgic3ltYm9sLXRleHQiLDYwMDUxKSxzeW1ib2xSZWZlcmVuY2U6YSgic3ltYm9sLXJlZmVyZW5jZSIsNjAwNTIpLGdvVG9GaWxlOmEoImdvLXRvLWZpbGUiLDYwMDUyKSxzeW1ib2xFbnVtOmEoInN5bWJvbC1lbnVtIiw2MDA1Myksc3ltYm9sVmFsdWU6YSgic3ltYm9sLXZhbHVlIiw2MDA1Myksc3ltYm9sUnVsZXI6YSgic3ltYm9sLXJ1bGVyIiw2MDA1NCksc3ltYm9sVW5pdDphKCJzeW1ib2wtdW5pdCIsNjAwNTQpLGFjdGl2YXRlQnJlYWtwb2ludHM6YSgiYWN0aXZhdGUtYnJlYWtwb2ludHMiLDYwMDU1KSxhcmNoaXZlOmEoImFyY2hpdmUiLDYwMDU2KSxhcnJvd0JvdGg6YSgiYXJyb3ctYm90aCIsNjAwNTcpLGFycm93RG93bjphKCJhcnJvdy1kb3duIiw2MDA1OCksYXJyb3dMZWZ0OmEoImFycm93LWxlZnQiLDYwMDU5KSxhcnJvd1JpZ2h0OmEoImFycm93LXJpZ2h0Iiw2MDA2MCksYXJyb3dTbWFsbERvd246YSgiYXJyb3ctc21hbGwtZG93biIsNjAwNjEpLGFycm93U21hbGxMZWZ0OmEoImFycm93LXNtYWxsLWxlZnQiLDYwMDYyKSxhcnJvd1NtYWxsUmlnaHQ6YSgiYXJyb3ctc21hbGwtcmlnaHQiLDYwMDYzKSxhcnJvd1NtYWxsVXA6YSgiYXJyb3ctc21hbGwtdXAiLDYwMDY0KSxhcnJvd1VwOmEoImFycm93LXVwIiw2MDA2NSksYmVsbDphKCJiZWxsIiw2MDA2NiksYm9sZDphKCJib2xkIiw2MDA2NyksYm9vazphKCJib29rIiw2MDA2OCksYm9va21hcms6YSgiYm9va21hcmsiLDYwMDY5KSxkZWJ1Z0JyZWFrcG9pbnRDb25kaXRpb25hbFVudmVyaWZpZWQ6YSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC11bnZlcmlmaWVkIiw2MDA3MCksZGVidWdCcmVha3BvaW50Q29uZGl0aW9uYWw6YSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludENvbmRpdGlvbmFsRGlzYWJsZWQ6YSgiZGVidWctYnJlYWtwb2ludC1jb25kaXRpb25hbC1kaXNhYmxlZCIsNjAwNzEpLGRlYnVnQnJlYWtwb2ludERhdGFVbnZlcmlmaWVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZGF0YS11bnZlcmlmaWVkIiw2MDA3MiksZGVidWdCcmVha3BvaW50RGF0YTphKCJkZWJ1Zy1icmVha3BvaW50LWRhdGEiLDYwMDczKSxkZWJ1Z0JyZWFrcG9pbnREYXRhRGlzYWJsZWQ6YSgiZGVidWctYnJlYWtwb2ludC1kYXRhLWRpc2FibGVkIiw2MDA3MyksZGVidWdCcmVha3BvaW50TG9nVW52ZXJpZmllZDphKCJkZWJ1Zy1icmVha3BvaW50LWxvZy11bnZlcmlmaWVkIiw2MDA3NCksZGVidWdCcmVha3BvaW50TG9nOmEoImRlYnVnLWJyZWFrcG9pbnQtbG9nIiw2MDA3NSksZGVidWdCcmVha3BvaW50TG9nRGlzYWJsZWQ6YSgiZGVidWctYnJlYWtwb2ludC1sb2ctZGlzYWJsZWQiLDYwMDc1KSxicmllZmNhc2U6YSgiYnJpZWZjYXNlIiw2MDA3NiksYnJvYWRjYXN0OmEoImJyb2FkY2FzdCIsNjAwNzcpLGJyb3dzZXI6YSgiYnJvd3NlciIsNjAwNzgpLGJ1ZzphKCJidWciLDYwMDc5KSxjYWxlbmRhcjphKCJjYWxlbmRhciIsNjAwODApLGNhc2VTZW5zaXRpdmU6YSgiY2FzZS1zZW5zaXRpdmUiLDYwMDgxKSxjaGVjazphKCJjaGVjayIsNjAwODIpLGNoZWNrbGlzdDphKCJjaGVja2xpc3QiLDYwMDgzKSxjaGV2cm9uRG93bjphKCJjaGV2cm9uLWRvd24iLDYwMDg0KSxjaGV2cm9uTGVmdDphKCJjaGV2cm9uLWxlZnQiLDYwMDg1KSxjaGV2cm9uUmlnaHQ6YSgiY2hldnJvbi1yaWdodCIsNjAwODYpLGNoZXZyb25VcDphKCJjaGV2cm9uLXVwIiw2MDA4NyksY2hyb21lQ2xvc2U6YSgiY2hyb21lLWNsb3NlIiw2MDA4OCksY2hyb21lTWF4aW1pemU6YSgiY2hyb21lLW1heGltaXplIiw2MDA4OSksY2hyb21lTWluaW1pemU6YSgiY2hyb21lLW1pbmltaXplIiw2MDA5MCksY2hyb21lUmVzdG9yZTphKCJjaHJvbWUtcmVzdG9yZSIsNjAwOTEpLGNpcmNsZU91dGxpbmU6YSgiY2lyY2xlLW91dGxpbmUiLDYwMDkyKSxjaXJjbGU6YSgiY2lyY2xlIiw2MDA5MiksZGVidWdCcmVha3BvaW50VW52ZXJpZmllZDphKCJkZWJ1Zy1icmVha3BvaW50LXVudmVyaWZpZWQiLDYwMDkyKSx0ZXJtaW5hbERlY29yYXRpb25JbmNvbXBsZXRlOmEoInRlcm1pbmFsLWRlY29yYXRpb24taW5jb21wbGV0ZSIsNjAwOTIpLGNpcmNsZVNsYXNoOmEoImNpcmNsZS1zbGFzaCIsNjAwOTMpLGNpcmN1aXRCb2FyZDphKCJjaXJjdWl0LWJvYXJkIiw2MDA5NCksY2xlYXJBbGw6YSgiY2xlYXItYWxsIiw2MDA5NSksY2xpcHB5OmEoImNsaXBweSIsNjAwOTYpLGNsb3NlQWxsOmEoImNsb3NlLWFsbCIsNjAwOTcpLGNsb3VkRG93bmxvYWQ6YSgiY2xvdWQtZG93bmxvYWQiLDYwMDk4KSxjbG91ZFVwbG9hZDphKCJjbG91ZC11cGxvYWQiLDYwMDk5KSxjb2RlOmEoImNvZGUiLDYwMTAwKSxjb2xsYXBzZUFsbDphKCJjb2xsYXBzZS1hbGwiLDYwMTAxKSxjb2xvck1vZGU6YSgiY29sb3ItbW9kZSIsNjAxMDIpLGNvbW1lbnREaXNjdXNzaW9uOmEoImNvbW1lbnQtZGlzY3Vzc2lvbiIsNjAxMDMpLGNyZWRpdENhcmQ6YSgiY3JlZGl0LWNhcmQiLDYwMTA1KSxkYXNoOmEoImRhc2giLDYwMTA4KSxkYXNoYm9hcmQ6YSgiZGFzaGJvYXJkIiw2MDEwOSksZGF0YWJhc2U6YSgiZGF0YWJhc2UiLDYwMTEwKSxkZWJ1Z0NvbnRpbnVlOmEoImRlYnVnLWNvbnRpbnVlIiw2MDExMSksZGVidWdEaXNjb25uZWN0OmEoImRlYnVnLWRpc2Nvbm5lY3QiLDYwMTEyKSxkZWJ1Z1BhdXNlOmEoImRlYnVnLXBhdXNlIiw2MDExMyksZGVidWdSZXN0YXJ0OmEoImRlYnVnLXJlc3RhcnQiLDYwMTE0KSxkZWJ1Z1N0YXJ0OmEoImRlYnVnLXN0YXJ0Iiw2MDExNSksZGVidWdTdGVwSW50bzphKCJkZWJ1Zy1zdGVwLWludG8iLDYwMTE2KSxkZWJ1Z1N0ZXBPdXQ6YSgiZGVidWctc3RlcC1vdXQiLDYwMTE3KSxkZWJ1Z1N0ZXBPdmVyOmEoImRlYnVnLXN0ZXAtb3ZlciIsNjAxMTgpLGRlYnVnU3RvcDphKCJkZWJ1Zy1zdG9wIiw2MDExOSksZGVidWc6YSgiZGVidWciLDYwMTIwKSxkZXZpY2VDYW1lcmFWaWRlbzphKCJkZXZpY2UtY2FtZXJhLXZpZGVvIiw2MDEyMSksZGV2aWNlQ2FtZXJhOmEoImRldmljZS1jYW1lcmEiLDYwMTIyKSxkZXZpY2VNb2JpbGU6YSgiZGV2aWNlLW1vYmlsZSIsNjAxMjMpLGRpZmZBZGRlZDphKCJkaWZmLWFkZGVkIiw2MDEyNCksZGlmZklnbm9yZWQ6YSgiZGlmZi1pZ25vcmVkIiw2MDEyNSksZGlmZk1vZGlmaWVkOmEoImRpZmYtbW9kaWZpZWQiLDYwMTI2KSxkaWZmUmVtb3ZlZDphKCJkaWZmLXJlbW92ZWQiLDYwMTI3KSxkaWZmUmVuYW1lZDphKCJkaWZmLXJlbmFtZWQiLDYwMTI4KSxkaWZmOmEoImRpZmYiLDYwMTI5KSxkaWZmU2lkZWJ5c2lkZTphKCJkaWZmLXNpZGVieXNpZGUiLDYwMTI5KSxkaXNjYXJkOmEoImRpc2NhcmQiLDYwMTMwKSxlZGl0b3JMYXlvdXQ6YSgiZWRpdG9yLWxheW91dCIsNjAxMzEpLGVtcHR5V2luZG93OmEoImVtcHR5LXdpbmRvdyIsNjAxMzIpLGV4Y2x1ZGU6YSgiZXhjbHVkZSIsNjAxMzMpLGV4dGVuc2lvbnM6YSgiZXh0ZW5zaW9ucyIsNjAxMzQpLGV5ZUNsb3NlZDphKCJleWUtY2xvc2VkIiw2MDEzNSksZmlsZUJpbmFyeTphKCJmaWxlLWJpbmFyeSIsNjAxMzYpLGZpbGVDb2RlOmEoImZpbGUtY29kZSIsNjAxMzcpLGZpbGVNZWRpYTphKCJmaWxlLW1lZGlhIiw2MDEzOCksZmlsZVBkZjphKCJmaWxlLXBkZiIsNjAxMzkpLGZpbGVTdWJtb2R1bGU6YSgiZmlsZS1zdWJtb2R1bGUiLDYwMTQwKSxmaWxlU3ltbGlua0RpcmVjdG9yeTphKCJmaWxlLXN5bWxpbmstZGlyZWN0b3J5Iiw2MDE0MSksZmlsZVN5bWxpbmtGaWxlOmEoImZpbGUtc3ltbGluay1maWxlIiw2MDE0MiksZmlsZVppcDphKCJmaWxlLXppcCIsNjAxNDMpLGZpbGVzOmEoImZpbGVzIiw2MDE0NCksZmlsdGVyOmEoImZpbHRlciIsNjAxNDUpLGZsYW1lOmEoImZsYW1lIiw2MDE0NiksZm9sZERvd246YSgiZm9sZC1kb3duIiw2MDE0NyksZm9sZFVwOmEoImZvbGQtdXAiLDYwMTQ4KSxmb2xkOmEoImZvbGQiLDYwMTQ5KSxmb2xkZXJBY3RpdmU6YSgiZm9sZGVyLWFjdGl2ZSIsNjAxNTApLGZvbGRlck9wZW5lZDphKCJmb2xkZXItb3BlbmVkIiw2MDE1MSksZ2VhcjphKCJnZWFyIiw2MDE1MiksZ2lmdDphKCJnaWZ0Iiw2MDE1MyksZ2lzdFNlY3JldDphKCJnaXN0LXNlY3JldCIsNjAxNTQpLGdpc3Q6YSgiZ2lzdCIsNjAxNTUpLGdpdENvbW1pdDphKCJnaXQtY29tbWl0Iiw2MDE1NiksZ2l0Q29tcGFyZTphKCJnaXQtY29tcGFyZSIsNjAxNTcpLGNvbXBhcmVDaGFuZ2VzOmEoImNvbXBhcmUtY2hhbmdlcyIsNjAxNTcpLGdpdE1lcmdlOmEoImdpdC1tZXJnZSIsNjAxNTgpLGdpdGh1YkFjdGlvbjphKCJnaXRodWItYWN0aW9uIiw2MDE1OSksZ2l0aHViQWx0OmEoImdpdGh1Yi1hbHQiLDYwMTYwKSxnbG9iZTphKCJnbG9iZSIsNjAxNjEpLGdyYWJiZXI6YSgiZ3JhYmJlciIsNjAxNjIpLGdyYXBoOmEoImdyYXBoIiw2MDE2MyksZ3JpcHBlcjphKCJncmlwcGVyIiw2MDE2NCksaGVhcnQ6YSgiaGVhcnQiLDYwMTY1KSxob21lOmEoImhvbWUiLDYwMTY2KSxob3Jpem9udGFsUnVsZTphKCJob3Jpem9udGFsLXJ1bGUiLDYwMTY3KSxodWJvdDphKCJodWJvdCIsNjAxNjgpLGluYm94OmEoImluYm94Iiw2MDE2OSksaXNzdWVSZW9wZW5lZDphKCJpc3N1ZS1yZW9wZW5lZCIsNjAxNzEpLGlzc3VlczphKCJpc3N1ZXMiLDYwMTcyKSxpdGFsaWM6YSgiaXRhbGljIiw2MDE3MyksamVyc2V5OmEoImplcnNleSIsNjAxNzQpLGpzb246YSgianNvbiIsNjAxNzUpLGtlYmFiVmVydGljYWw6YSgia2ViYWItdmVydGljYWwiLDYwMTc2KSxrZXk6YSgia2V5Iiw2MDE3NyksbGF3OmEoImxhdyIsNjAxNzgpLGxpZ2h0YnVsYkF1dG9maXg6YSgibGlnaHRidWxiLWF1dG9maXgiLDYwMTc5KSxsaW5rRXh0ZXJuYWw6YSgibGluay1leHRlcm5hbCIsNjAxODApLGxpbms6YSgibGluayIsNjAxODEpLGxpc3RPcmRlcmVkOmEoImxpc3Qtb3JkZXJlZCIsNjAxODIpLGxpc3RVbm9yZGVyZWQ6YSgibGlzdC11bm9yZGVyZWQiLDYwMTgzKSxsaXZlU2hhcmU6YSgibGl2ZS1zaGFyZSIsNjAxODQpLGxvYWRpbmc6YSgibG9hZGluZyIsNjAxODUpLGxvY2F0aW9uOmEoImxvY2F0aW9uIiw2MDE4NiksbWFpbFJlYWQ6YSgibWFpbC1yZWFkIiw2MDE4NyksbWFpbDphKCJtYWlsIiw2MDE4OCksbWFya2Rvd246YSgibWFya2Rvd24iLDYwMTg5KSxtZWdhcGhvbmU6YSgibWVnYXBob25lIiw2MDE5MCksbWVudGlvbjphKCJtZW50aW9uIiw2MDE5MSksbWlsZXN0b25lOmEoIm1pbGVzdG9uZSIsNjAxOTIpLGdpdFB1bGxSZXF1ZXN0TWlsZXN0b25lOmEoImdpdC1wdWxsLXJlcXVlc3QtbWlsZXN0b25lIiw2MDE5MiksbW9ydGFyQm9hcmQ6YSgibW9ydGFyLWJvYXJkIiw2MDE5MyksbW92ZTphKCJtb3ZlIiw2MDE5NCksbXVsdGlwbGVXaW5kb3dzOmEoIm11bHRpcGxlLXdpbmRvd3MiLDYwMTk1KSxtdXRlOmEoIm11dGUiLDYwMTk2KSxub05ld2xpbmU6YSgibm8tbmV3bGluZSIsNjAxOTcpLG5vdGU6YSgibm90ZSIsNjAxOTgpLG9jdG9mYWNlOmEoIm9jdG9mYWNlIiw2MDE5OSksb3BlblByZXZpZXc6YSgib3Blbi1wcmV2aWV3Iiw2MDIwMCkscGFja2FnZTphKCJwYWNrYWdlIiw2MDIwMSkscGFpbnRjYW46YSgicGFpbnRjYW4iLDYwMjAyKSxwaW46YSgicGluIiw2MDIwMykscGxheTphKCJwbGF5Iiw2MDIwNCkscnVuOmEoInJ1biIsNjAyMDQpLHBsdWc6YSgicGx1ZyIsNjAyMDUpLHByZXNlcnZlQ2FzZTphKCJwcmVzZXJ2ZS1jYXNlIiw2MDIwNikscHJldmlldzphKCJwcmV2aWV3Iiw2MDIwNykscHJvamVjdDphKCJwcm9qZWN0Iiw2MDIwOCkscHVsc2U6YSgicHVsc2UiLDYwMjA5KSxxdWVzdGlvbjphKCJxdWVzdGlvbiIsNjAyMTApLHF1b3RlOmEoInF1b3RlIiw2MDIxMSkscmFkaW9Ub3dlcjphKCJyYWRpby10b3dlciIsNjAyMTIpLHJlYWN0aW9uczphKCJyZWFjdGlvbnMiLDYwMjEzKSxyZWZlcmVuY2VzOmEoInJlZmVyZW5jZXMiLDYwMjE0KSxyZWZyZXNoOmEoInJlZnJlc2giLDYwMjE1KSxyZWdleDphKCJyZWdleCIsNjAyMTYpLHJlbW90ZUV4cGxvcmVyOmEoInJlbW90ZS1leHBsb3JlciIsNjAyMTcpLHJlbW90ZTphKCJyZW1vdGUiLDYwMjE4KSxyZW1vdmU6YSgicmVtb3ZlIiw2MDIxOSkscmVwbGFjZUFsbDphKCJyZXBsYWNlLWFsbCIsNjAyMjApLHJlcGxhY2U6YSgicmVwbGFjZSIsNjAyMjEpLHJlcG9DbG9uZTphKCJyZXBvLWNsb25lIiw2MDIyMikscmVwb0ZvcmNlUHVzaDphKCJyZXBvLWZvcmNlLXB1c2giLDYwMjIzKSxyZXBvUHVsbDphKCJyZXBvLXB1bGwiLDYwMjI0KSxyZXBvUHVzaDphKCJyZXBvLXB1c2giLDYwMjI1KSxyZXBvcnQ6YSgicmVwb3J0Iiw2MDIyNikscmVxdWVzdENoYW5nZXM6YSgicmVxdWVzdC1jaGFuZ2VzIiw2MDIyNykscm9ja2V0OmEoInJvY2tldCIsNjAyMjgpLHJvb3RGb2xkZXJPcGVuZWQ6YSgicm9vdC1mb2xkZXItb3BlbmVkIiw2MDIyOSkscm9vdEZvbGRlcjphKCJyb290LWZvbGRlciIsNjAyMzApLHJzczphKCJyc3MiLDYwMjMxKSxydWJ5OmEoInJ1YnkiLDYwMjMyKSxzYXZlQWxsOmEoInNhdmUtYWxsIiw2MDIzMyksc2F2ZUFzOmEoInNhdmUtYXMiLDYwMjM0KSxzYXZlOmEoInNhdmUiLDYwMjM1KSxzY3JlZW5GdWxsOmEoInNjcmVlbi1mdWxsIiw2MDIzNiksc2NyZWVuTm9ybWFsOmEoInNjcmVlbi1ub3JtYWwiLDYwMjM3KSxzZWFyY2hTdG9wOmEoInNlYXJjaC1zdG9wIiw2MDIzOCksc2VydmVyOmEoInNlcnZlciIsNjAyNDApLHNldHRpbmdzR2VhcjphKCJzZXR0aW5ncy1nZWFyIiw2MDI0MSksc2V0dGluZ3M6YSgic2V0dGluZ3MiLDYwMjQyKSxzaGllbGQ6YSgic2hpZWxkIiw2MDI0Myksc21pbGV5OmEoInNtaWxleSIsNjAyNDQpLHNvcnRQcmVjZWRlbmNlOmEoInNvcnQtcHJlY2VkZW5jZSIsNjAyNDUpLHNwbGl0SG9yaXpvbnRhbDphKCJzcGxpdC1ob3Jpem9udGFsIiw2MDI0Niksc3BsaXRWZXJ0aWNhbDphKCJzcGxpdC12ZXJ0aWNhbCIsNjAyNDcpLHNxdWlycmVsOmEoInNxdWlycmVsIiw2MDI0OCksc3RhckZ1bGw6YSgic3Rhci1mdWxsIiw2MDI0OSksc3RhckhhbGY6YSgic3Rhci1oYWxmIiw2MDI1MCksc3ltYm9sQ2xhc3M6YSgic3ltYm9sLWNsYXNzIiw2MDI1MSksc3ltYm9sQ29sb3I6YSgic3ltYm9sLWNvbG9yIiw2MDI1Miksc3ltYm9sQ29uc3RhbnQ6YSgic3ltYm9sLWNvbnN0YW50Iiw2MDI1Myksc3ltYm9sRW51bU1lbWJlcjphKCJzeW1ib2wtZW51bS1tZW1iZXIiLDYwMjU0KSxzeW1ib2xGaWVsZDphKCJzeW1ib2wtZmllbGQiLDYwMjU1KSxzeW1ib2xGaWxlOmEoInN5bWJvbC1maWxlIiw2MDI1Niksc3ltYm9sSW50ZXJmYWNlOmEoInN5bWJvbC1pbnRlcmZhY2UiLDYwMjU3KSxzeW1ib2xLZXl3b3JkOmEoInN5bWJvbC1rZXl3b3JkIiw2MDI1OCksc3ltYm9sTWlzYzphKCJzeW1ib2wtbWlzYyIsNjAyNTkpLHN5bWJvbE9wZXJhdG9yOmEoInN5bWJvbC1vcGVyYXRvciIsNjAyNjApLHN5bWJvbFByb3BlcnR5OmEoInN5bWJvbC1wcm9wZXJ0eSIsNjAyNjEpLHdyZW5jaDphKCJ3cmVuY2giLDYwMjYxKSx3cmVuY2hTdWJhY3Rpb246YSgid3JlbmNoLXN1YmFjdGlvbiIsNjAyNjEpLHN5bWJvbFNuaXBwZXQ6YSgic3ltYm9sLXNuaXBwZXQiLDYwMjYyKSx0YXNrbGlzdDphKCJ0YXNrbGlzdCIsNjAyNjMpLHRlbGVzY29wZTphKCJ0ZWxlc2NvcGUiLDYwMjY0KSx0ZXh0U2l6ZTphKCJ0ZXh0LXNpemUiLDYwMjY1KSx0aHJlZUJhcnM6YSgidGhyZWUtYmFycyIsNjAyNjYpLHRodW1ic2Rvd246YSgidGh1bWJzZG93biIsNjAyNjcpLHRodW1ic3VwOmEoInRodW1ic3VwIiw2MDI2OCksdG9vbHM6YSgidG9vbHMiLDYwMjY5KSx0cmlhbmdsZURvd246YSgidHJpYW5nbGUtZG93biIsNjAyNzApLHRyaWFuZ2xlTGVmdDphKCJ0cmlhbmdsZS1sZWZ0Iiw2MDI3MSksdHJpYW5nbGVSaWdodDphKCJ0cmlhbmdsZS1yaWdodCIsNjAyNzIpLHRyaWFuZ2xlVXA6YSgidHJpYW5nbGUtdXAiLDYwMjczKSx0d2l0dGVyOmEoInR3aXR0ZXIiLDYwMjc0KSx1bmZvbGQ6YSgidW5mb2xkIiw2MDI3NSksdW5sb2NrOmEoInVubG9jayIsNjAyNzYpLHVubXV0ZTphKCJ1bm11dGUiLDYwMjc3KSx1bnZlcmlmaWVkOmEoInVudmVyaWZpZWQiLDYwMjc4KSx2ZXJpZmllZDphKCJ2ZXJpZmllZCIsNjAyNzkpLHZlcnNpb25zOmEoInZlcnNpb25zIiw2MDI4MCksdm1BY3RpdmU6YSgidm0tYWN0aXZlIiw2MDI4MSksdm1PdXRsaW5lOmEoInZtLW91dGxpbmUiLDYwMjgyKSx2bVJ1bm5pbmc6YSgidm0tcnVubmluZyIsNjAyODMpLHdhdGNoOmEoIndhdGNoIiw2MDI4NCksd2hpdGVzcGFjZTphKCJ3aGl0ZXNwYWNlIiw2MDI4NSksd2hvbGVXb3JkOmEoIndob2xlLXdvcmQiLDYwMjg2KSx3aW5kb3c6YSgid2luZG93Iiw2MDI4Nyksd29yZFdyYXA6YSgid29yZC13cmFwIiw2MDI4OCksem9vbUluOmEoInpvb20taW4iLDYwMjg5KSx6b29tT3V0OmEoInpvb20tb3V0Iiw2MDI5MCksbGlzdEZpbHRlcjphKCJsaXN0LWZpbHRlciIsNjAyOTEpLGxpc3RGbGF0OmEoImxpc3QtZmxhdCIsNjAyOTIpLGxpc3RTZWxlY3Rpb246YSgibGlzdC1zZWxlY3Rpb24iLDYwMjkzKSxzZWxlY3Rpb246YSgic2VsZWN0aW9uIiw2MDI5MyksbGlzdFRyZWU6YSgibGlzdC10cmVlIiw2MDI5NCksZGVidWdCcmVha3BvaW50RnVuY3Rpb25VbnZlcmlmaWVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tdW52ZXJpZmllZCIsNjAyOTUpLGRlYnVnQnJlYWtwb2ludEZ1bmN0aW9uOmEoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24iLDYwMjk2KSxkZWJ1Z0JyZWFrcG9pbnRGdW5jdGlvbkRpc2FibGVkOmEoImRlYnVnLWJyZWFrcG9pbnQtZnVuY3Rpb24tZGlzYWJsZWQiLDYwMjk2KSxkZWJ1Z1N0YWNrZnJhbWVBY3RpdmU6YSgiZGVidWctc3RhY2tmcmFtZS1hY3RpdmUiLDYwMjk3KSxjaXJjbGVTbWFsbEZpbGxlZDphKCJjaXJjbGUtc21hbGwtZmlsbGVkIiw2MDI5OCksZGVidWdTdGFja2ZyYW1lRG90OmEoImRlYnVnLXN0YWNrZnJhbWUtZG90Iiw2MDI5OCksdGVybWluYWxEZWNvcmF0aW9uTWFyazphKCJ0ZXJtaW5hbC1kZWNvcmF0aW9uLW1hcmsiLDYwMjk4KSxkZWJ1Z1N0YWNrZnJhbWU6YSgiZGVidWctc3RhY2tmcmFtZSIsNjAyOTkpLGRlYnVnU3RhY2tmcmFtZUZvY3VzZWQ6YSgiZGVidWctc3RhY2tmcmFtZS1mb2N1c2VkIiw2MDI5OSksZGVidWdCcmVha3BvaW50VW5zdXBwb3J0ZWQ6YSgiZGVidWctYnJlYWtwb2ludC11bnN1cHBvcnRlZCIsNjAzMDApLHN5bWJvbFN0cmluZzphKCJzeW1ib2wtc3RyaW5nIiw2MDMwMSksZGVidWdSZXZlcnNlQ29udGludWU6YSgiZGVidWctcmV2ZXJzZS1jb250aW51ZSIsNjAzMDIpLGRlYnVnU3RlcEJhY2s6YSgiZGVidWctc3RlcC1iYWNrIiw2MDMwMyksZGVidWdSZXN0YXJ0RnJhbWU6YSgiZGVidWctcmVzdGFydC1mcmFtZSIsNjAzMDQpLGRlYnVnQWx0OmEoImRlYnVnLWFsdCIsNjAzMDUpLGNhbGxJbmNvbWluZzphKCJjYWxsLWluY29taW5nIiw2MDMwNiksY2FsbE91dGdvaW5nOmEoImNhbGwtb3V0Z29pbmciLDYwMzA3KSxtZW51OmEoIm1lbnUiLDYwMzA4KSxleHBhbmRBbGw6YSgiZXhwYW5kLWFsbCIsNjAzMDkpLGZlZWRiYWNrOmEoImZlZWRiYWNrIiw2MDMxMCksZ2l0UHVsbFJlcXVlc3RSZXZpZXdlcjphKCJnaXQtcHVsbC1yZXF1ZXN0LXJldmlld2VyIiw2MDMxMCksZ3JvdXBCeVJlZlR5cGU6YSgiZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzExKSx1bmdyb3VwQnlSZWZUeXBlOmEoInVuZ3JvdXAtYnktcmVmLXR5cGUiLDYwMzEyKSxhY2NvdW50OmEoImFjY291bnQiLDYwMzEzKSxnaXRQdWxsUmVxdWVzdEFzc2lnbmVlOmEoImdpdC1wdWxsLXJlcXVlc3QtYXNzaWduZWUiLDYwMzEzKSxiZWxsRG90OmEoImJlbGwtZG90Iiw2MDMxNCksZGVidWdDb25zb2xlOmEoImRlYnVnLWNvbnNvbGUiLDYwMzE1KSxsaWJyYXJ5OmEoImxpYnJhcnkiLDYwMzE2KSxvdXRwdXQ6YSgib3V0cHV0Iiw2MDMxNykscnVuQWxsOmEoInJ1bi1hbGwiLDYwMzE4KSxzeW5jSWdub3JlZDphKCJzeW5jLWlnbm9yZWQiLDYwMzE5KSxwaW5uZWQ6YSgicGlubmVkIiw2MDMyMCksZ2l0aHViSW52ZXJ0ZWQ6YSgiZ2l0aHViLWludmVydGVkIiw2MDMyMSksc2VydmVyUHJvY2VzczphKCJzZXJ2ZXItcHJvY2VzcyIsNjAzMjIpLHNlcnZlckVudmlyb25tZW50OmEoInNlcnZlci1lbnZpcm9ubWVudCIsNjAzMjMpLHBhc3M6YSgicGFzcyIsNjAzMjQpLGlzc3VlQ2xvc2VkOmEoImlzc3VlLWNsb3NlZCIsNjAzMjQpLHN0b3BDaXJjbGU6YSgic3RvcC1jaXJjbGUiLDYwMzI1KSxwbGF5Q2lyY2xlOmEoInBsYXktY2lyY2xlIiw2MDMyNikscmVjb3JkOmEoInJlY29yZCIsNjAzMjcpLGRlYnVnQWx0U21hbGw6YSgiZGVidWctYWx0LXNtYWxsIiw2MDMyOCksdm1Db25uZWN0OmEoInZtLWNvbm5lY3QiLDYwMzI5KSxjbG91ZDphKCJjbG91ZCIsNjAzMzApLG1lcmdlOmEoIm1lcmdlIiw2MDMzMSksZXhwb3J0OmEoImV4cG9ydCIsNjAzMzIpLGdyYXBoTGVmdDphKCJncmFwaC1sZWZ0Iiw2MDMzMyksbWFnbmV0OmEoIm1hZ25ldCIsNjAzMzQpLG5vdGVib29rOmEoIm5vdGVib29rIiw2MDMzNSkscmVkbzphKCJyZWRvIiw2MDMzNiksY2hlY2tBbGw6YSgiY2hlY2stYWxsIiw2MDMzNykscGlubmVkRGlydHk6YSgicGlubmVkLWRpcnR5Iiw2MDMzOCkscGFzc0ZpbGxlZDphKCJwYXNzLWZpbGxlZCIsNjAzMzkpLGNpcmNsZUxhcmdlRmlsbGVkOmEoImNpcmNsZS1sYXJnZS1maWxsZWQiLDYwMzQwKSxjaXJjbGVMYXJnZTphKCJjaXJjbGUtbGFyZ2UiLDYwMzQxKSxjaXJjbGVMYXJnZU91dGxpbmU6YSgiY2lyY2xlLWxhcmdlLW91dGxpbmUiLDYwMzQxKSxjb21iaW5lOmEoImNvbWJpbmUiLDYwMzQyKSxnYXRoZXI6YSgiZ2F0aGVyIiw2MDM0MiksdGFibGU6YSgidGFibGUiLDYwMzQzKSx2YXJpYWJsZUdyb3VwOmEoInZhcmlhYmxlLWdyb3VwIiw2MDM0NCksdHlwZUhpZXJhcmNoeTphKCJ0eXBlLWhpZXJhcmNoeSIsNjAzNDUpLHR5cGVIaWVyYXJjaHlTdWI6YSgidHlwZS1oaWVyYXJjaHktc3ViIiw2MDM0NiksdHlwZUhpZXJhcmNoeVN1cGVyOmEoInR5cGUtaGllcmFyY2h5LXN1cGVyIiw2MDM0NyksZ2l0UHVsbFJlcXVlc3RDcmVhdGU6YSgiZ2l0LXB1bGwtcmVxdWVzdC1jcmVhdGUiLDYwMzQ4KSxydW5BYm92ZTphKCJydW4tYWJvdmUiLDYwMzQ5KSxydW5CZWxvdzphKCJydW4tYmVsb3ciLDYwMzUwKSxub3RlYm9va1RlbXBsYXRlOmEoIm5vdGVib29rLXRlbXBsYXRlIiw2MDM1MSksZGVidWdSZXJ1bjphKCJkZWJ1Zy1yZXJ1biIsNjAzNTIpLHdvcmtzcGFjZVRydXN0ZWQ6YSgid29ya3NwYWNlLXRydXN0ZWQiLDYwMzUzKSx3b3Jrc3BhY2VVbnRydXN0ZWQ6YSgid29ya3NwYWNlLXVudHJ1c3RlZCIsNjAzNTQpLHdvcmtzcGFjZVVua25vd246YSgid29ya3NwYWNlLXVua25vd24iLDYwMzU1KSx0ZXJtaW5hbENtZDphKCJ0ZXJtaW5hbC1jbWQiLDYwMzU2KSx0ZXJtaW5hbERlYmlhbjphKCJ0ZXJtaW5hbC1kZWJpYW4iLDYwMzU3KSx0ZXJtaW5hbExpbnV4OmEoInRlcm1pbmFsLWxpbnV4Iiw2MDM1OCksdGVybWluYWxQb3dlcnNoZWxsOmEoInRlcm1pbmFsLXBvd2Vyc2hlbGwiLDYwMzU5KSx0ZXJtaW5hbFRtdXg6YSgidGVybWluYWwtdG11eCIsNjAzNjApLHRlcm1pbmFsVWJ1bnR1OmEoInRlcm1pbmFsLXVidW50dSIsNjAzNjEpLHRlcm1pbmFsQmFzaDphKCJ0ZXJtaW5hbC1iYXNoIiw2MDM2MiksYXJyb3dTd2FwOmEoImFycm93LXN3YXAiLDYwMzYzKSxjb3B5OmEoImNvcHkiLDYwMzY0KSxwZXJzb25BZGQ6YSgicGVyc29uLWFkZCIsNjAzNjUpLGZpbHRlckZpbGxlZDphKCJmaWx0ZXItZmlsbGVkIiw2MDM2Niksd2FuZDphKCJ3YW5kIiw2MDM2NyksZGVidWdMaW5lQnlMaW5lOmEoImRlYnVnLWxpbmUtYnktbGluZSIsNjAzNjgpLGluc3BlY3Q6YSgiaW5zcGVjdCIsNjAzNjkpLGxheWVyczphKCJsYXllcnMiLDYwMzcwKSxsYXllcnNEb3Q6YSgibGF5ZXJzLWRvdCIsNjAzNzEpLGxheWVyc0FjdGl2ZTphKCJsYXllcnMtYWN0aXZlIiw2MDM3MiksY29tcGFzczphKCJjb21wYXNzIiw2MDM3MyksY29tcGFzc0RvdDphKCJjb21wYXNzLWRvdCIsNjAzNzQpLGNvbXBhc3NBY3RpdmU6YSgiY29tcGFzcy1hY3RpdmUiLDYwMzc1KSxhenVyZTphKCJhenVyZSIsNjAzNzYpLGlzc3VlRHJhZnQ6YSgiaXNzdWUtZHJhZnQiLDYwMzc3KSxnaXRQdWxsUmVxdWVzdENsb3NlZDphKCJnaXQtcHVsbC1yZXF1ZXN0LWNsb3NlZCIsNjAzNzgpLGdpdFB1bGxSZXF1ZXN0RHJhZnQ6YSgiZ2l0LXB1bGwtcmVxdWVzdC1kcmFmdCIsNjAzNzkpLGRlYnVnQWxsOmEoImRlYnVnLWFsbCIsNjAzODApLGRlYnVnQ292ZXJhZ2U6YSgiZGVidWctY292ZXJhZ2UiLDYwMzgxKSxydW5FcnJvcnM6YSgicnVuLWVycm9ycyIsNjAzODIpLGZvbGRlckxpYnJhcnk6YSgiZm9sZGVyLWxpYnJhcnkiLDYwMzgzKSxkZWJ1Z0NvbnRpbnVlU21hbGw6YSgiZGVidWctY29udGludWUtc21hbGwiLDYwMzg0KSxiZWFrZXJTdG9wOmEoImJlYWtlci1zdG9wIiw2MDM4NSksZ3JhcGhMaW5lOmEoImdyYXBoLWxpbmUiLDYwMzg2KSxncmFwaFNjYXR0ZXI6YSgiZ3JhcGgtc2NhdHRlciIsNjAzODcpLHBpZUNoYXJ0OmEoInBpZS1jaGFydCIsNjAzODgpLGJyYWNrZXQ6YSgiYnJhY2tldCIsNjAxNzUpLGJyYWNrZXREb3Q6YSgiYnJhY2tldC1kb3QiLDYwMzg5KSxicmFja2V0RXJyb3I6YSgiYnJhY2tldC1lcnJvciIsNjAzOTApLGxvY2tTbWFsbDphKCJsb2NrLXNtYWxsIiw2MDM5MSksYXp1cmVEZXZvcHM6YSgiYXp1cmUtZGV2b3BzIiw2MDM5MiksdmVyaWZpZWRGaWxsZWQ6YSgidmVyaWZpZWQtZmlsbGVkIiw2MDM5MyksbmV3bGluZTphKCJuZXdsaW5lIiw2MDM5NCksbGF5b3V0OmEoImxheW91dCIsNjAzOTUpLGxheW91dEFjdGl2aXR5YmFyTGVmdDphKCJsYXlvdXQtYWN0aXZpdHliYXItbGVmdCIsNjAzOTYpLGxheW91dEFjdGl2aXR5YmFyUmlnaHQ6YSgibGF5b3V0LWFjdGl2aXR5YmFyLXJpZ2h0Iiw2MDM5NyksbGF5b3V0UGFuZWxMZWZ0OmEoImxheW91dC1wYW5lbC1sZWZ0Iiw2MDM5OCksbGF5b3V0UGFuZWxDZW50ZXI6YSgibGF5b3V0LXBhbmVsLWNlbnRlciIsNjAzOTkpLGxheW91dFBhbmVsSnVzdGlmeTphKCJsYXlvdXQtcGFuZWwtanVzdGlmeSIsNjA0MDApLGxheW91dFBhbmVsUmlnaHQ6YSgibGF5b3V0LXBhbmVsLXJpZ2h0Iiw2MDQwMSksbGF5b3V0UGFuZWw6YSgibGF5b3V0LXBhbmVsIiw2MDQwMiksbGF5b3V0U2lkZWJhckxlZnQ6YSgibGF5b3V0LXNpZGViYXItbGVmdCIsNjA0MDMpLGxheW91dFNpZGViYXJSaWdodDphKCJsYXlvdXQtc2lkZWJhci1yaWdodCIsNjA0MDQpLGxheW91dFN0YXR1c2JhcjphKCJsYXlvdXQtc3RhdHVzYmFyIiw2MDQwNSksbGF5b3V0TWVudWJhcjphKCJsYXlvdXQtbWVudWJhciIsNjA0MDYpLGxheW91dENlbnRlcmVkOmEoImxheW91dC1jZW50ZXJlZCIsNjA0MDcpLHRhcmdldDphKCJ0YXJnZXQiLDYwNDA4KSxpbmRlbnQ6YSgiaW5kZW50Iiw2MDQwOSkscmVjb3JkU21hbGw6YSgicmVjb3JkLXNtYWxsIiw2MDQxMCksZXJyb3JTbWFsbDphKCJlcnJvci1zbWFsbCIsNjA0MTEpLHRlcm1pbmFsRGVjb3JhdGlvbkVycm9yOmEoInRlcm1pbmFsLWRlY29yYXRpb24tZXJyb3IiLDYwNDExKSxhcnJvd0NpcmNsZURvd246YSgiYXJyb3ctY2lyY2xlLWRvd24iLDYwNDEyKSxhcnJvd0NpcmNsZUxlZnQ6YSgiYXJyb3ctY2lyY2xlLWxlZnQiLDYwNDEzKSxhcnJvd0NpcmNsZVJpZ2h0OmEoImFycm93LWNpcmNsZS1yaWdodCIsNjA0MTQpLGFycm93Q2lyY2xlVXA6YSgiYXJyb3ctY2lyY2xlLXVwIiw2MDQxNSksbGF5b3V0U2lkZWJhclJpZ2h0T2ZmOmEoImxheW91dC1zaWRlYmFyLXJpZ2h0LW9mZiIsNjA0MTYpLGxheW91dFBhbmVsT2ZmOmEoImxheW91dC1wYW5lbC1vZmYiLDYwNDE3KSxsYXlvdXRTaWRlYmFyTGVmdE9mZjphKCJsYXlvdXQtc2lkZWJhci1sZWZ0LW9mZiIsNjA0MTgpLGJsYW5rOmEoImJsYW5rIiw2MDQxOSksaGVhcnRGaWxsZWQ6YSgiaGVhcnQtZmlsbGVkIiw2MDQyMCksbWFwOmEoIm1hcCIsNjA0MjEpLG1hcEhvcml6b250YWw6YSgibWFwLWhvcml6b250YWwiLDYwNDIxKSxmb2xkSG9yaXpvbnRhbDphKCJmb2xkLWhvcml6b250YWwiLDYwNDIxKSxtYXBGaWxsZWQ6YSgibWFwLWZpbGxlZCIsNjA0MjIpLG1hcEhvcml6b250YWxGaWxsZWQ6YSgibWFwLWhvcml6b250YWwtZmlsbGVkIiw2MDQyMiksZm9sZEhvcml6b250YWxGaWxsZWQ6YSgiZm9sZC1ob3Jpem9udGFsLWZpbGxlZCIsNjA0MjIpLGNpcmNsZVNtYWxsOmEoImNpcmNsZS1zbWFsbCIsNjA0MjMpLGJlbGxTbGFzaDphKCJiZWxsLXNsYXNoIiw2MDQyNCksYmVsbFNsYXNoRG90OmEoImJlbGwtc2xhc2gtZG90Iiw2MDQyNSksY29tbWVudFVucmVzb2x2ZWQ6YSgiY29tbWVudC11bnJlc29sdmVkIiw2MDQyNiksZ2l0UHVsbFJlcXVlc3RHb1RvQ2hhbmdlczphKCJnaXQtcHVsbC1yZXF1ZXN0LWdvLXRvLWNoYW5nZXMiLDYwNDI3KSxnaXRQdWxsUmVxdWVzdE5ld0NoYW5nZXM6YSgiZ2l0LXB1bGwtcmVxdWVzdC1uZXctY2hhbmdlcyIsNjA0MjgpLHNlYXJjaEZ1enp5OmEoInNlYXJjaC1mdXp6eSIsNjA0MjkpLGNvbW1lbnREcmFmdDphKCJjb21tZW50LWRyYWZ0Iiw2MDQzMCksc2VuZDphKCJzZW5kIiw2MDQzMSksc3BhcmtsZTphKCJzcGFya2xlIiw2MDQzMiksaW5zZXJ0OmEoImluc2VydCIsNjA0MzMpLG1pYzphKCJtaWMiLDYwNDM0KSx0aHVtYnNkb3duRmlsbGVkOmEoInRodW1ic2Rvd24tZmlsbGVkIiw2MDQzNSksdGh1bWJzdXBGaWxsZWQ6YSgidGh1bWJzdXAtZmlsbGVkIiw2MDQzNiksY29mZmVlOmEoImNvZmZlZSIsNjA0MzcpLHNuYWtlOmEoInNuYWtlIiw2MDQzOCksZ2FtZTphKCJnYW1lIiw2MDQzOSksdnI6YSgidnIiLDYwNDQwKSxjaGlwOmEoImNoaXAiLDYwNDQxKSxwaWFubzphKCJwaWFubyIsNjA0NDIpLG11c2ljOmEoIm11c2ljIiw2MDQ0MyksbWljRmlsbGVkOmEoIm1pYy1maWxsZWQiLDYwNDQ0KSxyZXBvRmV0Y2g6YSgicmVwby1mZXRjaCIsNjA0NDUpLGNvcGlsb3Q6YSgiY29waWxvdCIsNjA0NDYpLGxpZ2h0YnVsYlNwYXJrbGU6YSgibGlnaHRidWxiLXNwYXJrbGUiLDYwNDQ3KSxyb2JvdDphKCJyb2JvdCIsNjA0NDgpLHNwYXJrbGVGaWxsZWQ6YSgic3BhcmtsZS1maWxsZWQiLDYwNDQ5KSxkaWZmU2luZ2xlOmEoImRpZmYtc2luZ2xlIiw2MDQ1MCksZGlmZk11bHRpcGxlOmEoImRpZmYtbXVsdGlwbGUiLDYwNDUxKSxzdXJyb3VuZFdpdGg6YSgic3Vycm91bmQtd2l0aCIsNjA0NTIpLHNoYXJlOmEoInNoYXJlIiw2MDQ1MyksZ2l0U3Rhc2g6YSgiZ2l0LXN0YXNoIiw2MDQ1NCksZ2l0U3Rhc2hBcHBseTphKCJnaXQtc3Rhc2gtYXBwbHkiLDYwNDU1KSxnaXRTdGFzaFBvcDphKCJnaXQtc3Rhc2gtcG9wIiw2MDQ1NiksdnNjb2RlOmEoInZzY29kZSIsNjA0NTcpLHZzY29kZUluc2lkZXJzOmEoInZzY29kZS1pbnNpZGVycyIsNjA0NTgpLGNvZGVPc3M6YSgiY29kZS1vc3MiLDYwNDU5KSxydW5Db3ZlcmFnZTphKCJydW4tY292ZXJhZ2UiLDYwNDYwKSxydW5BbGxDb3ZlcmFnZTphKCJydW4tYWxsLWNvdmVyYWdlIiw2MDQ2MSksY292ZXJhZ2U6YSgiY292ZXJhZ2UiLDYwNDYyKSxnaXRodWJQcm9qZWN0OmEoImdpdGh1Yi1wcm9qZWN0Iiw2MDQ2MyksbWFwVmVydGljYWw6YSgibWFwLXZlcnRpY2FsIiw2MDQ2NCksZm9sZFZlcnRpY2FsOmEoImZvbGQtdmVydGljYWwiLDYwNDY0KSxtYXBWZXJ0aWNhbEZpbGxlZDphKCJtYXAtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSksZm9sZFZlcnRpY2FsRmlsbGVkOmEoImZvbGQtdmVydGljYWwtZmlsbGVkIiw2MDQ2NSl9LE5pPXtkaWFsb2dFcnJvcjphKCJkaWFsb2ctZXJyb3IiLCJlcnJvciIpLGRpYWxvZ1dhcm5pbmc6YSgiZGlhbG9nLXdhcm5pbmciLCJ3YXJuaW5nIiksZGlhbG9nSW5mbzphKCJkaWFsb2ctaW5mbyIsImluZm8iKSxkaWFsb2dDbG9zZTphKCJkaWFsb2ctY2xvc2UiLCJjbG9zZSIpLHRyZWVJdGVtRXhwYW5kZWQ6YSgidHJlZS1pdGVtLWV4cGFuZGVkIiwiY2hldnJvbi1kb3duIiksdHJlZUZpbHRlck9uVHlwZU9uOmEoInRyZWUtZmlsdGVyLW9uLXR5cGUtb24iLCJsaXN0LWZpbHRlciIpLHRyZWVGaWx0ZXJPblR5cGVPZmY6YSgidHJlZS1maWx0ZXItb24tdHlwZS1vZmYiLCJsaXN0LXNlbGVjdGlvbiIpLHRyZWVGaWx0ZXJDbGVhcjphKCJ0cmVlLWZpbHRlci1jbGVhciIsImNsb3NlIiksdHJlZUl0ZW1Mb2FkaW5nOmEoInRyZWUtaXRlbS1sb2FkaW5nIiwibG9hZGluZyIpLG1lbnVTZWxlY3Rpb246YSgibWVudS1zZWxlY3Rpb24iLCJjaGVjayIpLG1lbnVTdWJtZW51OmEoIm1lbnUtc3VibWVudSIsImNoZXZyb24tcmlnaHQiKSxtZW51QmFyTW9yZTphKCJtZW51YmFyLW1vcmUiLCJtb3JlIiksc2Nyb2xsYmFyQnV0dG9uTGVmdDphKCJzY3JvbGxiYXItYnV0dG9uLWxlZnQiLCJ0cmlhbmdsZS1sZWZ0Iiksc2Nyb2xsYmFyQnV0dG9uUmlnaHQ6YSgic2Nyb2xsYmFyLWJ1dHRvbi1yaWdodCIsInRyaWFuZ2xlLXJpZ2h0Iiksc2Nyb2xsYmFyQnV0dG9uVXA6YSgic2Nyb2xsYmFyLWJ1dHRvbi11cCIsInRyaWFuZ2xlLXVwIiksc2Nyb2xsYmFyQnV0dG9uRG93bjphKCJzY3JvbGxiYXItYnV0dG9uLWRvd24iLCJ0cmlhbmdsZS1kb3duIiksdG9vbEJhck1vcmU6YSgidG9vbGJhci1tb3JlIiwibW9yZSIpLHF1aWNrSW5wdXRCYWNrOmEoInF1aWNrLWlucHV0LWJhY2siLCJhcnJvdy1sZWZ0IiksZHJvcERvd25CdXR0b246YSgiZHJvcC1kb3duLWJ1dHRvbiIsNjAwODQpLHN5bWJvbEN1c3RvbUNvbG9yOmEoInN5bWJvbC1jdXN0b21jb2xvciIsNjAyNTIpLGV4cG9ydEljb246YSgiZXhwb3J0Iiw2MDMzMiksd29ya3NwYWNlVW5zcGVjaWZpZWQ6YSgid29ya3NwYWNlLXVuc3BlY2lmaWVkIiw2MDM1NSksbmV3TGluZTphKCJuZXdsaW5lIiw2MDM5NCksdGh1bWJzRG93bkZpbGxlZDphKCJ0aHVtYnNkb3duLWZpbGxlZCIsNjA0MzUpLHRodW1ic1VwRmlsbGVkOmEoInRodW1ic3VwLWZpbGxlZCIsNjA0MzYpLGdpdEZldGNoOmEoImdpdC1mZXRjaCIsNjA0NDUpLGxpZ2h0YnVsYlNwYXJrbGVBdXRvZml4OmEoImxpZ2h0YnVsYi1zcGFya2xlLWF1dG9maXgiLDYwNDQ3KSxkZWJ1Z0JyZWFrcG9pbnRQZW5kaW5nOmEoImRlYnVnLWJyZWFrcG9pbnQtcGVuZGluZyIsNjAzNzcpfSxNPXsuLi5MaSwuLi5OaX07Y2xhc3MgU2l7Y29uc3RydWN0b3IoKXt0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cz1uZXcgTWFwLHRoaXMuX2ZhY3Rvcmllcz1uZXcgTWFwLHRoaXMuX29uRGlkQ2hhbmdlPW5ldyBzZSx0aGlzLm9uRGlkQ2hhbmdlPXRoaXMuX29uRGlkQ2hhbmdlLmV2ZW50LHRoaXMuX2NvbG9yTWFwPW51bGx9aGFuZGxlQ2hhbmdlKHQpe3RoaXMuX29uRGlkQ2hhbmdlLmZpcmUoe2NoYW5nZWRMYW5ndWFnZXM6dCxjaGFuZ2VkQ29sb3JNYXA6ITF9KX1yZWdpc3Rlcih0LG4pe3JldHVybiB0aGlzLl90b2tlbml6YXRpb25TdXBwb3J0cy5zZXQodCxuKSx0aGlzLmhhbmRsZUNoYW5nZShbdF0pLEtlKCgpPT57dGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KHQpPT09biYmKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmRlbGV0ZSh0KSx0aGlzLmhhbmRsZUNoYW5nZShbdF0pKX0pfWdldCh0KXtyZXR1cm4gdGhpcy5fdG9rZW5pemF0aW9uU3VwcG9ydHMuZ2V0KHQpfHxudWxsfXJlZ2lzdGVyRmFjdG9yeSh0LG4pe3ZhciByOyhyPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCkpPT09bnVsbHx8cj09PXZvaWQgMHx8ci5kaXNwb3NlKCk7Y29uc3Qgcz1uZXcgQ2kodGhpcyx0LG4pO3JldHVybiB0aGlzLl9mYWN0b3JpZXMuc2V0KHQscyksS2UoKCk9Pntjb25zdCBpPXRoaXMuX2ZhY3Rvcmllcy5nZXQodCk7IWl8fGkhPT1zfHwodGhpcy5fZmFjdG9yaWVzLmRlbGV0ZSh0KSxpLmRpc3Bvc2UoKSl9KX1hc3luYyBnZXRPckNyZWF0ZSh0KXtjb25zdCBuPXRoaXMuZ2V0KHQpO2lmKG4pcmV0dXJuIG47Y29uc3Qgcj10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO3JldHVybiFyfHxyLmlzUmVzb2x2ZWQ/bnVsbDooYXdhaXQgci5yZXNvbHZlKCksdGhpcy5nZXQodCkpfWlzUmVzb2x2ZWQodCl7aWYodGhpcy5nZXQodCkpcmV0dXJuITA7Y29uc3Qgcj10aGlzLl9mYWN0b3JpZXMuZ2V0KHQpO3JldHVybiEhKCFyfHxyLmlzUmVzb2x2ZWQpfXNldENvbG9yTWFwKHQpe3RoaXMuX2NvbG9yTWFwPXQsdGhpcy5fb25EaWRDaGFuZ2UuZmlyZSh7Y2hhbmdlZExhbmd1YWdlczpBcnJheS5mcm9tKHRoaXMuX3Rva2VuaXphdGlvblN1cHBvcnRzLmtleXMoKSksY2hhbmdlZENvbG9yTWFwOiEwfSl9Z2V0Q29sb3JNYXAoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXB9Z2V0RGVmYXVsdEJhY2tncm91bmQoKXtyZXR1cm4gdGhpcy5fY29sb3JNYXAmJnRoaXMuX2NvbG9yTWFwLmxlbmd0aD4yP3RoaXMuX2NvbG9yTWFwWzJdOm51bGx9fWNsYXNzIENpIGV4dGVuZHMgV2V7Z2V0IGlzUmVzb2x2ZWQoKXtyZXR1cm4gdGhpcy5faXNSZXNvbHZlZH1jb25zdHJ1Y3Rvcih0LG4scil7c3VwZXIoKSx0aGlzLl9yZWdpc3RyeT10LHRoaXMuX2xhbmd1YWdlSWQ9bix0aGlzLl9mYWN0b3J5PXIsdGhpcy5faXNEaXNwb3NlZD0hMSx0aGlzLl9yZXNvbHZlUHJvbWlzZT1udWxsLHRoaXMuX2lzUmVzb2x2ZWQ9ITF9ZGlzcG9zZSgpe3RoaXMuX2lzRGlzcG9zZWQ9ITAsc3VwZXIuZGlzcG9zZSgpfWFzeW5jIHJlc29sdmUoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVByb21pc2V8fCh0aGlzLl9yZXNvbHZlUHJvbWlzZT10aGlzLl9jcmVhdGUoKSksdGhpcy5fcmVzb2x2ZVByb21pc2V9YXN5bmMgX2NyZWF0ZSgpe2NvbnN0IHQ9YXdhaXQgdGhpcy5fZmFjdG9yeS50b2tlbml6YXRpb25TdXBwb3J0O3RoaXMuX2lzUmVzb2x2ZWQ9ITAsdCYmIXRoaXMuX2lzRGlzcG9zZWQmJnRoaXMuX3JlZ2lzdGVyKHRoaXMuX3JlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMuX2xhbmd1YWdlSWQsdCkpfX1jbGFzcyBBaXtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5vZmZzZXQ9dCx0aGlzLnR5cGU9bix0aGlzLmxhbmd1YWdlPXIsdGhpcy5fdG9rZW5CcmFuZD12b2lkIDB9dG9TdHJpbmcoKXtyZXR1cm4iKCIrdGhpcy5vZmZzZXQrIiwgIit0aGlzLnR5cGUrIikifX12YXIgQW47KGZ1bmN0aW9uKGUpe2NvbnN0IHQ9bmV3IE1hcDt0LnNldCgwLE0uc3ltYm9sTWV0aG9kKSx0LnNldCgxLE0uc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDIsTS5zeW1ib2xDb25zdHJ1Y3RvciksdC5zZXQoMyxNLnN5bWJvbEZpZWxkKSx0LnNldCg0LE0uc3ltYm9sVmFyaWFibGUpLHQuc2V0KDUsTS5zeW1ib2xDbGFzcyksdC5zZXQoNixNLnN5bWJvbFN0cnVjdCksdC5zZXQoNyxNLnN5bWJvbEludGVyZmFjZSksdC5zZXQoOCxNLnN5bWJvbE1vZHVsZSksdC5zZXQoOSxNLnN5bWJvbFByb3BlcnR5KSx0LnNldCgxMCxNLnN5bWJvbEV2ZW50KSx0LnNldCgxMSxNLnN5bWJvbE9wZXJhdG9yKSx0LnNldCgxMixNLnN5bWJvbFVuaXQpLHQuc2V0KDEzLE0uc3ltYm9sVmFsdWUpLHQuc2V0KDE1LE0uc3ltYm9sRW51bSksdC5zZXQoMTQsTS5zeW1ib2xDb25zdGFudCksdC5zZXQoMTUsTS5zeW1ib2xFbnVtKSx0LnNldCgxNixNLnN5bWJvbEVudW1NZW1iZXIpLHQuc2V0KDE3LE0uc3ltYm9sS2V5d29yZCksdC5zZXQoMjcsTS5zeW1ib2xTbmlwcGV0KSx0LnNldCgxOCxNLnN5bWJvbFRleHQpLHQuc2V0KDE5LE0uc3ltYm9sQ29sb3IpLHQuc2V0KDIwLE0uc3ltYm9sRmlsZSksdC5zZXQoMjEsTS5zeW1ib2xSZWZlcmVuY2UpLHQuc2V0KDIyLE0uc3ltYm9sQ3VzdG9tQ29sb3IpLHQuc2V0KDIzLE0uc3ltYm9sRm9sZGVyKSx0LnNldCgyNCxNLnN5bWJvbFR5cGVQYXJhbWV0ZXIpLHQuc2V0KDI1LE0uYWNjb3VudCksdC5zZXQoMjYsTS5pc3N1ZXMpO2Z1bmN0aW9uIG4oaSl7bGV0IGw9dC5nZXQoaSk7cmV0dXJuIGx8fChjb25zb2xlLmluZm8oIk5vIGNvZGljb24gZm91bmQgZm9yIENvbXBsZXRpb25JdGVtS2luZCAiK2kpLGw9TS5zeW1ib2xQcm9wZXJ0eSksbH1lLnRvSWNvbj1uO2NvbnN0IHI9bmV3IE1hcDtyLnNldCgibWV0aG9kIiwwKSxyLnNldCgiZnVuY3Rpb24iLDEpLHIuc2V0KCJjb25zdHJ1Y3RvciIsMiksci5zZXQoImZpZWxkIiwzKSxyLnNldCgidmFyaWFibGUiLDQpLHIuc2V0KCJjbGFzcyIsNSksci5zZXQoInN0cnVjdCIsNiksci5zZXQoImludGVyZmFjZSIsNyksci5zZXQoIm1vZHVsZSIsOCksci5zZXQoInByb3BlcnR5Iiw5KSxyLnNldCgiZXZlbnQiLDEwKSxyLnNldCgib3BlcmF0b3IiLDExKSxyLnNldCgidW5pdCIsMTIpLHIuc2V0KCJ2YWx1ZSIsMTMpLHIuc2V0KCJjb25zdGFudCIsMTQpLHIuc2V0KCJlbnVtIiwxNSksci5zZXQoImVudW0tbWVtYmVyIiwxNiksci5zZXQoImVudW1NZW1iZXIiLDE2KSxyLnNldCgia2V5d29yZCIsMTcpLHIuc2V0KCJzbmlwcGV0IiwyNyksci5zZXQoInRleHQiLDE4KSxyLnNldCgiY29sb3IiLDE5KSxyLnNldCgiZmlsZSIsMjApLHIuc2V0KCJyZWZlcmVuY2UiLDIxKSxyLnNldCgiY3VzdG9tY29sb3IiLDIyKSxyLnNldCgiZm9sZGVyIiwyMyksci5zZXQoInR5cGUtcGFyYW1ldGVyIiwyNCksci5zZXQoInR5cGVQYXJhbWV0ZXIiLDI0KSxyLnNldCgiYWNjb3VudCIsMjUpLHIuc2V0KCJpc3N1ZSIsMjYpO2Z1bmN0aW9uIHMoaSxsKXtsZXQgbz1yLmdldChpKTtyZXR1cm4gdHlwZW9mIG8+InUiJiYhbCYmKG89OSksb31lLmZyb21TdHJpbmc9c30pKEFufHwoQW49e30pKTt2YXIgUm47KGZ1bmN0aW9uKGUpe2VbZS5BdXRvbWF0aWM9MF09IkF1dG9tYXRpYyIsZVtlLkV4cGxpY2l0PTFdPSJFeHBsaWNpdCJ9KShSbnx8KFJuPXt9KSk7dmFyIHluOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5QYXN0ZUFzPTFdPSJQYXN0ZUFzIn0pKHlufHwoeW49e30pKTt2YXIgRW47KGZ1bmN0aW9uKGUpe2VbZS5JbnZva2U9MV09Ikludm9rZSIsZVtlLlRyaWdnZXJDaGFyYWN0ZXI9Ml09IlRyaWdnZXJDaGFyYWN0ZXIiLGVbZS5Db250ZW50Q2hhbmdlPTNdPSJDb250ZW50Q2hhbmdlIn0pKEVufHwoRW49e30pKTt2YXIgTW47KGZ1bmN0aW9uKGUpe2VbZS5UZXh0PTBdPSJUZXh0IixlW2UuUmVhZD0xXT0iUmVhZCIsZVtlLldyaXRlPTJdPSJXcml0ZSJ9KShNbnx8KE1uPXt9KSksSCgiQXJyYXkiLCJhcnJheSIpLEgoIkJvb2xlYW4iLCJib29sZWFuIiksSCgiQ2xhc3MiLCJjbGFzcyIpLEgoIkNvbnN0YW50IiwiY29uc3RhbnQiKSxIKCJDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiksSCgiRW51bSIsImVudW1lcmF0aW9uIiksSCgiRW51bU1lbWJlciIsImVudW1lcmF0aW9uIG1lbWJlciIpLEgoIkV2ZW50IiwiZXZlbnQiKSxIKCJGaWVsZCIsImZpZWxkIiksSCgiRmlsZSIsImZpbGUiKSxIKCJGdW5jdGlvbiIsImZ1bmN0aW9uIiksSCgiSW50ZXJmYWNlIiwiaW50ZXJmYWNlIiksSCgiS2V5Iiwia2V5IiksSCgiTWV0aG9kIiwibWV0aG9kIiksSCgiTW9kdWxlIiwibW9kdWxlIiksSCgiTmFtZXNwYWNlIiwibmFtZXNwYWNlIiksSCgiTnVsbCIsIm51bGwiKSxIKCJOdW1iZXIiLCJudW1iZXIiKSxIKCJPYmplY3QiLCJvYmplY3QiKSxIKCJPcGVyYXRvciIsIm9wZXJhdG9yIiksSCgiUGFja2FnZSIsInBhY2thZ2UiKSxIKCJQcm9wZXJ0eSIsInByb3BlcnR5IiksSCgiU3RyaW5nIiwic3RyaW5nIiksSCgiU3RydWN0Iiwic3RydWN0IiksSCgiVHlwZVBhcmFtZXRlciIsInR5cGUgcGFyYW1ldGVyIiksSCgiVmFyaWFibGUiLCJ2YXJpYWJsZSIpO3ZhciBrbjsoZnVuY3Rpb24oZSl7Y29uc3QgdD1uZXcgTWFwO3Quc2V0KDAsTS5zeW1ib2xGaWxlKSx0LnNldCgxLE0uc3ltYm9sTW9kdWxlKSx0LnNldCgyLE0uc3ltYm9sTmFtZXNwYWNlKSx0LnNldCgzLE0uc3ltYm9sUGFja2FnZSksdC5zZXQoNCxNLnN5bWJvbENsYXNzKSx0LnNldCg1LE0uc3ltYm9sTWV0aG9kKSx0LnNldCg2LE0uc3ltYm9sUHJvcGVydHkpLHQuc2V0KDcsTS5zeW1ib2xGaWVsZCksdC5zZXQoOCxNLnN5bWJvbENvbnN0cnVjdG9yKSx0LnNldCg5LE0uc3ltYm9sRW51bSksdC5zZXQoMTAsTS5zeW1ib2xJbnRlcmZhY2UpLHQuc2V0KDExLE0uc3ltYm9sRnVuY3Rpb24pLHQuc2V0KDEyLE0uc3ltYm9sVmFyaWFibGUpLHQuc2V0KDEzLE0uc3ltYm9sQ29uc3RhbnQpLHQuc2V0KDE0LE0uc3ltYm9sU3RyaW5nKSx0LnNldCgxNSxNLnN5bWJvbE51bWJlciksdC5zZXQoMTYsTS5zeW1ib2xCb29sZWFuKSx0LnNldCgxNyxNLnN5bWJvbEFycmF5KSx0LnNldCgxOCxNLnN5bWJvbE9iamVjdCksdC5zZXQoMTksTS5zeW1ib2xLZXkpLHQuc2V0KDIwLE0uc3ltYm9sTnVsbCksdC5zZXQoMjEsTS5zeW1ib2xFbnVtTWVtYmVyKSx0LnNldCgyMixNLnN5bWJvbFN0cnVjdCksdC5zZXQoMjMsTS5zeW1ib2xFdmVudCksdC5zZXQoMjQsTS5zeW1ib2xPcGVyYXRvciksdC5zZXQoMjUsTS5zeW1ib2xUeXBlUGFyYW1ldGVyKTtmdW5jdGlvbiBuKHIpe2xldCBzPXQuZ2V0KHIpO3JldHVybiBzfHwoY29uc29sZS5pbmZvKCJObyBjb2RpY29uIGZvdW5kIGZvciBTeW1ib2xLaW5kICIrcikscz1NLnN5bWJvbFByb3BlcnR5KSxzfWUudG9JY29uPW59KShrbnx8KGtuPXt9KSk7dmFyIEZuOyhmdW5jdGlvbihlKXtlW2UuQUlHZW5lcmF0ZWQ9MV09IkFJR2VuZXJhdGVkIn0pKEZufHwoRm49e30pKTt2YXIgUG47KGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIW58fHR5cGVvZiBuIT0ib2JqZWN0Ij8hMTp0eXBlb2Ygbi5pZD09InN0cmluZyImJnR5cGVvZiBuLnRpdGxlPT0ic3RyaW5nIn1lLmlzPXR9KShQbnx8KFBuPXt9KSk7dmFyIERuOyhmdW5jdGlvbihlKXtlW2UuVHlwZT0xXT0iVHlwZSIsZVtlLlBhcmFtZXRlcj0yXT0iUGFyYW1ldGVyIn0pKERufHwoRG49e30pKSxuZXcgU2k7dmFyIFRuOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTBdPSJJbnZva2UiLGVbZS5BdXRvbWF0aWM9MV09IkF1dG9tYXRpYyJ9KShUbnx8KFRuPXt9KSk7dmFyIFZuOyhmdW5jdGlvbihlKXtlW2UuVW5rbm93bj0wXT0iVW5rbm93biIsZVtlLkRpc2FibGVkPTFdPSJEaXNhYmxlZCIsZVtlLkVuYWJsZWQ9Ml09IkVuYWJsZWQifSkoVm58fChWbj17fSkpO3ZhciBCbjsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0xXT0iSW52b2tlIixlW2UuQXV0bz0yXT0iQXV0byJ9KShCbnx8KEJuPXt9KSk7dmFyIHFuOyhmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLktlZXBXaGl0ZXNwYWNlPTFdPSJLZWVwV2hpdGVzcGFjZSIsZVtlLkluc2VydEFzU25pcHBldD00XT0iSW5zZXJ0QXNTbmlwcGV0In0pKHFufHwocW49e30pKTt2YXIgSW47KGZ1bmN0aW9uKGUpe2VbZS5NZXRob2Q9MF09Ik1ldGhvZCIsZVtlLkZ1bmN0aW9uPTFdPSJGdW5jdGlvbiIsZVtlLkNvbnN0cnVjdG9yPTJdPSJDb25zdHJ1Y3RvciIsZVtlLkZpZWxkPTNdPSJGaWVsZCIsZVtlLlZhcmlhYmxlPTRdPSJWYXJpYWJsZSIsZVtlLkNsYXNzPTVdPSJDbGFzcyIsZVtlLlN0cnVjdD02XT0iU3RydWN0IixlW2UuSW50ZXJmYWNlPTddPSJJbnRlcmZhY2UiLGVbZS5Nb2R1bGU9OF09Ik1vZHVsZSIsZVtlLlByb3BlcnR5PTldPSJQcm9wZXJ0eSIsZVtlLkV2ZW50PTEwXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0xMV09Ik9wZXJhdG9yIixlW2UuVW5pdD0xMl09IlVuaXQiLGVbZS5WYWx1ZT0xM109IlZhbHVlIixlW2UuQ29uc3RhbnQ9MTRdPSJDb25zdGFudCIsZVtlLkVudW09MTVdPSJFbnVtIixlW2UuRW51bU1lbWJlcj0xNl09IkVudW1NZW1iZXIiLGVbZS5LZXl3b3JkPTE3XT0iS2V5d29yZCIsZVtlLlRleHQ9MThdPSJUZXh0IixlW2UuQ29sb3I9MTldPSJDb2xvciIsZVtlLkZpbGU9MjBdPSJGaWxlIixlW2UuUmVmZXJlbmNlPTIxXT0iUmVmZXJlbmNlIixlW2UuQ3VzdG9tY29sb3I9MjJdPSJDdXN0b21jb2xvciIsZVtlLkZvbGRlcj0yM109IkZvbGRlciIsZVtlLlR5cGVQYXJhbWV0ZXI9MjRdPSJUeXBlUGFyYW1ldGVyIixlW2UuVXNlcj0yNV09IlVzZXIiLGVbZS5Jc3N1ZT0yNl09Iklzc3VlIixlW2UuU25pcHBldD0yN109IlNuaXBwZXQifSkoSW58fChJbj17fSkpO3ZhciBVbjsoZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSkoVW58fChVbj17fSkpO3ZhciBIbjsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuVHJpZ2dlckNoYXJhY3Rlcj0xXT0iVHJpZ2dlckNoYXJhY3RlciIsZVtlLlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnM9Ml09IlRyaWdnZXJGb3JJbmNvbXBsZXRlQ29tcGxldGlvbnMifSkoSG58fChIbj17fSkpO3ZhciBXbjsoZnVuY3Rpb24oZSl7ZVtlLkVYQUNUPTBdPSJFWEFDVCIsZVtlLkFCT1ZFPTFdPSJBQk9WRSIsZVtlLkJFTE9XPTJdPSJCRUxPVyJ9KShXbnx8KFduPXt9KSk7dmFyIHpuOyhmdW5jdGlvbihlKXtlW2UuTm90U2V0PTBdPSJOb3RTZXQiLGVbZS5Db250ZW50Rmx1c2g9MV09IkNvbnRlbnRGbHVzaCIsZVtlLlJlY292ZXJGcm9tTWFya2Vycz0yXT0iUmVjb3ZlckZyb21NYXJrZXJzIixlW2UuRXhwbGljaXQ9M109IkV4cGxpY2l0IixlW2UuUGFzdGU9NF09IlBhc3RlIixlW2UuVW5kbz01XT0iVW5kbyIsZVtlLlJlZG89Nl09IlJlZG8ifSkoem58fCh6bj17fSkpO3ZhciAkbjsoZnVuY3Rpb24oZSl7ZVtlLkxGPTFdPSJMRiIsZVtlLkNSTEY9Ml09IkNSTEYifSkoJG58fCgkbj17fSkpO3ZhciBPbjsoZnVuY3Rpb24oZSl7ZVtlLlRleHQ9MF09IlRleHQiLGVbZS5SZWFkPTFdPSJSZWFkIixlW2UuV3JpdGU9Ml09IldyaXRlIn0pKE9ufHwoT249e30pKTt2YXIgR247KGZ1bmN0aW9uKGUpe2VbZS5Ob25lPTBdPSJOb25lIixlW2UuS2VlcD0xXT0iS2VlcCIsZVtlLkJyYWNrZXRzPTJdPSJCcmFja2V0cyIsZVtlLkFkdmFuY2VkPTNdPSJBZHZhbmNlZCIsZVtlLkZ1bGw9NF09IkZ1bGwifSkoR258fChHbj17fSkpO3ZhciBqbjsoZnVuY3Rpb24oZSl7ZVtlLmFjY2VwdFN1Z2dlc3Rpb25PbkNvbW1pdENoYXJhY3Rlcj0wXT0iYWNjZXB0U3VnZ2VzdGlvbk9uQ29tbWl0Q2hhcmFjdGVyIixlW2UuYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXI9MV09ImFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyIixlW2UuYWNjZXNzaWJpbGl0eVN1cHBvcnQ9Ml09ImFjY2Vzc2liaWxpdHlTdXBwb3J0IixlW2UuYWNjZXNzaWJpbGl0eVBhZ2VTaXplPTNdPSJhY2Nlc3NpYmlsaXR5UGFnZVNpemUiLGVbZS5hcmlhTGFiZWw9NF09ImFyaWFMYWJlbCIsZVtlLmFyaWFSZXF1aXJlZD01XT0iYXJpYVJlcXVpcmVkIixlW2UuYXV0b0Nsb3NpbmdCcmFja2V0cz02XT0iYXV0b0Nsb3NpbmdCcmFja2V0cyIsZVtlLmF1dG9DbG9zaW5nQ29tbWVudHM9N109ImF1dG9DbG9zaW5nQ29tbWVudHMiLGVbZS5zY3JlZW5SZWFkZXJBbm5vdW5jZUlubGluZVN1Z2dlc3Rpb249OF09InNjcmVlblJlYWRlckFubm91bmNlSW5saW5lU3VnZ2VzdGlvbiIsZVtlLmF1dG9DbG9zaW5nRGVsZXRlPTldPSJhdXRvQ2xvc2luZ0RlbGV0ZSIsZVtlLmF1dG9DbG9zaW5nT3ZlcnR5cGU9MTBdPSJhdXRvQ2xvc2luZ092ZXJ0eXBlIixlW2UuYXV0b0Nsb3NpbmdRdW90ZXM9MTFdPSJhdXRvQ2xvc2luZ1F1b3RlcyIsZVtlLmF1dG9JbmRlbnQ9MTJdPSJhdXRvSW5kZW50IixlW2UuYXV0b21hdGljTGF5b3V0PTEzXT0iYXV0b21hdGljTGF5b3V0IixlW2UuYXV0b1N1cnJvdW5kPTE0XT0iYXV0b1N1cnJvdW5kIixlW2UuYnJhY2tldFBhaXJDb2xvcml6YXRpb249MTVdPSJicmFja2V0UGFpckNvbG9yaXphdGlvbiIsZVtlLmd1aWRlcz0xNl09Imd1aWRlcyIsZVtlLmNvZGVMZW5zPTE3XT0iY29kZUxlbnMiLGVbZS5jb2RlTGVuc0ZvbnRGYW1pbHk9MThdPSJjb2RlTGVuc0ZvbnRGYW1pbHkiLGVbZS5jb2RlTGVuc0ZvbnRTaXplPTE5XT0iY29kZUxlbnNGb250U2l6ZSIsZVtlLmNvbG9yRGVjb3JhdG9ycz0yMF09ImNvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbG9yRGVjb3JhdG9yc0xpbWl0PTIxXT0iY29sb3JEZWNvcmF0b3JzTGltaXQiLGVbZS5jb2x1bW5TZWxlY3Rpb249MjJdPSJjb2x1bW5TZWxlY3Rpb24iLGVbZS5jb21tZW50cz0yM109ImNvbW1lbnRzIixlW2UuY29udGV4dG1lbnU9MjRdPSJjb250ZXh0bWVudSIsZVtlLmNvcHlXaXRoU3ludGF4SGlnaGxpZ2h0aW5nPTI1XT0iY29weVdpdGhTeW50YXhIaWdobGlnaHRpbmciLGVbZS5jdXJzb3JCbGlua2luZz0yNl09ImN1cnNvckJsaW5raW5nIixlW2UuY3Vyc29yU21vb3RoQ2FyZXRBbmltYXRpb249MjddPSJjdXJzb3JTbW9vdGhDYXJldEFuaW1hdGlvbiIsZVtlLmN1cnNvclN0eWxlPTI4XT0iY3Vyc29yU3R5bGUiLGVbZS5jdXJzb3JTdXJyb3VuZGluZ0xpbmVzPTI5XT0iY3Vyc29yU3Vycm91bmRpbmdMaW5lcyIsZVtlLmN1cnNvclN1cnJvdW5kaW5nTGluZXNTdHlsZT0zMF09ImN1cnNvclN1cnJvdW5kaW5nTGluZXNTdHlsZSIsZVtlLmN1cnNvcldpZHRoPTMxXT0iY3Vyc29yV2lkdGgiLGVbZS5kaXNhYmxlTGF5ZXJIaW50aW5nPTMyXT0iZGlzYWJsZUxheWVySGludGluZyIsZVtlLmRpc2FibGVNb25vc3BhY2VPcHRpbWl6YXRpb25zPTMzXT0iZGlzYWJsZU1vbm9zcGFjZU9wdGltaXphdGlvbnMiLGVbZS5kb21SZWFkT25seT0zNF09ImRvbVJlYWRPbmx5IixlW2UuZHJhZ0FuZERyb3A9MzVdPSJkcmFnQW5kRHJvcCIsZVtlLmRyb3BJbnRvRWRpdG9yPTM2XT0iZHJvcEludG9FZGl0b3IiLGVbZS5lbXB0eVNlbGVjdGlvbkNsaXBib2FyZD0zN109ImVtcHR5U2VsZWN0aW9uQ2xpcGJvYXJkIixlW2UuZXhwZXJpbWVudGFsV2hpdGVzcGFjZVJlbmRlcmluZz0zOF09ImV4cGVyaW1lbnRhbFdoaXRlc3BhY2VSZW5kZXJpbmciLGVbZS5leHRyYUVkaXRvckNsYXNzTmFtZT0zOV09ImV4dHJhRWRpdG9yQ2xhc3NOYW1lIixlW2UuZmFzdFNjcm9sbFNlbnNpdGl2aXR5PTQwXT0iZmFzdFNjcm9sbFNlbnNpdGl2aXR5IixlW2UuZmluZD00MV09ImZpbmQiLGVbZS5maXhlZE92ZXJmbG93V2lkZ2V0cz00Ml09ImZpeGVkT3ZlcmZsb3dXaWRnZXRzIixlW2UuZm9sZGluZz00M109ImZvbGRpbmciLGVbZS5mb2xkaW5nU3RyYXRlZ3k9NDRdPSJmb2xkaW5nU3RyYXRlZ3kiLGVbZS5mb2xkaW5nSGlnaGxpZ2h0PTQ1XT0iZm9sZGluZ0hpZ2hsaWdodCIsZVtlLmZvbGRpbmdJbXBvcnRzQnlEZWZhdWx0PTQ2XT0iZm9sZGluZ0ltcG9ydHNCeURlZmF1bHQiLGVbZS5mb2xkaW5nTWF4aW11bVJlZ2lvbnM9NDddPSJmb2xkaW5nTWF4aW11bVJlZ2lvbnMiLGVbZS51bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmU9NDhdPSJ1bmZvbGRPbkNsaWNrQWZ0ZXJFbmRPZkxpbmUiLGVbZS5mb250RmFtaWx5PTQ5XT0iZm9udEZhbWlseSIsZVtlLmZvbnRJbmZvPTUwXT0iZm9udEluZm8iLGVbZS5mb250TGlnYXR1cmVzPTUxXT0iZm9udExpZ2F0dXJlcyIsZVtlLmZvbnRTaXplPTUyXT0iZm9udFNpemUiLGVbZS5mb250V2VpZ2h0PTUzXT0iZm9udFdlaWdodCIsZVtlLmZvbnRWYXJpYXRpb25zPTU0XT0iZm9udFZhcmlhdGlvbnMiLGVbZS5mb3JtYXRPblBhc3RlPTU1XT0iZm9ybWF0T25QYXN0ZSIsZVtlLmZvcm1hdE9uVHlwZT01Nl09ImZvcm1hdE9uVHlwZSIsZVtlLmdseXBoTWFyZ2luPTU3XT0iZ2x5cGhNYXJnaW4iLGVbZS5nb3RvTG9jYXRpb249NThdPSJnb3RvTG9jYXRpb24iLGVbZS5oaWRlQ3Vyc29ySW5PdmVydmlld1J1bGVyPTU5XT0iaGlkZUN1cnNvckluT3ZlcnZpZXdSdWxlciIsZVtlLmhvdmVyPTYwXT0iaG92ZXIiLGVbZS5pbkRpZmZFZGl0b3I9NjFdPSJpbkRpZmZFZGl0b3IiLGVbZS5pbmxpbmVTdWdnZXN0PTYyXT0iaW5saW5lU3VnZ2VzdCIsZVtlLmlubGluZUVkaXQ9NjNdPSJpbmxpbmVFZGl0IixlW2UubGV0dGVyU3BhY2luZz02NF09ImxldHRlclNwYWNpbmciLGVbZS5saWdodGJ1bGI9NjVdPSJsaWdodGJ1bGIiLGVbZS5saW5lRGVjb3JhdGlvbnNXaWR0aD02Nl09ImxpbmVEZWNvcmF0aW9uc1dpZHRoIixlW2UubGluZUhlaWdodD02N109ImxpbmVIZWlnaHQiLGVbZS5saW5lTnVtYmVycz02OF09ImxpbmVOdW1iZXJzIixlW2UubGluZU51bWJlcnNNaW5DaGFycz02OV09ImxpbmVOdW1iZXJzTWluQ2hhcnMiLGVbZS5saW5rZWRFZGl0aW5nPTcwXT0ibGlua2VkRWRpdGluZyIsZVtlLmxpbmtzPTcxXT0ibGlua3MiLGVbZS5tYXRjaEJyYWNrZXRzPTcyXT0ibWF0Y2hCcmFja2V0cyIsZVtlLm1pbmltYXA9NzNdPSJtaW5pbWFwIixlW2UubW91c2VTdHlsZT03NF09Im1vdXNlU3R5bGUiLGVbZS5tb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHk9NzVdPSJtb3VzZVdoZWVsU2Nyb2xsU2Vuc2l0aXZpdHkiLGVbZS5tb3VzZVdoZWVsWm9vbT03Nl09Im1vdXNlV2hlZWxab29tIixlW2UubXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nPTc3XT0ibXVsdGlDdXJzb3JNZXJnZU92ZXJsYXBwaW5nIixlW2UubXVsdGlDdXJzb3JNb2RpZmllcj03OF09Im11bHRpQ3Vyc29yTW9kaWZpZXIiLGVbZS5tdWx0aUN1cnNvclBhc3RlPTc5XT0ibXVsdGlDdXJzb3JQYXN0ZSIsZVtlLm11bHRpQ3Vyc29yTGltaXQ9ODBdPSJtdWx0aUN1cnNvckxpbWl0IixlW2Uub2NjdXJyZW5jZXNIaWdobGlnaHQ9ODFdPSJvY2N1cnJlbmNlc0hpZ2hsaWdodCIsZVtlLm92ZXJ2aWV3UnVsZXJCb3JkZXI9ODJdPSJvdmVydmlld1J1bGVyQm9yZGVyIixlW2Uub3ZlcnZpZXdSdWxlckxhbmVzPTgzXT0ib3ZlcnZpZXdSdWxlckxhbmVzIixlW2UucGFkZGluZz04NF09InBhZGRpbmciLGVbZS5wYXN0ZUFzPTg1XT0icGFzdGVBcyIsZVtlLnBhcmFtZXRlckhpbnRzPTg2XT0icGFyYW1ldGVySGludHMiLGVbZS5wZWVrV2lkZ2V0RGVmYXVsdEZvY3VzPTg3XT0icGVla1dpZGdldERlZmF1bHRGb2N1cyIsZVtlLmRlZmluaXRpb25MaW5rT3BlbnNJblBlZWs9ODhdPSJkZWZpbml0aW9uTGlua09wZW5zSW5QZWVrIixlW2UucXVpY2tTdWdnZXN0aW9ucz04OV09InF1aWNrU3VnZ2VzdGlvbnMiLGVbZS5xdWlja1N1Z2dlc3Rpb25zRGVsYXk9OTBdPSJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLGVbZS5yZWFkT25seT05MV09InJlYWRPbmx5IixlW2UucmVhZE9ubHlNZXNzYWdlPTkyXT0icmVhZE9ubHlNZXNzYWdlIixlW2UucmVuYW1lT25UeXBlPTkzXT0icmVuYW1lT25UeXBlIixlW2UucmVuZGVyQ29udHJvbENoYXJhY3RlcnM9OTRdPSJyZW5kZXJDb250cm9sQ2hhcmFjdGVycyIsZVtlLnJlbmRlckZpbmFsTmV3bGluZT05NV09InJlbmRlckZpbmFsTmV3bGluZSIsZVtlLnJlbmRlckxpbmVIaWdobGlnaHQ9OTZdPSJyZW5kZXJMaW5lSGlnaGxpZ2h0IixlW2UucmVuZGVyTGluZUhpZ2hsaWdodE9ubHlXaGVuRm9jdXM9OTddPSJyZW5kZXJMaW5lSGlnaGxpZ2h0T25seVdoZW5Gb2N1cyIsZVtlLnJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucz05OF09InJlbmRlclZhbGlkYXRpb25EZWNvcmF0aW9ucyIsZVtlLnJlbmRlcldoaXRlc3BhY2U9OTldPSJyZW5kZXJXaGl0ZXNwYWNlIixlW2UucmV2ZWFsSG9yaXpvbnRhbFJpZ2h0UGFkZGluZz0xMDBdPSJyZXZlYWxIb3Jpem9udGFsUmlnaHRQYWRkaW5nIixlW2Uucm91bmRlZFNlbGVjdGlvbj0xMDFdPSJyb3VuZGVkU2VsZWN0aW9uIixlW2UucnVsZXJzPTEwMl09InJ1bGVycyIsZVtlLnNjcm9sbGJhcj0xMDNdPSJzY3JvbGxiYXIiLGVbZS5zY3JvbGxCZXlvbmRMYXN0Q29sdW1uPTEwNF09InNjcm9sbEJleW9uZExhc3RDb2x1bW4iLGVbZS5zY3JvbGxCZXlvbmRMYXN0TGluZT0xMDVdPSJzY3JvbGxCZXlvbmRMYXN0TGluZSIsZVtlLnNjcm9sbFByZWRvbWluYW50QXhpcz0xMDZdPSJzY3JvbGxQcmVkb21pbmFudEF4aXMiLGVbZS5zZWxlY3Rpb25DbGlwYm9hcmQ9MTA3XT0ic2VsZWN0aW9uQ2xpcGJvYXJkIixlW2Uuc2VsZWN0aW9uSGlnaGxpZ2h0PTEwOF09InNlbGVjdGlvbkhpZ2hsaWdodCIsZVtlLnNlbGVjdE9uTGluZU51bWJlcnM9MTA5XT0ic2VsZWN0T25MaW5lTnVtYmVycyIsZVtlLnNob3dGb2xkaW5nQ29udHJvbHM9MTEwXT0ic2hvd0ZvbGRpbmdDb250cm9scyIsZVtlLnNob3dVbnVzZWQ9MTExXT0ic2hvd1VudXNlZCIsZVtlLnNuaXBwZXRTdWdnZXN0aW9ucz0xMTJdPSJzbmlwcGV0U3VnZ2VzdGlvbnMiLGVbZS5zbWFydFNlbGVjdD0xMTNdPSJzbWFydFNlbGVjdCIsZVtlLnNtb290aFNjcm9sbGluZz0xMTRdPSJzbW9vdGhTY3JvbGxpbmciLGVbZS5zdGlja3lTY3JvbGw9MTE1XT0ic3RpY2t5U2Nyb2xsIixlW2Uuc3RpY2t5VGFiU3RvcHM9MTE2XT0ic3RpY2t5VGFiU3RvcHMiLGVbZS5zdG9wUmVuZGVyaW5nTGluZUFmdGVyPTExN109InN0b3BSZW5kZXJpbmdMaW5lQWZ0ZXIiLGVbZS5zdWdnZXN0PTExOF09InN1Z2dlc3QiLGVbZS5zdWdnZXN0Rm9udFNpemU9MTE5XT0ic3VnZ2VzdEZvbnRTaXplIixlW2Uuc3VnZ2VzdExpbmVIZWlnaHQ9MTIwXT0ic3VnZ2VzdExpbmVIZWlnaHQiLGVbZS5zdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycz0xMjFdPSJzdWdnZXN0T25UcmlnZ2VyQ2hhcmFjdGVycyIsZVtlLnN1Z2dlc3RTZWxlY3Rpb249MTIyXT0ic3VnZ2VzdFNlbGVjdGlvbiIsZVtlLnRhYkNvbXBsZXRpb249MTIzXT0idGFiQ29tcGxldGlvbiIsZVtlLnRhYkluZGV4PTEyNF09InRhYkluZGV4IixlW2UudW5pY29kZUhpZ2hsaWdodGluZz0xMjVdPSJ1bmljb2RlSGlnaGxpZ2h0aW5nIixlW2UudW51c3VhbExpbmVUZXJtaW5hdG9ycz0xMjZdPSJ1bnVzdWFsTGluZVRlcm1pbmF0b3JzIixlW2UudXNlU2hhZG93RE9NPTEyN109InVzZVNoYWRvd0RPTSIsZVtlLnVzZVRhYlN0b3BzPTEyOF09InVzZVRhYlN0b3BzIixlW2Uud29yZEJyZWFrPTEyOV09IndvcmRCcmVhayIsZVtlLndvcmRTZWdtZW50ZXJMb2NhbGVzPTEzMF09IndvcmRTZWdtZW50ZXJMb2NhbGVzIixlW2Uud29yZFNlcGFyYXRvcnM9MTMxXT0id29yZFNlcGFyYXRvcnMiLGVbZS53b3JkV3JhcD0xMzJdPSJ3b3JkV3JhcCIsZVtlLndvcmRXcmFwQnJlYWtBZnRlckNoYXJhY3RlcnM9MTMzXT0id29yZFdyYXBCcmVha0FmdGVyQ2hhcmFjdGVycyIsZVtlLndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzPTEzNF09IndvcmRXcmFwQnJlYWtCZWZvcmVDaGFyYWN0ZXJzIixlW2Uud29yZFdyYXBDb2x1bW49MTM1XT0id29yZFdyYXBDb2x1bW4iLGVbZS53b3JkV3JhcE92ZXJyaWRlMT0xMzZdPSJ3b3JkV3JhcE92ZXJyaWRlMSIsZVtlLndvcmRXcmFwT3ZlcnJpZGUyPTEzN109IndvcmRXcmFwT3ZlcnJpZGUyIixlW2Uud3JhcHBpbmdJbmRlbnQ9MTM4XT0id3JhcHBpbmdJbmRlbnQiLGVbZS53cmFwcGluZ1N0cmF0ZWd5PTEzOV09IndyYXBwaW5nU3RyYXRlZ3kiLGVbZS5zaG93RGVwcmVjYXRlZD0xNDBdPSJzaG93RGVwcmVjYXRlZCIsZVtlLmlubGF5SGludHM9MTQxXT0iaW5sYXlIaW50cyIsZVtlLmVkaXRvckNsYXNzTmFtZT0xNDJdPSJlZGl0b3JDbGFzc05hbWUiLGVbZS5waXhlbFJhdGlvPTE0M109InBpeGVsUmF0aW8iLGVbZS50YWJGb2N1c01vZGU9MTQ0XT0idGFiRm9jdXNNb2RlIixlW2UubGF5b3V0SW5mbz0xNDVdPSJsYXlvdXRJbmZvIixlW2Uud3JhcHBpbmdJbmZvPTE0Nl09IndyYXBwaW5nSW5mbyIsZVtlLmRlZmF1bHRDb2xvckRlY29yYXRvcnM9MTQ3XT0iZGVmYXVsdENvbG9yRGVjb3JhdG9ycyIsZVtlLmNvbG9yRGVjb3JhdG9yc0FjdGl2YXRlZE9uPTE0OF09ImNvbG9yRGVjb3JhdG9yc0FjdGl2YXRlZE9uIixlW2UuaW5saW5lQ29tcGxldGlvbnNBY2Nlc3NpYmlsaXR5VmVyYm9zZT0xNDldPSJpbmxpbmVDb21wbGV0aW9uc0FjY2Vzc2liaWxpdHlWZXJib3NlIn0pKGpufHwoam49e30pKTt2YXIgUW47KGZ1bmN0aW9uKGUpe2VbZS5UZXh0RGVmaW5lZD0wXT0iVGV4dERlZmluZWQiLGVbZS5MRj0xXT0iTEYiLGVbZS5DUkxGPTJdPSJDUkxGIn0pKFFufHwoUW49e30pKTt2YXIgWG47KGZ1bmN0aW9uKGUpe2VbZS5MRj0wXT0iTEYiLGVbZS5DUkxGPTFdPSJDUkxGIn0pKFhufHwoWG49e30pKTt2YXIgSm47KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD0zXT0iUmlnaHQifSkoSm58fChKbj17fSkpO3ZhciBZbjsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5JbmRlbnQ9MV09IkluZGVudCIsZVtlLkluZGVudE91dGRlbnQ9Ml09IkluZGVudE91dGRlbnQiLGVbZS5PdXRkZW50PTNdPSJPdXRkZW50In0pKFlufHwoWW49e30pKTt2YXIgWm47KGZ1bmN0aW9uKGUpe2VbZS5Cb3RoPTBdPSJCb3RoIixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTGVmdD0yXT0iTGVmdCIsZVtlLk5vbmU9M109Ik5vbmUifSkoWm58fChabj17fSkpO3ZhciBLbjsoZnVuY3Rpb24oZSl7ZVtlLlR5cGU9MV09IlR5cGUiLGVbZS5QYXJhbWV0ZXI9Ml09IlBhcmFtZXRlciJ9KShLbnx8KEtuPXt9KSk7dmFyIGVyOyhmdW5jdGlvbihlKXtlW2UuQXV0b21hdGljPTBdPSJBdXRvbWF0aWMiLGVbZS5FeHBsaWNpdD0xXT0iRXhwbGljaXQifSkoZXJ8fChlcj17fSkpO3ZhciB0cjsoZnVuY3Rpb24oZSl7ZVtlLkludm9rZT0wXT0iSW52b2tlIixlW2UuQXV0b21hdGljPTFdPSJBdXRvbWF0aWMifSkodHJ8fCh0cj17fSkpO3ZhciBJdDsoZnVuY3Rpb24oZSl7ZVtlLkRlcGVuZHNPbktiTGF5b3V0PS0xXT0iRGVwZW5kc09uS2JMYXlvdXQiLGVbZS5Vbmtub3duPTBdPSJVbmtub3duIixlW2UuQmFja3NwYWNlPTFdPSJCYWNrc3BhY2UiLGVbZS5UYWI9Ml09IlRhYiIsZVtlLkVudGVyPTNdPSJFbnRlciIsZVtlLlNoaWZ0PTRdPSJTaGlmdCIsZVtlLkN0cmw9NV09IkN0cmwiLGVbZS5BbHQ9Nl09IkFsdCIsZVtlLlBhdXNlQnJlYWs9N109IlBhdXNlQnJlYWsiLGVbZS5DYXBzTG9jaz04XT0iQ2Fwc0xvY2siLGVbZS5Fc2NhcGU9OV09IkVzY2FwZSIsZVtlLlNwYWNlPTEwXT0iU3BhY2UiLGVbZS5QYWdlVXA9MTFdPSJQYWdlVXAiLGVbZS5QYWdlRG93bj0xMl09IlBhZ2VEb3duIixlW2UuRW5kPTEzXT0iRW5kIixlW2UuSG9tZT0xNF09IkhvbWUiLGVbZS5MZWZ0QXJyb3c9MTVdPSJMZWZ0QXJyb3ciLGVbZS5VcEFycm93PTE2XT0iVXBBcnJvdyIsZVtlLlJpZ2h0QXJyb3c9MTddPSJSaWdodEFycm93IixlW2UuRG93bkFycm93PTE4XT0iRG93bkFycm93IixlW2UuSW5zZXJ0PTE5XT0iSW5zZXJ0IixlW2UuRGVsZXRlPTIwXT0iRGVsZXRlIixlW2UuRGlnaXQwPTIxXT0iRGlnaXQwIixlW2UuRGlnaXQxPTIyXT0iRGlnaXQxIixlW2UuRGlnaXQyPTIzXT0iRGlnaXQyIixlW2UuRGlnaXQzPTI0XT0iRGlnaXQzIixlW2UuRGlnaXQ0PTI1XT0iRGlnaXQ0IixlW2UuRGlnaXQ1PTI2XT0iRGlnaXQ1IixlW2UuRGlnaXQ2PTI3XT0iRGlnaXQ2IixlW2UuRGlnaXQ3PTI4XT0iRGlnaXQ3IixlW2UuRGlnaXQ4PTI5XT0iRGlnaXQ4IixlW2UuRGlnaXQ5PTMwXT0iRGlnaXQ5IixlW2UuS2V5QT0zMV09IktleUEiLGVbZS5LZXlCPTMyXT0iS2V5QiIsZVtlLktleUM9MzNdPSJLZXlDIixlW2UuS2V5RD0zNF09IktleUQiLGVbZS5LZXlFPTM1XT0iS2V5RSIsZVtlLktleUY9MzZdPSJLZXlGIixlW2UuS2V5Rz0zN109IktleUciLGVbZS5LZXlIPTM4XT0iS2V5SCIsZVtlLktleUk9MzldPSJLZXlJIixlW2UuS2V5Sj00MF09IktleUoiLGVbZS5LZXlLPTQxXT0iS2V5SyIsZVtlLktleUw9NDJdPSJLZXlMIixlW2UuS2V5TT00M109IktleU0iLGVbZS5LZXlOPTQ0XT0iS2V5TiIsZVtlLktleU89NDVdPSJLZXlPIixlW2UuS2V5UD00Nl09IktleVAiLGVbZS5LZXlRPTQ3XT0iS2V5USIsZVtlLktleVI9NDhdPSJLZXlSIixlW2UuS2V5Uz00OV09IktleVMiLGVbZS5LZXlUPTUwXT0iS2V5VCIsZVtlLktleVU9NTFdPSJLZXlVIixlW2UuS2V5Vj01Ml09IktleVYiLGVbZS5LZXlXPTUzXT0iS2V5VyIsZVtlLktleVg9NTRdPSJLZXlYIixlW2UuS2V5WT01NV09IktleVkiLGVbZS5LZXlaPTU2XT0iS2V5WiIsZVtlLk1ldGE9NTddPSJNZXRhIixlW2UuQ29udGV4dE1lbnU9NThdPSJDb250ZXh0TWVudSIsZVtlLkYxPTU5XT0iRjEiLGVbZS5GMj02MF09IkYyIixlW2UuRjM9NjFdPSJGMyIsZVtlLkY0PTYyXT0iRjQiLGVbZS5GNT02M109IkY1IixlW2UuRjY9NjRdPSJGNiIsZVtlLkY3PTY1XT0iRjciLGVbZS5GOD02Nl09IkY4IixlW2UuRjk9NjddPSJGOSIsZVtlLkYxMD02OF09IkYxMCIsZVtlLkYxMT02OV09IkYxMSIsZVtlLkYxMj03MF09IkYxMiIsZVtlLkYxMz03MV09IkYxMyIsZVtlLkYxND03Ml09IkYxNCIsZVtlLkYxNT03M109IkYxNSIsZVtlLkYxNj03NF09IkYxNiIsZVtlLkYxNz03NV09IkYxNyIsZVtlLkYxOD03Nl09IkYxOCIsZVtlLkYxOT03N109IkYxOSIsZVtlLkYyMD03OF09IkYyMCIsZVtlLkYyMT03OV09IkYyMSIsZVtlLkYyMj04MF09IkYyMiIsZVtlLkYyMz04MV09IkYyMyIsZVtlLkYyND04Ml09IkYyNCIsZVtlLk51bUxvY2s9ODNdPSJOdW1Mb2NrIixlW2UuU2Nyb2xsTG9jaz04NF09IlNjcm9sbExvY2siLGVbZS5TZW1pY29sb249ODVdPSJTZW1pY29sb24iLGVbZS5FcXVhbD04Nl09IkVxdWFsIixlW2UuQ29tbWE9ODddPSJDb21tYSIsZVtlLk1pbnVzPTg4XT0iTWludXMiLGVbZS5QZXJpb2Q9ODldPSJQZXJpb2QiLGVbZS5TbGFzaD05MF09IlNsYXNoIixlW2UuQmFja3F1b3RlPTkxXT0iQmFja3F1b3RlIixlW2UuQnJhY2tldExlZnQ9OTJdPSJCcmFja2V0TGVmdCIsZVtlLkJhY2tzbGFzaD05M109IkJhY2tzbGFzaCIsZVtlLkJyYWNrZXRSaWdodD05NF09IkJyYWNrZXRSaWdodCIsZVtlLlF1b3RlPTk1XT0iUXVvdGUiLGVbZS5PRU1fOD05Nl09Ik9FTV84IixlW2UuSW50bEJhY2tzbGFzaD05N109IkludGxCYWNrc2xhc2giLGVbZS5OdW1wYWQwPTk4XT0iTnVtcGFkMCIsZVtlLk51bXBhZDE9OTldPSJOdW1wYWQxIixlW2UuTnVtcGFkMj0xMDBdPSJOdW1wYWQyIixlW2UuTnVtcGFkMz0xMDFdPSJOdW1wYWQzIixlW2UuTnVtcGFkND0xMDJdPSJOdW1wYWQ0IixlW2UuTnVtcGFkNT0xMDNdPSJOdW1wYWQ1IixlW2UuTnVtcGFkNj0xMDRdPSJOdW1wYWQ2IixlW2UuTnVtcGFkNz0xMDVdPSJOdW1wYWQ3IixlW2UuTnVtcGFkOD0xMDZdPSJOdW1wYWQ4IixlW2UuTnVtcGFkOT0xMDddPSJOdW1wYWQ5IixlW2UuTnVtcGFkTXVsdGlwbHk9MTA4XT0iTnVtcGFkTXVsdGlwbHkiLGVbZS5OdW1wYWRBZGQ9MTA5XT0iTnVtcGFkQWRkIixlW2UuTlVNUEFEX1NFUEFSQVRPUj0xMTBdPSJOVU1QQURfU0VQQVJBVE9SIixlW2UuTnVtcGFkU3VidHJhY3Q9MTExXT0iTnVtcGFkU3VidHJhY3QiLGVbZS5OdW1wYWREZWNpbWFsPTExMl09Ik51bXBhZERlY2ltYWwiLGVbZS5OdW1wYWREaXZpZGU9MTEzXT0iTnVtcGFkRGl2aWRlIixlW2UuS0VZX0lOX0NPTVBPU0lUSU9OPTExNF09IktFWV9JTl9DT01QT1NJVElPTiIsZVtlLkFCTlRfQzE9MTE1XT0iQUJOVF9DMSIsZVtlLkFCTlRfQzI9MTE2XT0iQUJOVF9DMiIsZVtlLkF1ZGlvVm9sdW1lTXV0ZT0xMTddPSJBdWRpb1ZvbHVtZU11dGUiLGVbZS5BdWRpb1ZvbHVtZVVwPTExOF09IkF1ZGlvVm9sdW1lVXAiLGVbZS5BdWRpb1ZvbHVtZURvd249MTE5XT0iQXVkaW9Wb2x1bWVEb3duIixlW2UuQnJvd3NlclNlYXJjaD0xMjBdPSJCcm93c2VyU2VhcmNoIixlW2UuQnJvd3NlckhvbWU9MTIxXT0iQnJvd3NlckhvbWUiLGVbZS5Ccm93c2VyQmFjaz0xMjJdPSJCcm93c2VyQmFjayIsZVtlLkJyb3dzZXJGb3J3YXJkPTEyM109IkJyb3dzZXJGb3J3YXJkIixlW2UuTWVkaWFUcmFja05leHQ9MTI0XT0iTWVkaWFUcmFja05leHQiLGVbZS5NZWRpYVRyYWNrUHJldmlvdXM9MTI1XT0iTWVkaWFUcmFja1ByZXZpb3VzIixlW2UuTWVkaWFTdG9wPTEyNl09Ik1lZGlhU3RvcCIsZVtlLk1lZGlhUGxheVBhdXNlPTEyN109Ik1lZGlhUGxheVBhdXNlIixlW2UuTGF1bmNoTWVkaWFQbGF5ZXI9MTI4XT0iTGF1bmNoTWVkaWFQbGF5ZXIiLGVbZS5MYXVuY2hNYWlsPTEyOV09IkxhdW5jaE1haWwiLGVbZS5MYXVuY2hBcHAyPTEzMF09IkxhdW5jaEFwcDIiLGVbZS5DbGVhcj0xMzFdPSJDbGVhciIsZVtlLk1BWF9WQUxVRT0xMzJdPSJNQVhfVkFMVUUifSkoSXR8fChJdD17fSkpO3ZhciBVdDsoZnVuY3Rpb24oZSl7ZVtlLkhpbnQ9MV09IkhpbnQiLGVbZS5JbmZvPTJdPSJJbmZvIixlW2UuV2FybmluZz00XT0iV2FybmluZyIsZVtlLkVycm9yPThdPSJFcnJvciJ9KShVdHx8KFV0PXt9KSk7dmFyIEh0OyhmdW5jdGlvbihlKXtlW2UuVW5uZWNlc3Nhcnk9MV09IlVubmVjZXNzYXJ5IixlW2UuRGVwcmVjYXRlZD0yXT0iRGVwcmVjYXRlZCJ9KShIdHx8KEh0PXt9KSk7dmFyIG5yOyhmdW5jdGlvbihlKXtlW2UuSW5saW5lPTFdPSJJbmxpbmUiLGVbZS5HdXR0ZXI9Ml09Ikd1dHRlciJ9KShucnx8KG5yPXt9KSk7dmFyIHJyOyhmdW5jdGlvbihlKXtlW2UuTm9ybWFsPTFdPSJOb3JtYWwiLGVbZS5VbmRlcmxpbmVkPTJdPSJVbmRlcmxpbmVkIn0pKHJyfHwocnI9e30pKTt2YXIgc3I7KGZ1bmN0aW9uKGUpe2VbZS5VTktOT1dOPTBdPSJVTktOT1dOIixlW2UuVEVYVEFSRUE9MV09IlRFWFRBUkVBIixlW2UuR1VUVEVSX0dMWVBIX01BUkdJTj0yXT0iR1VUVEVSX0dMWVBIX01BUkdJTiIsZVtlLkdVVFRFUl9MSU5FX05VTUJFUlM9M109IkdVVFRFUl9MSU5FX05VTUJFUlMiLGVbZS5HVVRURVJfTElORV9ERUNPUkFUSU9OUz00XT0iR1VUVEVSX0xJTkVfREVDT1JBVElPTlMiLGVbZS5HVVRURVJfVklFV19aT05FPTVdPSJHVVRURVJfVklFV19aT05FIixlW2UuQ09OVEVOVF9URVhUPTZdPSJDT05URU5UX1RFWFQiLGVbZS5DT05URU5UX0VNUFRZPTddPSJDT05URU5UX0VNUFRZIixlW2UuQ09OVEVOVF9WSUVXX1pPTkU9OF09IkNPTlRFTlRfVklFV19aT05FIixlW2UuQ09OVEVOVF9XSURHRVQ9OV09IkNPTlRFTlRfV0lER0VUIixlW2UuT1ZFUlZJRVdfUlVMRVI9MTBdPSJPVkVSVklFV19SVUxFUiIsZVtlLlNDUk9MTEJBUj0xMV09IlNDUk9MTEJBUiIsZVtlLk9WRVJMQVlfV0lER0VUPTEyXT0iT1ZFUkxBWV9XSURHRVQiLGVbZS5PVVRTSURFX0VESVRPUj0xM109Ik9VVFNJREVfRURJVE9SIn0pKHNyfHwoc3I9e30pKTt2YXIgaXI7KGZ1bmN0aW9uKGUpe2VbZS5BSUdlbmVyYXRlZD0xXT0iQUlHZW5lcmF0ZWQifSkoaXJ8fChpcj17fSkpO3ZhciBhcjsoZnVuY3Rpb24oZSl7ZVtlLlRPUF9SSUdIVF9DT1JORVI9MF09IlRPUF9SSUdIVF9DT1JORVIiLGVbZS5CT1RUT01fUklHSFRfQ09STkVSPTFdPSJCT1RUT01fUklHSFRfQ09STkVSIixlW2UuVE9QX0NFTlRFUj0yXT0iVE9QX0NFTlRFUiJ9KShhcnx8KGFyPXt9KSk7dmFyIGxyOyhmdW5jdGlvbihlKXtlW2UuTGVmdD0xXT0iTGVmdCIsZVtlLkNlbnRlcj0yXT0iQ2VudGVyIixlW2UuUmlnaHQ9NF09IlJpZ2h0IixlW2UuRnVsbD03XT0iRnVsbCJ9KShscnx8KGxyPXt9KSk7dmFyIG9yOyhmdW5jdGlvbihlKXtlW2UuV29yZD0wXT0iV29yZCIsZVtlLkxpbmU9MV09IkxpbmUiLGVbZS5TdWdnZXN0PTJdPSJTdWdnZXN0In0pKG9yfHwob3I9e30pKTt2YXIgdXI7KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTBdPSJMZWZ0IixlW2UuUmlnaHQ9MV09IlJpZ2h0IixlW2UuTm9uZT0yXT0iTm9uZSIsZVtlLkxlZnRPZkluamVjdGVkVGV4dD0zXT0iTGVmdE9mSW5qZWN0ZWRUZXh0IixlW2UuUmlnaHRPZkluamVjdGVkVGV4dD00XT0iUmlnaHRPZkluamVjdGVkVGV4dCJ9KSh1cnx8KHVyPXt9KSk7dmFyIGNyOyhmdW5jdGlvbihlKXtlW2UuT2ZmPTBdPSJPZmYiLGVbZS5Pbj0xXT0iT24iLGVbZS5SZWxhdGl2ZT0yXT0iUmVsYXRpdmUiLGVbZS5JbnRlcnZhbD0zXT0iSW50ZXJ2YWwiLGVbZS5DdXN0b209NF09IkN1c3RvbSJ9KShjcnx8KGNyPXt9KSk7dmFyIGhyOyhmdW5jdGlvbihlKXtlW2UuTm9uZT0wXT0iTm9uZSIsZVtlLlRleHQ9MV09IlRleHQiLGVbZS5CbG9ja3M9Ml09IkJsb2NrcyJ9KShocnx8KGhyPXt9KSk7dmFyIGZyOyhmdW5jdGlvbihlKXtlW2UuU21vb3RoPTBdPSJTbW9vdGgiLGVbZS5JbW1lZGlhdGU9MV09IkltbWVkaWF0ZSJ9KShmcnx8KGZyPXt9KSk7dmFyIGRyOyhmdW5jdGlvbihlKXtlW2UuQXV0bz0xXT0iQXV0byIsZVtlLkhpZGRlbj0yXT0iSGlkZGVuIixlW2UuVmlzaWJsZT0zXT0iVmlzaWJsZSJ9KShkcnx8KGRyPXt9KSk7dmFyIFd0OyhmdW5jdGlvbihlKXtlW2UuTFRSPTBdPSJMVFIiLGVbZS5SVEw9MV09IlJUTCJ9KShXdHx8KFd0PXt9KSk7dmFyIG1yOyhmdW5jdGlvbihlKXtlLk9mZj0ib2ZmIixlLk9uQ29kZT0ib25Db2RlIixlLk9uPSJvbiJ9KShtcnx8KG1yPXt9KSk7dmFyIGdyOyhmdW5jdGlvbihlKXtlW2UuSW52b2tlPTFdPSJJbnZva2UiLGVbZS5UcmlnZ2VyQ2hhcmFjdGVyPTJdPSJUcmlnZ2VyQ2hhcmFjdGVyIixlW2UuQ29udGVudENoYW5nZT0zXT0iQ29udGVudENoYW5nZSJ9KShncnx8KGdyPXt9KSk7dmFyIGJyOyhmdW5jdGlvbihlKXtlW2UuRmlsZT0wXT0iRmlsZSIsZVtlLk1vZHVsZT0xXT0iTW9kdWxlIixlW2UuTmFtZXNwYWNlPTJdPSJOYW1lc3BhY2UiLGVbZS5QYWNrYWdlPTNdPSJQYWNrYWdlIixlW2UuQ2xhc3M9NF09IkNsYXNzIixlW2UuTWV0aG9kPTVdPSJNZXRob2QiLGVbZS5Qcm9wZXJ0eT02XT0iUHJvcGVydHkiLGVbZS5GaWVsZD03XT0iRmllbGQiLGVbZS5Db25zdHJ1Y3Rvcj04XT0iQ29uc3RydWN0b3IiLGVbZS5FbnVtPTldPSJFbnVtIixlW2UuSW50ZXJmYWNlPTEwXT0iSW50ZXJmYWNlIixlW2UuRnVuY3Rpb249MTFdPSJGdW5jdGlvbiIsZVtlLlZhcmlhYmxlPTEyXT0iVmFyaWFibGUiLGVbZS5Db25zdGFudD0xM109IkNvbnN0YW50IixlW2UuU3RyaW5nPTE0XT0iU3RyaW5nIixlW2UuTnVtYmVyPTE1XT0iTnVtYmVyIixlW2UuQm9vbGVhbj0xNl09IkJvb2xlYW4iLGVbZS5BcnJheT0xN109IkFycmF5IixlW2UuT2JqZWN0PTE4XT0iT2JqZWN0IixlW2UuS2V5PTE5XT0iS2V5IixlW2UuTnVsbD0yMF09Ik51bGwiLGVbZS5FbnVtTWVtYmVyPTIxXT0iRW51bU1lbWJlciIsZVtlLlN0cnVjdD0yMl09IlN0cnVjdCIsZVtlLkV2ZW50PTIzXT0iRXZlbnQiLGVbZS5PcGVyYXRvcj0yNF09Ik9wZXJhdG9yIixlW2UuVHlwZVBhcmFtZXRlcj0yNV09IlR5cGVQYXJhbWV0ZXIifSkoYnJ8fChicj17fSkpO3ZhciBfcjsoZnVuY3Rpb24oZSl7ZVtlLkRlcHJlY2F0ZWQ9MV09IkRlcHJlY2F0ZWQifSkoX3J8fChfcj17fSkpO3ZhciB4cjsoZnVuY3Rpb24oZSl7ZVtlLkhpZGRlbj0wXT0iSGlkZGVuIixlW2UuQmxpbms9MV09IkJsaW5rIixlW2UuU21vb3RoPTJdPSJTbW9vdGgiLGVbZS5QaGFzZT0zXT0iUGhhc2UiLGVbZS5FeHBhbmQ9NF09IkV4cGFuZCIsZVtlLlNvbGlkPTVdPSJTb2xpZCJ9KSh4cnx8KHhyPXt9KSk7dmFyIHByOyhmdW5jdGlvbihlKXtlW2UuTGluZT0xXT0iTGluZSIsZVtlLkJsb2NrPTJdPSJCbG9jayIsZVtlLlVuZGVybGluZT0zXT0iVW5kZXJsaW5lIixlW2UuTGluZVRoaW49NF09IkxpbmVUaGluIixlW2UuQmxvY2tPdXRsaW5lPTVdPSJCbG9ja091dGxpbmUiLGVbZS5VbmRlcmxpbmVUaGluPTZdPSJVbmRlcmxpbmVUaGluIn0pKHByfHwocHI9e30pKTt2YXIgdnI7KGZ1bmN0aW9uKGUpe2VbZS5BbHdheXNHcm93c1doZW5UeXBpbmdBdEVkZ2VzPTBdPSJBbHdheXNHcm93c1doZW5UeXBpbmdBdEVkZ2VzIixlW2UuTmV2ZXJHcm93c1doZW5UeXBpbmdBdEVkZ2VzPTFdPSJOZXZlckdyb3dzV2hlblR5cGluZ0F0RWRnZXMiLGVbZS5Hcm93c09ubHlXaGVuVHlwaW5nQmVmb3JlPTJdPSJHcm93c09ubHlXaGVuVHlwaW5nQmVmb3JlIixlW2UuR3Jvd3NPbmx5V2hlblR5cGluZ0FmdGVyPTNdPSJHcm93c09ubHlXaGVuVHlwaW5nQWZ0ZXIifSkodnJ8fCh2cj17fSkpO3ZhciB3cjsoZnVuY3Rpb24oZSl7ZVtlLk5vbmU9MF09Ik5vbmUiLGVbZS5TYW1lPTFdPSJTYW1lIixlW2UuSW5kZW50PTJdPSJJbmRlbnQiLGVbZS5EZWVwSW5kZW50PTNdPSJEZWVwSW5kZW50In0pKHdyfHwod3I9e30pKTtjbGFzcyBPZXtzdGF0aWMgY2hvcmQodCxuKXtyZXR1cm4gd2kodCxuKX19T2UuQ3RybENtZD0yMDQ4LE9lLlNoaWZ0PTEwMjQsT2UuQWx0PTUxMixPZS5XaW5DdHJsPTI1NjtmdW5jdGlvbiBSaSgpe3JldHVybntlZGl0b3I6dm9pZCAwLGxhbmd1YWdlczp2b2lkIDAsQ2FuY2VsbGF0aW9uVG9rZW5Tb3VyY2U6X2ksRW1pdHRlcjpzZSxLZXlDb2RlOkl0LEtleU1vZDpPZSxQb3NpdGlvbjpKLFJhbmdlOlAsU2VsZWN0aW9uOnRlLFNlbGVjdGlvbkRpcmVjdGlvbjpXdCxNYXJrZXJTZXZlcml0eTpVdCxNYXJrZXJUYWc6SHQsVXJpOk5lLFRva2VuOkFpfX12YXIgTHI7Y2xhc3MgeWl7Y29uc3RydWN0b3IoKXt0aGlzW0xyXT0iTGlua2VkTWFwIix0aGlzLl9tYXA9bmV3IE1hcCx0aGlzLl9oZWFkPXZvaWQgMCx0aGlzLl90YWlsPXZvaWQgMCx0aGlzLl9zaXplPTAsdGhpcy5fc3RhdGU9MH1jbGVhcigpe3RoaXMuX21hcC5jbGVhcigpLHRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwLHRoaXMuX3NpemU9MCx0aGlzLl9zdGF0ZSsrfWlzRW1wdHkoKXtyZXR1cm4hdGhpcy5faGVhZCYmIXRoaXMuX3RhaWx9Z2V0IHNpemUoKXtyZXR1cm4gdGhpcy5fc2l6ZX1nZXQgZmlyc3QoKXt2YXIgdDtyZXR1cm4odD10aGlzLl9oZWFkKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQudmFsdWV9Z2V0IGxhc3QoKXt2YXIgdDtyZXR1cm4odD10aGlzLl90YWlsKT09PW51bGx8fHQ9PT12b2lkIDA/dm9pZCAwOnQudmFsdWV9aGFzKHQpe3JldHVybiB0aGlzLl9tYXAuaGFzKHQpfWdldCh0LG49MCl7Y29uc3Qgcj10aGlzLl9tYXAuZ2V0KHQpO2lmKHIpcmV0dXJuIG4hPT0wJiZ0aGlzLnRvdWNoKHIsbiksci52YWx1ZX1zZXQodCxuLHI9MCl7bGV0IHM9dGhpcy5fbWFwLmdldCh0KTtpZihzKXMudmFsdWU9bixyIT09MCYmdGhpcy50b3VjaChzLHIpO2Vsc2V7c3dpdGNoKHM9e2tleTp0LHZhbHVlOm4sbmV4dDp2b2lkIDAscHJldmlvdXM6dm9pZCAwfSxyKXtjYXNlIDA6dGhpcy5hZGRJdGVtTGFzdChzKTticmVhaztjYXNlIDE6dGhpcy5hZGRJdGVtRmlyc3Qocyk7YnJlYWs7Y2FzZSAyOnRoaXMuYWRkSXRlbUxhc3Qocyk7YnJlYWs7ZGVmYXVsdDp0aGlzLmFkZEl0ZW1MYXN0KHMpO2JyZWFrfXRoaXMuX21hcC5zZXQodCxzKSx0aGlzLl9zaXplKyt9cmV0dXJuIHRoaXN9ZGVsZXRlKHQpe3JldHVybiEhdGhpcy5yZW1vdmUodCl9cmVtb3ZlKHQpe2NvbnN0IG49dGhpcy5fbWFwLmdldCh0KTtpZihuKXJldHVybiB0aGlzLl9tYXAuZGVsZXRlKHQpLHRoaXMucmVtb3ZlSXRlbShuKSx0aGlzLl9zaXplLS0sbi52YWx1ZX1zaGlmdCgpe2lmKCF0aGlzLl9oZWFkJiYhdGhpcy5fdGFpbClyZXR1cm47aWYoIXRoaXMuX2hlYWR8fCF0aGlzLl90YWlsKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7Y29uc3QgdD10aGlzLl9oZWFkO3JldHVybiB0aGlzLl9tYXAuZGVsZXRlKHQua2V5KSx0aGlzLnJlbW92ZUl0ZW0odCksdGhpcy5fc2l6ZS0tLHQudmFsdWV9Zm9yRWFjaCh0LG4pe2NvbnN0IHI9dGhpcy5fc3RhdGU7bGV0IHM9dGhpcy5faGVhZDtmb3IoO3M7KXtpZihuP3QuYmluZChuKShzLnZhbHVlLHMua2V5LHRoaXMpOnQocy52YWx1ZSxzLmtleSx0aGlzKSx0aGlzLl9zdGF0ZSE9PXIpdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7cz1zLm5leHR9fWtleXMoKXtjb25zdCB0PXRoaXMsbj10aGlzLl9zdGF0ZTtsZXQgcj10aGlzLl9oZWFkO2NvbnN0IHM9e1tTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHN9LG5leHQoKXtpZih0Ll9zdGF0ZSE9PW4pdGhyb3cgbmV3IEVycm9yKCJMaW5rZWRNYXAgZ290IG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24uIik7aWYocil7Y29uc3QgaT17dmFsdWU6ci5rZXksZG9uZTohMX07cmV0dXJuIHI9ci5uZXh0LGl9ZWxzZSByZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHN9dmFsdWVzKCl7Y29uc3QgdD10aGlzLG49dGhpcy5fc3RhdGU7bGV0IHI9dGhpcy5faGVhZDtjb25zdCBzPXtbU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiBzfSxuZXh0KCl7aWYodC5fc3RhdGUhPT1uKXRocm93IG5ldyBFcnJvcigiTGlua2VkTWFwIGdvdCBtb2RpZmllZCBkdXJpbmcgaXRlcmF0aW9uLiIpO2lmKHIpe2NvbnN0IGk9e3ZhbHVlOnIudmFsdWUsZG9uZTohMX07cmV0dXJuIHI9ci5uZXh0LGl9ZWxzZSByZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHN9ZW50cmllcygpe2NvbnN0IHQ9dGhpcyxuPXRoaXMuX3N0YXRlO2xldCByPXRoaXMuX2hlYWQ7Y29uc3Qgcz17W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gc30sbmV4dCgpe2lmKHQuX3N0YXRlIT09bil0aHJvdyBuZXcgRXJyb3IoIkxpbmtlZE1hcCBnb3QgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbi4iKTtpZihyKXtjb25zdCBpPXt2YWx1ZTpbci5rZXksci52YWx1ZV0sZG9uZTohMX07cmV0dXJuIHI9ci5uZXh0LGl9ZWxzZSByZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fX07cmV0dXJuIHN9WyhMcj1TeW1ib2wudG9TdHJpbmdUYWcsU3ltYm9sLml0ZXJhdG9yKV0oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9dHJpbU9sZCh0KXtpZih0Pj10aGlzLnNpemUpcmV0dXJuO2lmKHQ9PT0wKXt0aGlzLmNsZWFyKCk7cmV0dXJufWxldCBuPXRoaXMuX2hlYWQscj10aGlzLnNpemU7Zm9yKDtuJiZyPnQ7KXRoaXMuX21hcC5kZWxldGUobi5rZXkpLG49bi5uZXh0LHItLTt0aGlzLl9oZWFkPW4sdGhpcy5fc2l6ZT1yLG4mJihuLnByZXZpb3VzPXZvaWQgMCksdGhpcy5fc3RhdGUrK31hZGRJdGVtRmlyc3QodCl7aWYoIXRoaXMuX2hlYWQmJiF0aGlzLl90YWlsKXRoaXMuX3RhaWw9dDtlbHNlIGlmKHRoaXMuX2hlYWQpdC5uZXh0PXRoaXMuX2hlYWQsdGhpcy5faGVhZC5wcmV2aW91cz10O2Vsc2UgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0aGlzLl9oZWFkPXQsdGhpcy5fc3RhdGUrK31hZGRJdGVtTGFzdCh0KXtpZighdGhpcy5faGVhZCYmIXRoaXMuX3RhaWwpdGhpcy5faGVhZD10O2Vsc2UgaWYodGhpcy5fdGFpbCl0LnByZXZpb3VzPXRoaXMuX3RhaWwsdGhpcy5fdGFpbC5uZXh0PXQ7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO3RoaXMuX3RhaWw9dCx0aGlzLl9zdGF0ZSsrfXJlbW92ZUl0ZW0odCl7aWYodD09PXRoaXMuX2hlYWQmJnQ9PT10aGlzLl90YWlsKXRoaXMuX2hlYWQ9dm9pZCAwLHRoaXMuX3RhaWw9dm9pZCAwO2Vsc2UgaWYodD09PXRoaXMuX2hlYWQpe2lmKCF0Lm5leHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGxpc3QiKTt0Lm5leHQucHJldmlvdXM9dm9pZCAwLHRoaXMuX2hlYWQ9dC5uZXh0fWVsc2UgaWYodD09PXRoaXMuX3RhaWwpe2lmKCF0LnByZXZpb3VzKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7dC5wcmV2aW91cy5uZXh0PXZvaWQgMCx0aGlzLl90YWlsPXQucHJldmlvdXN9ZWxzZXtjb25zdCBuPXQubmV4dCxyPXQucHJldmlvdXM7aWYoIW58fCFyKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBsaXN0Iik7bi5wcmV2aW91cz1yLHIubmV4dD1ufXQubmV4dD12b2lkIDAsdC5wcmV2aW91cz12b2lkIDAsdGhpcy5fc3RhdGUrK310b3VjaCh0LG4pe2lmKCF0aGlzLl9oZWFkfHwhdGhpcy5fdGFpbCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgbGlzdCIpO2lmKCEobiE9PTEmJm4hPT0yKSl7aWYobj09PTEpe2lmKHQ9PT10aGlzLl9oZWFkKXJldHVybjtjb25zdCByPXQubmV4dCxzPXQucHJldmlvdXM7dD09PXRoaXMuX3RhaWw/KHMubmV4dD12b2lkIDAsdGhpcy5fdGFpbD1zKTooci5wcmV2aW91cz1zLHMubmV4dD1yKSx0LnByZXZpb3VzPXZvaWQgMCx0Lm5leHQ9dGhpcy5faGVhZCx0aGlzLl9oZWFkLnByZXZpb3VzPXQsdGhpcy5faGVhZD10LHRoaXMuX3N0YXRlKyt9ZWxzZSBpZihuPT09Mil7aWYodD09PXRoaXMuX3RhaWwpcmV0dXJuO2NvbnN0IHI9dC5uZXh0LHM9dC5wcmV2aW91czt0PT09dGhpcy5faGVhZD8oci5wcmV2aW91cz12b2lkIDAsdGhpcy5faGVhZD1yKTooci5wcmV2aW91cz1zLHMubmV4dD1yKSx0Lm5leHQ9dm9pZCAwLHQucHJldmlvdXM9dGhpcy5fdGFpbCx0aGlzLl90YWlsLm5leHQ9dCx0aGlzLl90YWlsPXQsdGhpcy5fc3RhdGUrK319fXRvSlNPTigpe2NvbnN0IHQ9W107cmV0dXJuIHRoaXMuZm9yRWFjaCgobixyKT0+e3QucHVzaChbcixuXSl9KSx0fWZyb21KU09OKHQpe3RoaXMuY2xlYXIoKTtmb3IoY29uc3RbbixyXW9mIHQpdGhpcy5zZXQobixyKX19Y2xhc3MgRWkgZXh0ZW5kcyB5aXtjb25zdHJ1Y3Rvcih0LG49MSl7c3VwZXIoKSx0aGlzLl9saW1pdD10LHRoaXMuX3JhdGlvPU1hdGgubWluKE1hdGgubWF4KDAsbiksMSl9Z2V0IGxpbWl0KCl7cmV0dXJuIHRoaXMuX2xpbWl0fXNldCBsaW1pdCh0KXt0aGlzLl9saW1pdD10LHRoaXMuY2hlY2tUcmltKCl9Z2V0KHQsbj0yKXtyZXR1cm4gc3VwZXIuZ2V0KHQsbil9cGVlayh0KXtyZXR1cm4gc3VwZXIuZ2V0KHQsMCl9c2V0KHQsbil7cmV0dXJuIHN1cGVyLnNldCh0LG4sMiksdGhpcy5jaGVja1RyaW0oKSx0aGlzfWNoZWNrVHJpbSgpe3RoaXMuc2l6ZT50aGlzLl9saW1pdCYmdGhpcy50cmltT2xkKE1hdGgucm91bmQodGhpcy5fbGltaXQqdGhpcy5fcmF0aW8pKX19Y2xhc3MgTWl7Y29uc3RydWN0b3IoKXt0aGlzLm1hcD1uZXcgTWFwfWFkZCh0LG4pe2xldCByPXRoaXMubWFwLmdldCh0KTtyfHwocj1uZXcgU2V0LHRoaXMubWFwLnNldCh0LHIpKSxyLmFkZChuKX1kZWxldGUodCxuKXtjb25zdCByPXRoaXMubWFwLmdldCh0KTtyJiYoci5kZWxldGUobiksci5zaXplPT09MCYmdGhpcy5tYXAuZGVsZXRlKHQpKX1mb3JFYWNoKHQsbil7Y29uc3Qgcj10aGlzLm1hcC5nZXQodCk7ciYmci5mb3JFYWNoKG4pfWdldCh0KXtjb25zdCBuPXRoaXMubWFwLmdldCh0KTtyZXR1cm4gbnx8bmV3IFNldH19bmV3IEVpKDEwKTt2YXIgTnI7KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD00XT0iUmlnaHQiLGVbZS5GdWxsPTddPSJGdWxsIn0pKE5yfHwoTnI9e30pKTt2YXIgU3I7KGZ1bmN0aW9uKGUpe2VbZS5MZWZ0PTFdPSJMZWZ0IixlW2UuQ2VudGVyPTJdPSJDZW50ZXIiLGVbZS5SaWdodD0zXT0iUmlnaHQifSkoU3J8fChTcj17fSkpO3ZhciBDcjsoZnVuY3Rpb24oZSl7ZVtlLkJvdGg9MF09IkJvdGgiLGVbZS5SaWdodD0xXT0iUmlnaHQiLGVbZS5MZWZ0PTJdPSJMZWZ0IixlW2UuTm9uZT0zXT0iTm9uZSJ9KShDcnx8KENyPXt9KSk7ZnVuY3Rpb24ga2koZSx0LG4scixzKXtpZihyPT09MClyZXR1cm4hMDtjb25zdCBpPXQuY2hhckNvZGVBdChyLTEpO2lmKGUuZ2V0KGkpIT09MHx8aT09PTEzfHxpPT09MTApcmV0dXJuITA7aWYocz4wKXtjb25zdCBsPXQuY2hhckNvZGVBdChyKTtpZihlLmdldChsKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gRmkoZSx0LG4scixzKXtpZihyK3M9PT1uKXJldHVybiEwO2NvbnN0IGk9dC5jaGFyQ29kZUF0KHIrcyk7aWYoZS5nZXQoaSkhPT0wfHxpPT09MTN8fGk9PT0xMClyZXR1cm4hMDtpZihzPjApe2NvbnN0IGw9dC5jaGFyQ29kZUF0KHIrcy0xKTtpZihlLmdldChsKSE9PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gUGkoZSx0LG4scixzKXtyZXR1cm4ga2koZSx0LG4scixzKSYmRmkoZSx0LG4scixzKX1jbGFzcyBEaXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMuX3dvcmRTZXBhcmF0b3JzPXQsdGhpcy5fc2VhcmNoUmVnZXg9bix0aGlzLl9wcmV2TWF0Y2hTdGFydEluZGV4PS0xLHRoaXMuX3ByZXZNYXRjaExlbmd0aD0wfXJlc2V0KHQpe3RoaXMuX3NlYXJjaFJlZ2V4Lmxhc3RJbmRleD10LHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9LTEsdGhpcy5fcHJldk1hdGNoTGVuZ3RoPTB9bmV4dCh0KXtjb25zdCBuPXQubGVuZ3RoO2xldCByO2Rve2lmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgrdGhpcy5fcHJldk1hdGNoTGVuZ3RoPT09bnx8KHI9dGhpcy5fc2VhcmNoUmVnZXguZXhlYyh0KSwhcikpcmV0dXJuIG51bGw7Y29uc3Qgcz1yLmluZGV4LGk9clswXS5sZW5ndGg7aWYocz09PXRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXgmJmk9PT10aGlzLl9wcmV2TWF0Y2hMZW5ndGgpe2lmKGk9PT0wKXtTcyh0LG4sdGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4KT42NTUzNT90aGlzLl9zZWFyY2hSZWdleC5sYXN0SW5kZXgrPTI6dGhpcy5fc2VhcmNoUmVnZXgubGFzdEluZGV4Kz0xO2NvbnRpbnVlfXJldHVybiBudWxsfWlmKHRoaXMuX3ByZXZNYXRjaFN0YXJ0SW5kZXg9cyx0aGlzLl9wcmV2TWF0Y2hMZW5ndGg9aSwhdGhpcy5fd29yZFNlcGFyYXRvcnN8fFBpKHRoaXMuX3dvcmRTZXBhcmF0b3JzLHQsbixzLGkpKXJldHVybiByfXdoaWxlKHIpO3JldHVybiBudWxsfX1mdW5jdGlvbiBUaShlLHQ9IlVucmVhY2hhYmxlIil7dGhyb3cgbmV3IEVycm9yKHQpfWZ1bmN0aW9uIGh0KGUpe2lmKCFlKCkpe2RlYnVnZ2VyO2UoKSxZdChuZXcgY2UoIkFzc2VydGlvbiBGYWlsZWQiKSl9fWZ1bmN0aW9uIEFyKGUsdCl7bGV0IG49MDtmb3IoO248ZS5sZW5ndGgtMTspe2NvbnN0IHI9ZVtuXSxzPWVbbisxXTtpZighdChyLHMpKXJldHVybiExO24rK31yZXR1cm4hMH1jbGFzcyBWaXtzdGF0aWMgY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHQsbixyKXtjb25zdCBzPXI/ci5zdGFydExpbmVOdW1iZXI6MSxpPXI/ci5lbmRMaW5lTnVtYmVyOnQuZ2V0TGluZUNvdW50KCksbD1uZXcgUnIobiksbz1sLmdldENhbmRpZGF0ZUNvZGVQb2ludHMoKTtsZXQgdTtvPT09ImFsbE5vbkJhc2ljQXNjaWkiP3U9bmV3IFJlZ0V4cCgiW15cXHRcXG5cXHJcXHgyMC1cXHg3RV0iLCJnIik6dT1uZXcgUmVnRXhwKGAke0JpKEFycmF5LmZyb20obykpfWAsImciKTtjb25zdCBjPW5ldyBEaShudWxsLHUpLGg9W107bGV0IGY9ITEsZCxtPTAsZz0wLHg9MDtlOmZvcihsZXQgdj1zLE49aTt2PD1OO3YrKyl7Y29uc3QgUz10LmdldExpbmVDb250ZW50KHYpLF89Uy5sZW5ndGg7Yy5yZXNldCgwKTtkbyBpZihkPWMubmV4dChTKSxkKXtsZXQgTD1kLmluZGV4LHA9ZC5pbmRleCtkWzBdLmxlbmd0aDtpZihMPjApe2NvbnN0IEk9Uy5jaGFyQ29kZUF0KEwtMSk7UnQoSSkmJkwtLX1pZihwKzE8Xyl7Y29uc3QgST1TLmNoYXJDb2RlQXQocC0xKTtSdChJKSYmcCsrfWNvbnN0IFI9Uy5zdWJzdHJpbmcoTCxwKTtsZXQgeT1GdChMKzEsdm4sUywwKTt5JiZ5LmVuZENvbHVtbjw9TCsxJiYoeT1udWxsKTtjb25zdCBFPWwuc2hvdWxkSGlnaGxpZ2h0Tm9uQmFzaWNBU0NJSShSLHk/eS53b3JkOm51bGwpO2lmKEUhPT0wKXtpZihFPT09Mz9tKys6RT09PTI/ZysrOkU9PT0xP3grKzpUaSgpLGgubGVuZ3RoPj0xZTMpe2Y9ITA7YnJlYWsgZX1oLnB1c2gobmV3IFAodixMKzEsdixwKzEpKX19d2hpbGUoZCl9cmV0dXJue3JhbmdlczpoLGhhc01vcmU6ZixhbWJpZ3VvdXNDaGFyYWN0ZXJDb3VudDptLGludmlzaWJsZUNoYXJhY3RlckNvdW50Omcsbm9uQmFzaWNBc2NpaUNoYXJhY3RlckNvdW50Onh9fXN0YXRpYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodFJlYXNvbih0LG4pe2NvbnN0IHI9bmV3IFJyKG4pO3N3aXRjaChyLnNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkodCxudWxsKSl7Y2FzZSAwOnJldHVybiBudWxsO2Nhc2UgMjpyZXR1cm57a2luZDoxfTtjYXNlIDM6e2NvbnN0IGk9dC5jb2RlUG9pbnRBdCgwKSxsPXIuYW1iaWd1b3VzQ2hhcmFjdGVycy5nZXRQcmltYXJ5Q29uZnVzYWJsZShpKSxvPUxlLmdldExvY2FsZXMoKS5maWx0ZXIodT0+IUxlLmdldEluc3RhbmNlKG5ldyBTZXQoWy4uLm4uYWxsb3dlZExvY2FsZXMsdV0pKS5pc0FtYmlndW91cyhpKSk7cmV0dXJue2tpbmQ6MCxjb25mdXNhYmxlV2l0aDpTdHJpbmcuZnJvbUNvZGVQb2ludChsKSxub3RBbWJpZ3VvdXNJbkxvY2FsZXM6b319Y2FzZSAxOnJldHVybntraW5kOjJ9fX19ZnVuY3Rpb24gQmkoZSx0KXtyZXR1cm5gWyR7eHMoZS5tYXAocj0+U3RyaW5nLmZyb21Db2RlUG9pbnQocikpLmpvaW4oIiIpKX1dYH1jbGFzcyBScntjb25zdHJ1Y3Rvcih0KXt0aGlzLm9wdGlvbnM9dCx0aGlzLmFsbG93ZWRDb2RlUG9pbnRzPW5ldyBTZXQodC5hbGxvd2VkQ29kZVBvaW50cyksdGhpcy5hbWJpZ3VvdXNDaGFyYWN0ZXJzPUxlLmdldEluc3RhbmNlKG5ldyBTZXQodC5hbGxvd2VkTG9jYWxlcykpfWdldENhbmRpZGF0ZUNvZGVQb2ludHMoKXtpZih0aGlzLm9wdGlvbnMubm9uQmFzaWNBU0NJSSlyZXR1cm4iYWxsTm9uQmFzaWNBc2NpaSI7Y29uc3QgdD1uZXcgU2V0O2lmKHRoaXMub3B0aW9ucy5pbnZpc2libGVDaGFyYWN0ZXJzKWZvcihjb25zdCBuIG9mIGRlLmNvZGVQb2ludHMpeXIoU3RyaW5nLmZyb21Db2RlUG9pbnQobikpfHx0LmFkZChuKTtpZih0aGlzLm9wdGlvbnMuYW1iaWd1b3VzQ2hhcmFjdGVycylmb3IoY29uc3QgbiBvZiB0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuZ2V0Q29uZnVzYWJsZUNvZGVQb2ludHMoKSl0LmFkZChuKTtmb3IoY29uc3QgbiBvZiB0aGlzLmFsbG93ZWRDb2RlUG9pbnRzKXQuZGVsZXRlKG4pO3JldHVybiB0fXNob3VsZEhpZ2hsaWdodE5vbkJhc2ljQVNDSUkodCxuKXtjb25zdCByPXQuY29kZVBvaW50QXQoMCk7aWYodGhpcy5hbGxvd2VkQ29kZVBvaW50cy5oYXMocikpcmV0dXJuIDA7aWYodGhpcy5vcHRpb25zLm5vbkJhc2ljQVNDSUkpcmV0dXJuIDE7bGV0IHM9ITEsaT0hMTtpZihuKWZvcihjb25zdCBsIG9mIG4pe2NvbnN0IG89bC5jb2RlUG9pbnRBdCgwKSx1PUFzKGwpO3M9c3x8dSwhdSYmIXRoaXMuYW1iaWd1b3VzQ2hhcmFjdGVycy5pc0FtYmlndW91cyhvKSYmIWRlLmlzSW52aXNpYmxlQ2hhcmFjdGVyKG8pJiYoaT0hMCl9cmV0dXJuIXMmJmk/MDp0aGlzLm9wdGlvbnMuaW52aXNpYmxlQ2hhcmFjdGVycyYmIXlyKHQpJiZkZS5pc0ludmlzaWJsZUNoYXJhY3RlcihyKT8yOnRoaXMub3B0aW9ucy5hbWJpZ3VvdXNDaGFyYWN0ZXJzJiZ0aGlzLmFtYmlndW91c0NoYXJhY3RlcnMuaXNBbWJpZ3VvdXMocik/MzowfX1mdW5jdGlvbiB5cihlKXtyZXR1cm4gZT09PSIgInx8ZT09PWAKYHx8ZT09PSIJIn1jbGFzcyBmdHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5jaGFuZ2VzPXQsdGhpcy5tb3Zlcz1uLHRoaXMuaGl0VGltZW91dD1yfX1jbGFzcyBxaXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMubGluZVJhbmdlTWFwcGluZz10LHRoaXMuY2hhbmdlcz1ufX1jbGFzcyBWe3N0YXRpYyBhZGRSYW5nZSh0LG4pe2xldCByPTA7Zm9yKDtyPG4ubGVuZ3RoJiZuW3JdLmVuZEV4Y2x1c2l2ZTx0LnN0YXJ0OylyKys7bGV0IHM9cjtmb3IoO3M8bi5sZW5ndGgmJm5bc10uc3RhcnQ8PXQuZW5kRXhjbHVzaXZlOylzKys7aWYocj09PXMpbi5zcGxpY2UociwwLHQpO2Vsc2V7Y29uc3QgaT1NYXRoLm1pbih0LnN0YXJ0LG5bcl0uc3RhcnQpLGw9TWF0aC5tYXgodC5lbmRFeGNsdXNpdmUsbltzLTFdLmVuZEV4Y2x1c2l2ZSk7bi5zcGxpY2UocixzLXIsbmV3IFYoaSxsKSl9fXN0YXRpYyB0cnlDcmVhdGUodCxuKXtpZighKHQ+bikpcmV0dXJuIG5ldyBWKHQsbil9c3RhdGljIG9mTGVuZ3RoKHQpe3JldHVybiBuZXcgVigwLHQpfXN0YXRpYyBvZlN0YXJ0QW5kTGVuZ3RoKHQsbil7cmV0dXJuIG5ldyBWKHQsdCtuKX1jb25zdHJ1Y3Rvcih0LG4pe2lmKHRoaXMuc3RhcnQ9dCx0aGlzLmVuZEV4Y2x1c2l2ZT1uLHQ+bil0aHJvdyBuZXcgY2UoYEludmFsaWQgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApfWdldCBpc0VtcHR5KCl7cmV0dXJuIHRoaXMuc3RhcnQ9PT10aGlzLmVuZEV4Y2x1c2l2ZX1kZWx0YSh0KXtyZXR1cm4gbmV3IFYodGhpcy5zdGFydCt0LHRoaXMuZW5kRXhjbHVzaXZlK3QpfWRlbHRhU3RhcnQodCl7cmV0dXJuIG5ldyBWKHRoaXMuc3RhcnQrdCx0aGlzLmVuZEV4Y2x1c2l2ZSl9ZGVsdGFFbmQodCl7cmV0dXJuIG5ldyBWKHRoaXMuc3RhcnQsdGhpcy5lbmRFeGNsdXNpdmUrdCl9Z2V0IGxlbmd0aCgpe3JldHVybiB0aGlzLmVuZEV4Y2x1c2l2ZS10aGlzLnN0YXJ0fXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnR9LCAke3RoaXMuZW5kRXhjbHVzaXZlfSlgfWNvbnRhaW5zKHQpe3JldHVybiB0aGlzLnN0YXJ0PD10JiZ0PHRoaXMuZW5kRXhjbHVzaXZlfWpvaW4odCl7cmV0dXJuIG5ldyBWKE1hdGgubWluKHRoaXMuc3RhcnQsdC5zdGFydCksTWF0aC5tYXgodGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpKX1pbnRlcnNlY3QodCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0LHQuc3RhcnQpLHI9TWF0aC5taW4odGhpcy5lbmRFeGNsdXNpdmUsdC5lbmRFeGNsdXNpdmUpO2lmKG48PXIpcmV0dXJuIG5ldyBWKG4scil9aW50ZXJzZWN0cyh0KXtjb25zdCBuPU1hdGgubWF4KHRoaXMuc3RhcnQsdC5zdGFydCkscj1NYXRoLm1pbih0aGlzLmVuZEV4Y2x1c2l2ZSx0LmVuZEV4Y2x1c2l2ZSk7cmV0dXJuIG48cn1pc0JlZm9yZSh0KXtyZXR1cm4gdGhpcy5lbmRFeGNsdXNpdmU8PXQuc3RhcnR9aXNBZnRlcih0KXtyZXR1cm4gdGhpcy5zdGFydD49dC5lbmRFeGNsdXNpdmV9c2xpY2UodCl7cmV0dXJuIHQuc2xpY2UodGhpcy5zdGFydCx0aGlzLmVuZEV4Y2x1c2l2ZSl9c3Vic3RyaW5nKHQpe3JldHVybiB0LnN1YnN0cmluZyh0aGlzLnN0YXJ0LHRoaXMuZW5kRXhjbHVzaXZlKX1jbGlwKHQpe2lmKHRoaXMuaXNFbXB0eSl0aHJvdyBuZXcgY2UoYEludmFsaWQgY2xpcHBpbmcgcmFuZ2U6ICR7dGhpcy50b1N0cmluZygpfWApO3JldHVybiBNYXRoLm1heCh0aGlzLnN0YXJ0LE1hdGgubWluKHRoaXMuZW5kRXhjbHVzaXZlLTEsdCkpfWNsaXBDeWNsaWModCl7aWYodGhpcy5pc0VtcHR5KXRocm93IG5ldyBjZShgSW52YWxpZCBjbGlwcGluZyByYW5nZTogJHt0aGlzLnRvU3RyaW5nKCl9YCk7cmV0dXJuIHQ8dGhpcy5zdGFydD90aGlzLmVuZEV4Y2x1c2l2ZS0odGhpcy5zdGFydC10KSV0aGlzLmxlbmd0aDp0Pj10aGlzLmVuZEV4Y2x1c2l2ZT90aGlzLnN0YXJ0Kyh0LXRoaXMuc3RhcnQpJXRoaXMubGVuZ3RoOnR9Zm9yRWFjaCh0KXtmb3IobGV0IG49dGhpcy5zdGFydDtuPHRoaXMuZW5kRXhjbHVzaXZlO24rKyl0KG4pfX1mdW5jdGlvbiBWZShlLHQpe2NvbnN0IG49R2UoZSx0KTtyZXR1cm4gbj09PS0xP3ZvaWQgMDplW25dfWZ1bmN0aW9uIEdlKGUsdCxuPTAscj1lLmxlbmd0aCl7bGV0IHM9bixpPXI7Zm9yKDtzPGk7KXtjb25zdCBsPU1hdGguZmxvb3IoKHMraSkvMik7dChlW2xdKT9zPWwrMTppPWx9cmV0dXJuIHMtMX1mdW5jdGlvbiBJaShlLHQpe2NvbnN0IG49enQoZSx0KTtyZXR1cm4gbj09PWUubGVuZ3RoP3ZvaWQgMDplW25dfWZ1bmN0aW9uIHp0KGUsdCxuPTAscj1lLmxlbmd0aCl7bGV0IHM9bixpPXI7Zm9yKDtzPGk7KXtjb25zdCBsPU1hdGguZmxvb3IoKHMraSkvMik7dChlW2xdKT9pPWw6cz1sKzF9cmV0dXJuIHN9Y2xhc3MgamV7Y29uc3RydWN0b3IodCl7dGhpcy5fYXJyYXk9dCx0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4PTB9ZmluZExhc3RNb25vdG9ub3VzKHQpe2lmKGplLmFzc2VydEludmFyaWFudHMpe2lmKHRoaXMuX3ByZXZGaW5kTGFzdFByZWRpY2F0ZSl7Zm9yKGNvbnN0IHIgb2YgdGhpcy5fYXJyYXkpaWYodGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlKHIpJiYhdChyKSl0aHJvdyBuZXcgRXJyb3IoIk1vbm90b25vdXNBcnJheTogY3VycmVudCBwcmVkaWNhdGUgbXVzdCBiZSB3ZWFrZXIgdGhhbiAob3IgZXF1YWwgdG8pIHRoZSBwcmV2aW91cyBwcmVkaWNhdGUuIil9dGhpcy5fcHJldkZpbmRMYXN0UHJlZGljYXRlPXR9Y29uc3Qgbj1HZSh0aGlzLl9hcnJheSx0LHRoaXMuX2ZpbmRMYXN0TW9ub3Rvbm91c0xhc3RJZHgpO3JldHVybiB0aGlzLl9maW5kTGFzdE1vbm90b25vdXNMYXN0SWR4PW4rMSxuPT09LTE/dm9pZCAwOnRoaXMuX2FycmF5W25dfX1qZS5hc3NlcnRJbnZhcmlhbnRzPSExO2NsYXNzIER7c3RhdGljIGZyb21SYW5nZUluY2x1c2l2ZSh0KXtyZXR1cm4gbmV3IEQodC5zdGFydExpbmVOdW1iZXIsdC5lbmRMaW5lTnVtYmVyKzEpfXN0YXRpYyBqb2luTWFueSh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuW107bGV0IG49bmV3IHVlKHRbMF0uc2xpY2UoKSk7Zm9yKGxldCByPTE7cjx0Lmxlbmd0aDtyKyspbj1uLmdldFVuaW9uKG5ldyB1ZSh0W3JdLnNsaWNlKCkpKTtyZXR1cm4gbi5yYW5nZXN9c3RhdGljIGpvaW4odCl7aWYodC5sZW5ndGg9PT0wKXRocm93IG5ldyBjZSgibGluZVJhbmdlcyBjYW5ub3QgYmUgZW1wdHkiKTtsZXQgbj10WzBdLnN0YXJ0TGluZU51bWJlcixyPXRbMF0uZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtmb3IobGV0IHM9MTtzPHQubGVuZ3RoO3MrKyluPU1hdGgubWluKG4sdFtzXS5zdGFydExpbmVOdW1iZXIpLHI9TWF0aC5tYXgocix0W3NdLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO3JldHVybiBuZXcgRChuLHIpfXN0YXRpYyBvZkxlbmd0aCh0LG4pe3JldHVybiBuZXcgRCh0LHQrbil9c3RhdGljIGRlc2VyaWFsaXplKHQpe3JldHVybiBuZXcgRCh0WzBdLHRbMV0pfWNvbnN0cnVjdG9yKHQsbil7aWYodD5uKXRocm93IG5ldyBjZShgc3RhcnRMaW5lTnVtYmVyICR7dH0gY2Fubm90IGJlIGFmdGVyIGVuZExpbmVOdW1iZXJFeGNsdXNpdmUgJHtufWApO3RoaXMuc3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPW59Y29udGFpbnModCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPD10JiZ0PHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1nZXQgaXNFbXB0eSgpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcj09PXRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX1kZWx0YSh0KXtyZXR1cm4gbmV3IEQodGhpcy5zdGFydExpbmVOdW1iZXIrdCx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrdCl9ZGVsdGFMZW5ndGgodCl7cmV0dXJuIG5ldyBEKHRoaXMuc3RhcnRMaW5lTnVtYmVyLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSt0KX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS10aGlzLnN0YXJ0TGluZU51bWJlcn1qb2luKHQpe3JldHVybiBuZXcgRChNYXRoLm1pbih0aGlzLnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0TGluZU51bWJlciksTWF0aC5tYXgodGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkpfXRvU3RyaW5nKCl7cmV0dXJuYFske3RoaXMuc3RhcnRMaW5lTnVtYmVyfSwke3RoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZX0pYH1pbnRlcnNlY3QodCl7Y29uc3Qgbj1NYXRoLm1heCh0aGlzLnN0YXJ0TGluZU51bWJlcix0LnN0YXJ0TGluZU51bWJlcikscj1NYXRoLm1pbih0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKTtpZihuPD1yKXJldHVybiBuZXcgRChuLHIpfWludGVyc2VjdHNTdHJpY3QodCl7cmV0dXJuIHRoaXMuc3RhcnRMaW5lTnVtYmVyPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmdC5zdGFydExpbmVOdW1iZXI8dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfW92ZXJsYXBPclRvdWNoKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZ0LnN0YXJ0TGluZU51bWJlcjw9dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWVxdWFscyh0KXtyZXR1cm4gdGhpcy5zdGFydExpbmVOdW1iZXI9PT10LnN0YXJ0TGluZU51bWJlciYmdGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXRvSW5jbHVzaXZlUmFuZ2UoKXtyZXR1cm4gdGhpcy5pc0VtcHR5P251bGw6bmV3IFAodGhpcy5zdGFydExpbmVOdW1iZXIsMSx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtMSxOdW1iZXIuTUFYX1NBRkVfSU5URUdFUil9dG9FeGNsdXNpdmVSYW5nZSgpe3JldHVybiBuZXcgUCh0aGlzLnN0YXJ0TGluZU51bWJlciwxLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSwxKX1tYXBUb0xpbmVBcnJheSh0KXtjb25zdCBuPVtdO2ZvcihsZXQgcj10aGlzLnN0YXJ0TGluZU51bWJlcjtyPHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTtyKyspbi5wdXNoKHQocikpO3JldHVybiBufWZvckVhY2godCl7Zm9yKGxldCBuPXRoaXMuc3RhcnRMaW5lTnVtYmVyO248dGhpcy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO24rKyl0KG4pfXNlcmlhbGl6ZSgpe3JldHVyblt0aGlzLnN0YXJ0TGluZU51bWJlcix0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmVdfWluY2x1ZGVzKHQpe3JldHVybiB0aGlzLnN0YXJ0TGluZU51bWJlcjw9dCYmdDx0aGlzLmVuZExpbmVOdW1iZXJFeGNsdXNpdmV9dG9PZmZzZXRSYW5nZSgpe3JldHVybiBuZXcgVih0aGlzLnN0YXJ0TGluZU51bWJlci0xLHRoaXMuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xKX19Y2xhc3MgdWV7Y29uc3RydWN0b3IodD1bXSl7dGhpcy5fbm9ybWFsaXplZFJhbmdlcz10fWdldCByYW5nZXMoKXtyZXR1cm4gdGhpcy5fbm9ybWFsaXplZFJhbmdlc31hZGRSYW5nZSh0KXtpZih0Lmxlbmd0aD09PTApcmV0dXJuO2NvbnN0IG49enQodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxzPT5zLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+PXQuc3RhcnRMaW5lTnVtYmVyKSxyPUdlKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMscz0+cy5zdGFydExpbmVOdW1iZXI8PXQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSkrMTtpZihuPT09cil0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLnNwbGljZShuLDAsdCk7ZWxzZSBpZihuPT09ci0xKXtjb25zdCBzPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl07dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tuXT1zLmpvaW4odCl9ZWxzZXtjb25zdCBzPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbbl0uam9pbih0aGlzLl9ub3JtYWxpemVkUmFuZ2VzW3ItMV0pLmpvaW4odCk7dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5zcGxpY2UobixyLW4scyl9fWNvbnRhaW5zKHQpe2NvbnN0IG49VmUodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxyPT5yLnN0YXJ0TGluZU51bWJlcjw9dCk7cmV0dXJuISFuJiZuLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+dH1pbnRlcnNlY3RzKHQpe2NvbnN0IG49VmUodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxyPT5yLnN0YXJ0TGluZU51bWJlcjx0LmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO3JldHVybiEhbiYmbi5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPnQuc3RhcnRMaW5lTnVtYmVyfWdldFVuaW9uKHQpe2lmKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPT09MClyZXR1cm4gdDtpZih0Ll9ub3JtYWxpemVkUmFuZ2VzLmxlbmd0aD09PTApcmV0dXJuIHRoaXM7Y29uc3Qgbj1bXTtsZXQgcj0wLHM9MCxpPW51bGw7Zm9yKDtyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RofHxzPHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoOyl7bGV0IGw9bnVsbDtpZihyPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoJiZzPHQuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoKXtjb25zdCBvPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0sdT10Ll9ub3JtYWxpemVkUmFuZ2VzW3NdO28uc3RhcnRMaW5lTnVtYmVyPHUuc3RhcnRMaW5lTnVtYmVyPyhsPW8scisrKToobD11LHMrKyl9ZWxzZSByPHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubGVuZ3RoPyhsPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0scisrKToobD10Ll9ub3JtYWxpemVkUmFuZ2VzW3NdLHMrKyk7aT09PW51bGw/aT1sOmkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49bC5zdGFydExpbmVOdW1iZXI/aT1uZXcgRChpLnN0YXJ0TGluZU51bWJlcixNYXRoLm1heChpLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSk6KG4ucHVzaChpKSxpPWwpfXJldHVybiBpIT09bnVsbCYmbi5wdXNoKGkpLG5ldyB1ZShuKX1zdWJ0cmFjdEZyb20odCl7Y29uc3Qgbj16dCh0aGlzLl9ub3JtYWxpemVkUmFuZ2VzLGw9PmwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT49dC5zdGFydExpbmVOdW1iZXIpLHI9R2UodGhpcy5fbm9ybWFsaXplZFJhbmdlcyxsPT5sLnN0YXJ0TGluZU51bWJlcjw9dC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSsxO2lmKG49PT1yKXJldHVybiBuZXcgdWUoW3RdKTtjb25zdCBzPVtdO2xldCBpPXQuc3RhcnRMaW5lTnVtYmVyO2ZvcihsZXQgbD1uO2w8cjtsKyspe2NvbnN0IG89dGhpcy5fbm9ybWFsaXplZFJhbmdlc1tsXTtvLnN0YXJ0TGluZU51bWJlcj5pJiZzLnB1c2gobmV3IEQoaSxvLnN0YXJ0TGluZU51bWJlcikpLGk9by5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfXJldHVybiBpPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmcy5wdXNoKG5ldyBEKGksdC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSksbmV3IHVlKHMpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubWFwKHQ9PnQudG9TdHJpbmcoKSkuam9pbigiLCAiKX1nZXRJbnRlcnNlY3Rpb24odCl7Y29uc3Qgbj1bXTtsZXQgcj0wLHM9MDtmb3IoO3I8dGhpcy5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGgmJnM8dC5fbm9ybWFsaXplZFJhbmdlcy5sZW5ndGg7KXtjb25zdCBpPXRoaXMuX25vcm1hbGl6ZWRSYW5nZXNbcl0sbD10Ll9ub3JtYWxpemVkUmFuZ2VzW3NdLG89aS5pbnRlcnNlY3QobCk7byYmIW8uaXNFbXB0eSYmbi5wdXNoKG8pLGkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU/cisrOnMrK31yZXR1cm4gbmV3IHVlKG4pfWdldFdpdGhEZWx0YSh0KXtyZXR1cm4gbmV3IHVlKHRoaXMuX25vcm1hbGl6ZWRSYW5nZXMubWFwKG49Pm4uZGVsdGEodCkpKX19Y2xhc3MgbGV7c3RhdGljIGludmVyc2UodCxuLHIpe2NvbnN0IHM9W107bGV0IGk9MSxsPTE7Zm9yKGNvbnN0IHUgb2YgdCl7Y29uc3QgYz1uZXcgbGUobmV3IEQoaSx1Lm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlciksbmV3IEQobCx1Lm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpO2MubW9kaWZpZWQuaXNFbXB0eXx8cy5wdXNoKGMpLGk9dS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGw9dS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlfWNvbnN0IG89bmV3IGxlKG5ldyBEKGksbisxKSxuZXcgRChsLHIrMSkpO3JldHVybiBvLm1vZGlmaWVkLmlzRW1wdHl8fHMucHVzaChvKSxzfXN0YXRpYyBjbGlwKHQsbixyKXtjb25zdCBzPVtdO2Zvcihjb25zdCBpIG9mIHQpe2NvbnN0IGw9aS5vcmlnaW5hbC5pbnRlcnNlY3Qobiksbz1pLm1vZGlmaWVkLmludGVyc2VjdChyKTtsJiYhbC5pc0VtcHR5JiZvJiYhby5pc0VtcHR5JiZzLnB1c2gobmV3IGxlKGwsbykpfXJldHVybiBzfWNvbnN0cnVjdG9yKHQsbil7dGhpcy5vcmlnaW5hbD10LHRoaXMubW9kaWZpZWQ9bn10b1N0cmluZygpe3JldHVybmB7JHt0aGlzLm9yaWdpbmFsLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWQudG9TdHJpbmcoKX19YH1mbGlwKCl7cmV0dXJuIG5ldyBsZSh0aGlzLm1vZGlmaWVkLHRoaXMub3JpZ2luYWwpfWpvaW4odCl7cmV0dXJuIG5ldyBsZSh0aGlzLm9yaWdpbmFsLmpvaW4odC5vcmlnaW5hbCksdGhpcy5tb2RpZmllZC5qb2luKHQubW9kaWZpZWQpKX19Y2xhc3MgaGUgZXh0ZW5kcyBsZXtzdGF0aWMgZnJvbVJhbmdlTWFwcGluZ3ModCl7Y29uc3Qgbj1ELmpvaW4odC5tYXAocz0+RC5mcm9tUmFuZ2VJbmNsdXNpdmUocy5vcmlnaW5hbFJhbmdlKSkpLHI9RC5qb2luKHQubWFwKHM9PkQuZnJvbVJhbmdlSW5jbHVzaXZlKHMubW9kaWZpZWRSYW5nZSkpKTtyZXR1cm4gbmV3IGhlKG4scix0KX1jb25zdHJ1Y3Rvcih0LG4scil7c3VwZXIodCxuKSx0aGlzLmlubmVyQ2hhbmdlcz1yfWZsaXAoKXt2YXIgdDtyZXR1cm4gbmV3IGhlKHRoaXMubW9kaWZpZWQsdGhpcy5vcmlnaW5hbCwodD10aGlzLmlubmVyQ2hhbmdlcyk9PT1udWxsfHx0PT09dm9pZCAwP3ZvaWQgMDp0Lm1hcChuPT5uLmZsaXAoKSkpfXdpdGhJbm5lckNoYW5nZXNGcm9tTGluZVJhbmdlcygpe3JldHVybiBuZXcgaGUodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLFtuZXcgQmUodGhpcy5vcmlnaW5hbC50b0V4Y2x1c2l2ZVJhbmdlKCksdGhpcy5tb2RpZmllZC50b0V4Y2x1c2l2ZVJhbmdlKCkpXSl9fWNsYXNzIEJle2NvbnN0cnVjdG9yKHQsbil7dGhpcy5vcmlnaW5hbFJhbmdlPXQsdGhpcy5tb2RpZmllZFJhbmdlPW59dG9TdHJpbmcoKXtyZXR1cm5geyR7dGhpcy5vcmlnaW5hbFJhbmdlLnRvU3RyaW5nKCl9LT4ke3RoaXMubW9kaWZpZWRSYW5nZS50b1N0cmluZygpfX1gfWZsaXAoKXtyZXR1cm4gbmV3IEJlKHRoaXMubW9kaWZpZWRSYW5nZSx0aGlzLm9yaWdpbmFsUmFuZ2UpfX1jb25zdCBVaT0zO2NsYXNzIEhpe2NvbXB1dGVEaWZmKHQsbixyKXt2YXIgcztjb25zdCBsPW5ldyAkaSh0LG4se21heENvbXB1dGF0aW9uVGltZTpyLm1heENvbXB1dGF0aW9uVGltZU1zLHNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlOnIuaWdub3JlVHJpbVdoaXRlc3BhY2Usc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzOiEwLHNob3VsZE1ha2VQcmV0dHlEaWZmOiEwLHNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXM6ITB9KS5jb21wdXRlRGlmZigpLG89W107bGV0IHU9bnVsbDtmb3IoY29uc3QgYyBvZiBsLmNoYW5nZXMpe2xldCBoO2Mub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MD9oPW5ldyBEKGMub3JpZ2luYWxTdGFydExpbmVOdW1iZXIrMSxjLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyKzEpOmg9bmV3IEQoYy5vcmlnaW5hbFN0YXJ0TGluZU51bWJlcixjLm9yaWdpbmFsRW5kTGluZU51bWJlcisxKTtsZXQgZjtjLm1vZGlmaWVkRW5kTGluZU51bWJlcj09PTA/Zj1uZXcgRChjLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyKzEsYy5tb2RpZmllZFN0YXJ0TGluZU51bWJlcisxKTpmPW5ldyBEKGMubW9kaWZpZWRTdGFydExpbmVOdW1iZXIsYy5tb2RpZmllZEVuZExpbmVOdW1iZXIrMSk7bGV0IGQ9bmV3IGhlKGgsZiwocz1jLmNoYXJDaGFuZ2VzKT09PW51bGx8fHM9PT12b2lkIDA/dm9pZCAwOnMubWFwKG09Pm5ldyBCZShuZXcgUChtLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyLG0ub3JpZ2luYWxTdGFydENvbHVtbixtLm9yaWdpbmFsRW5kTGluZU51bWJlcixtLm9yaWdpbmFsRW5kQ29sdW1uKSxuZXcgUChtLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyLG0ubW9kaWZpZWRTdGFydENvbHVtbixtLm1vZGlmaWVkRW5kTGluZU51bWJlcixtLm1vZGlmaWVkRW5kQ29sdW1uKSkpKTt1JiYodS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09ZC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXJ8fHUub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWQub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSYmKGQ9bmV3IGhlKHUub3JpZ2luYWwuam9pbihkLm9yaWdpbmFsKSx1Lm1vZGlmaWVkLmpvaW4oZC5tb2RpZmllZCksdS5pbm5lckNoYW5nZXMmJmQuaW5uZXJDaGFuZ2VzP3UuaW5uZXJDaGFuZ2VzLmNvbmNhdChkLmlubmVyQ2hhbmdlcyk6dm9pZCAwKSxvLnBvcCgpKSxvLnB1c2goZCksdT1kfXJldHVybiBodCgoKT0+QXIobywoYyxoKT0+aC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItYy5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPT09aC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItYy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZjLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8aC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXImJmMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTxoLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlcikpLG5ldyBmdChvLFtdLGwucXVpdEVhcmx5KX19ZnVuY3Rpb24gRXIoZSx0LG4scil7cmV0dXJuIG5ldyBnZShlLHQsbikuQ29tcHV0ZURpZmYocil9bGV0IE1yPWNsYXNze2NvbnN0cnVjdG9yKHQpe2NvbnN0IG49W10scj1bXTtmb3IobGV0IHM9MCxpPXQubGVuZ3RoO3M8aTtzKyspbltzXT0kdCh0W3NdLDEpLHJbc109T3QodFtzXSwxKTt0aGlzLmxpbmVzPXQsdGhpcy5fc3RhcnRDb2x1bW5zPW4sdGhpcy5fZW5kQ29sdW1ucz1yfWdldEVsZW1lbnRzKCl7Y29uc3QgdD1bXTtmb3IobGV0IG49MCxyPXRoaXMubGluZXMubGVuZ3RoO248cjtuKyspdFtuXT10aGlzLmxpbmVzW25dLnN1YnN0cmluZyh0aGlzLl9zdGFydENvbHVtbnNbbl0tMSx0aGlzLl9lbmRDb2x1bW5zW25dLTEpO3JldHVybiB0fWdldFN0cmljdEVsZW1lbnQodCl7cmV0dXJuIHRoaXMubGluZXNbdF19Z2V0U3RhcnRMaW5lTnVtYmVyKHQpe3JldHVybiB0KzF9Z2V0RW5kTGluZU51bWJlcih0KXtyZXR1cm4gdCsxfWNyZWF0ZUNoYXJTZXF1ZW5jZSh0LG4scil7Y29uc3Qgcz1bXSxpPVtdLGw9W107bGV0IG89MDtmb3IobGV0IHU9bjt1PD1yO3UrKyl7Y29uc3QgYz10aGlzLmxpbmVzW3VdLGg9dD90aGlzLl9zdGFydENvbHVtbnNbdV06MSxmPXQ/dGhpcy5fZW5kQ29sdW1uc1t1XTpjLmxlbmd0aCsxO2ZvcihsZXQgZD1oO2Q8ZjtkKyspc1tvXT1jLmNoYXJDb2RlQXQoZC0xKSxpW29dPXUrMSxsW29dPWQsbysrOyF0JiZ1PHImJihzW29dPTEwLGlbb109dSsxLGxbb109Yy5sZW5ndGgrMSxvKyspfXJldHVybiBuZXcgV2kocyxpLGwpfX07Y2xhc3MgV2l7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuX2NoYXJDb2Rlcz10LHRoaXMuX2xpbmVOdW1iZXJzPW4sdGhpcy5fY29sdW1ucz1yfXRvU3RyaW5nKCl7cmV0dXJuIlsiK3RoaXMuX2NoYXJDb2Rlcy5tYXAoKHQsbik9Pih0PT09MTA/IlxcbiI6U3RyaW5nLmZyb21DaGFyQ29kZSh0KSkrYC0oJHt0aGlzLl9saW5lTnVtYmVyc1tuXX0sJHt0aGlzLl9jb2x1bW5zW25dfSlgKS5qb2luKCIsICIpKyJdIn1fYXNzZXJ0SW5kZXgodCxuKXtpZih0PDB8fHQ+PW4ubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBpbmRleCIpfWdldEVsZW1lbnRzKCl7cmV0dXJuIHRoaXMuX2NoYXJDb2Rlc31nZXRTdGFydExpbmVOdW1iZXIodCl7cmV0dXJuIHQ+MCYmdD09PXRoaXMuX2xpbmVOdW1iZXJzLmxlbmd0aD90aGlzLmdldEVuZExpbmVOdW1iZXIodC0xKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9saW5lTnVtYmVycyksdGhpcy5fbGluZU51bWJlcnNbdF0pfWdldEVuZExpbmVOdW1iZXIodCl7cmV0dXJuIHQ9PT0tMT90aGlzLmdldFN0YXJ0TGluZU51bWJlcih0KzEpOih0aGlzLl9hc3NlcnRJbmRleCh0LHRoaXMuX2xpbmVOdW1iZXJzKSx0aGlzLl9jaGFyQ29kZXNbdF09PT0xMD90aGlzLl9saW5lTnVtYmVyc1t0XSsxOnRoaXMuX2xpbmVOdW1iZXJzW3RdKX1nZXRTdGFydENvbHVtbih0KXtyZXR1cm4gdD4wJiZ0PT09dGhpcy5fY29sdW1ucy5sZW5ndGg/dGhpcy5nZXRFbmRDb2x1bW4odC0xKToodGhpcy5fYXNzZXJ0SW5kZXgodCx0aGlzLl9jb2x1bW5zKSx0aGlzLl9jb2x1bW5zW3RdKX1nZXRFbmRDb2x1bW4odCl7cmV0dXJuIHQ9PT0tMT90aGlzLmdldFN0YXJ0Q29sdW1uKHQrMSk6KHRoaXMuX2Fzc2VydEluZGV4KHQsdGhpcy5fY29sdW1ucyksdGhpcy5fY2hhckNvZGVzW3RdPT09MTA/MTp0aGlzLl9jb2x1bW5zW3RdKzEpfX1jbGFzcyBxZXtjb25zdHJ1Y3Rvcih0LG4scixzLGksbCxvLHUpe3RoaXMub3JpZ2luYWxTdGFydExpbmVOdW1iZXI9dCx0aGlzLm9yaWdpbmFsU3RhcnRDb2x1bW49bix0aGlzLm9yaWdpbmFsRW5kTGluZU51bWJlcj1yLHRoaXMub3JpZ2luYWxFbmRDb2x1bW49cyx0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPWksdGhpcy5tb2RpZmllZFN0YXJ0Q29sdW1uPWwsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9byx0aGlzLm1vZGlmaWVkRW5kQ29sdW1uPXV9c3RhdGljIGNyZWF0ZUZyb21EaWZmQ2hhbmdlKHQsbixyKXtjb25zdCBzPW4uZ2V0U3RhcnRMaW5lTnVtYmVyKHQub3JpZ2luYWxTdGFydCksaT1uLmdldFN0YXJ0Q29sdW1uKHQub3JpZ2luYWxTdGFydCksbD1uLmdldEVuZExpbmVOdW1iZXIodC5vcmlnaW5hbFN0YXJ0K3Qub3JpZ2luYWxMZW5ndGgtMSksbz1uLmdldEVuZENvbHVtbih0Lm9yaWdpbmFsU3RhcnQrdC5vcmlnaW5hbExlbmd0aC0xKSx1PXIuZ2V0U3RhcnRMaW5lTnVtYmVyKHQubW9kaWZpZWRTdGFydCksYz1yLmdldFN0YXJ0Q29sdW1uKHQubW9kaWZpZWRTdGFydCksaD1yLmdldEVuZExpbmVOdW1iZXIodC5tb2RpZmllZFN0YXJ0K3QubW9kaWZpZWRMZW5ndGgtMSksZj1yLmdldEVuZENvbHVtbih0Lm1vZGlmaWVkU3RhcnQrdC5tb2RpZmllZExlbmd0aC0xKTtyZXR1cm4gbmV3IHFlKHMsaSxsLG8sdSxjLGgsZil9fWZ1bmN0aW9uIHppKGUpe2lmKGUubGVuZ3RoPD0xKXJldHVybiBlO2NvbnN0IHQ9W2VbMF1dO2xldCBuPXRbMF07Zm9yKGxldCByPTEscz1lLmxlbmd0aDtyPHM7cisrKXtjb25zdCBpPWVbcl0sbD1pLm9yaWdpbmFsU3RhcnQtKG4ub3JpZ2luYWxTdGFydCtuLm9yaWdpbmFsTGVuZ3RoKSxvPWkubW9kaWZpZWRTdGFydC0obi5tb2RpZmllZFN0YXJ0K24ubW9kaWZpZWRMZW5ndGgpO01hdGgubWluKGwsbyk8VWk/KG4ub3JpZ2luYWxMZW5ndGg9aS5vcmlnaW5hbFN0YXJ0K2kub3JpZ2luYWxMZW5ndGgtbi5vcmlnaW5hbFN0YXJ0LG4ubW9kaWZpZWRMZW5ndGg9aS5tb2RpZmllZFN0YXJ0K2kubW9kaWZpZWRMZW5ndGgtbi5tb2RpZmllZFN0YXJ0KToodC5wdXNoKGkpLG49aSl9cmV0dXJuIHR9Y2xhc3MgUWV7Y29uc3RydWN0b3IodCxuLHIscyxpKXt0aGlzLm9yaWdpbmFsU3RhcnRMaW5lTnVtYmVyPXQsdGhpcy5vcmlnaW5hbEVuZExpbmVOdW1iZXI9bix0aGlzLm1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyPXIsdGhpcy5tb2RpZmllZEVuZExpbmVOdW1iZXI9cyx0aGlzLmNoYXJDaGFuZ2VzPWl9c3RhdGljIGNyZWF0ZUZyb21EaWZmUmVzdWx0KHQsbixyLHMsaSxsLG8pe2xldCB1LGMsaCxmLGQ7aWYobi5vcmlnaW5hbExlbmd0aD09PTA/KHU9ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KS0xLGM9MCk6KHU9ci5nZXRTdGFydExpbmVOdW1iZXIobi5vcmlnaW5hbFN0YXJ0KSxjPXIuZ2V0RW5kTGluZU51bWJlcihuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSksbi5tb2RpZmllZExlbmd0aD09PTA/KGg9cy5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KS0xLGY9MCk6KGg9cy5nZXRTdGFydExpbmVOdW1iZXIobi5tb2RpZmllZFN0YXJ0KSxmPXMuZ2V0RW5kTGluZU51bWJlcihuLm1vZGlmaWVkU3RhcnQrbi5tb2RpZmllZExlbmd0aC0xKSksbCYmbi5vcmlnaW5hbExlbmd0aD4wJiZuLm9yaWdpbmFsTGVuZ3RoPDIwJiZuLm1vZGlmaWVkTGVuZ3RoPjAmJm4ubW9kaWZpZWRMZW5ndGg8MjAmJmkoKSl7Y29uc3QgbT1yLmNyZWF0ZUNoYXJTZXF1ZW5jZSh0LG4ub3JpZ2luYWxTdGFydCxuLm9yaWdpbmFsU3RhcnQrbi5vcmlnaW5hbExlbmd0aC0xKSxnPXMuY3JlYXRlQ2hhclNlcXVlbmNlKHQsbi5tb2RpZmllZFN0YXJ0LG4ubW9kaWZpZWRTdGFydCtuLm1vZGlmaWVkTGVuZ3RoLTEpO2lmKG0uZ2V0RWxlbWVudHMoKS5sZW5ndGg+MCYmZy5nZXRFbGVtZW50cygpLmxlbmd0aD4wKXtsZXQgeD1FcihtLGcsaSwhMCkuY2hhbmdlcztvJiYoeD16aSh4KSksZD1bXTtmb3IobGV0IHY9MCxOPXgubGVuZ3RoO3Y8Tjt2KyspZC5wdXNoKHFlLmNyZWF0ZUZyb21EaWZmQ2hhbmdlKHhbdl0sbSxnKSl9fXJldHVybiBuZXcgUWUodSxjLGgsZixkKX19Y2xhc3MgJGl7Y29uc3RydWN0b3IodCxuLHIpe3RoaXMuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzPXIuc2hvdWxkQ29tcHV0ZUNoYXJDaGFuZ2VzLHRoaXMuc2hvdWxkUG9zdFByb2Nlc3NDaGFyQ2hhbmdlcz1yLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZT1yLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLHRoaXMuc2hvdWxkTWFrZVByZXR0eURpZmY9ci5zaG91bGRNYWtlUHJldHR5RGlmZix0aGlzLm9yaWdpbmFsTGluZXM9dCx0aGlzLm1vZGlmaWVkTGluZXM9bix0aGlzLm9yaWdpbmFsPW5ldyBNcih0KSx0aGlzLm1vZGlmaWVkPW5ldyBNcihuKSx0aGlzLmNvbnRpbnVlTGluZURpZmY9a3Ioci5tYXhDb21wdXRhdGlvblRpbWUpLHRoaXMuY29udGludWVDaGFyRGlmZj1rcihyLm1heENvbXB1dGF0aW9uVGltZT09PTA/MDpNYXRoLm1pbihyLm1heENvbXB1dGF0aW9uVGltZSw1ZTMpKX1jb21wdXRlRGlmZigpe2lmKHRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoPT09MSYmdGhpcy5vcmlnaW5hbC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybiB0aGlzLm1vZGlmaWVkLmxpbmVzLmxlbmd0aD09PTEmJnRoaXMubW9kaWZpZWQubGluZXNbMF0ubGVuZ3RoPT09MD97cXVpdEVhcmx5OiExLGNoYW5nZXM6W119OntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOjEsbW9kaWZpZWRTdGFydExpbmVOdW1iZXI6MSxtb2RpZmllZEVuZExpbmVOdW1iZXI6dGhpcy5tb2RpZmllZC5saW5lcy5sZW5ndGgsY2hhckNoYW5nZXM6dm9pZCAwfV19O2lmKHRoaXMubW9kaWZpZWQubGluZXMubGVuZ3RoPT09MSYmdGhpcy5tb2RpZmllZC5saW5lc1swXS5sZW5ndGg9PT0wKXJldHVybntxdWl0RWFybHk6ITEsY2hhbmdlczpbe29yaWdpbmFsU3RhcnRMaW5lTnVtYmVyOjEsb3JpZ2luYWxFbmRMaW5lTnVtYmVyOnRoaXMub3JpZ2luYWwubGluZXMubGVuZ3RoLG1vZGlmaWVkU3RhcnRMaW5lTnVtYmVyOjEsbW9kaWZpZWRFbmRMaW5lTnVtYmVyOjEsY2hhckNoYW5nZXM6dm9pZCAwfV19O2NvbnN0IHQ9RXIodGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVMaW5lRGlmZix0aGlzLnNob3VsZE1ha2VQcmV0dHlEaWZmKSxuPXQuY2hhbmdlcyxyPXQucXVpdEVhcmx5O2lmKHRoaXMuc2hvdWxkSWdub3JlVHJpbVdoaXRlc3BhY2Upe2NvbnN0IG89W107Zm9yKGxldCB1PTAsYz1uLmxlbmd0aDt1PGM7dSsrKW8ucHVzaChRZS5jcmVhdGVGcm9tRGlmZlJlc3VsdCh0aGlzLnNob3VsZElnbm9yZVRyaW1XaGl0ZXNwYWNlLG5bdV0sdGhpcy5vcmlnaW5hbCx0aGlzLm1vZGlmaWVkLHRoaXMuY29udGludWVDaGFyRGlmZix0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyx0aGlzLnNob3VsZFBvc3RQcm9jZXNzQ2hhckNoYW5nZXMpKTtyZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczpvfX1jb25zdCBzPVtdO2xldCBpPTAsbD0wO2ZvcihsZXQgbz0tMSx1PW4ubGVuZ3RoO288dTtvKyspe2NvbnN0IGM9bysxPHU/bltvKzFdOm51bGwsaD1jP2Mub3JpZ2luYWxTdGFydDp0aGlzLm9yaWdpbmFsTGluZXMubGVuZ3RoLGY9Yz9jLm1vZGlmaWVkU3RhcnQ6dGhpcy5tb2RpZmllZExpbmVzLmxlbmd0aDtmb3IoO2k8aCYmbDxmOyl7Y29uc3QgZD10aGlzLm9yaWdpbmFsTGluZXNbaV0sbT10aGlzLm1vZGlmaWVkTGluZXNbbF07aWYoZCE9PW0pe3tsZXQgZz0kdChkLDEpLHg9JHQobSwxKTtmb3IoO2c+MSYmeD4xOyl7Y29uc3Qgdj1kLmNoYXJDb2RlQXQoZy0yKSxOPW0uY2hhckNvZGVBdCh4LTIpO2lmKHYhPT1OKWJyZWFrO2ctLSx4LS19KGc+MXx8eD4xKSYmdGhpcy5fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZShzLGkrMSwxLGcsbCsxLDEseCl9e2xldCBnPU90KGQsMSkseD1PdChtLDEpO2NvbnN0IHY9ZC5sZW5ndGgrMSxOPW0ubGVuZ3RoKzE7Zm9yKDtnPHYmJng8Tjspe2NvbnN0IFM9ZC5jaGFyQ29kZUF0KGctMSksXz1kLmNoYXJDb2RlQXQoeC0xKTtpZihTIT09XylicmVhaztnKysseCsrfShnPHZ8fHg8TikmJnRoaXMuX3B1c2hUcmltV2hpdGVzcGFjZUNoYXJDaGFuZ2UocyxpKzEsZyx2LGwrMSx4LE4pfX1pKyssbCsrfWMmJihzLnB1c2goUWUuY3JlYXRlRnJvbURpZmZSZXN1bHQodGhpcy5zaG91bGRJZ25vcmVUcmltV2hpdGVzcGFjZSxjLHRoaXMub3JpZ2luYWwsdGhpcy5tb2RpZmllZCx0aGlzLmNvbnRpbnVlQ2hhckRpZmYsdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMsdGhpcy5zaG91bGRQb3N0UHJvY2Vzc0NoYXJDaGFuZ2VzKSksaSs9Yy5vcmlnaW5hbExlbmd0aCxsKz1jLm1vZGlmaWVkTGVuZ3RoKX1yZXR1cm57cXVpdEVhcmx5OnIsY2hhbmdlczpzfX1fcHVzaFRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixzLGksbCxvKXtpZih0aGlzLl9tZXJnZVRyaW1XaGl0ZXNwYWNlQ2hhckNoYW5nZSh0LG4scixzLGksbCxvKSlyZXR1cm47bGV0IHU7dGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJih1PVtuZXcgcWUobixyLG4scyxpLGwsaSxvKV0pLHQucHVzaChuZXcgUWUobixuLGksaSx1KSl9X21lcmdlVHJpbVdoaXRlc3BhY2VDaGFyQ2hhbmdlKHQsbixyLHMsaSxsLG8pe2NvbnN0IHU9dC5sZW5ndGg7aWYodT09PTApcmV0dXJuITE7Y29uc3QgYz10W3UtMV07cmV0dXJuIGMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09MHx8Yy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT0wPyExOmMub3JpZ2luYWxFbmRMaW5lTnVtYmVyPT09biYmYy5tb2RpZmllZEVuZExpbmVOdW1iZXI9PT1pPyh0aGlzLnNob3VsZENvbXB1dGVDaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcyYmYy5jaGFyQ2hhbmdlcy5wdXNoKG5ldyBxZShuLHIsbixzLGksbCxpLG8pKSwhMCk6Yy5vcmlnaW5hbEVuZExpbmVOdW1iZXIrMT09PW4mJmMubW9kaWZpZWRFbmRMaW5lTnVtYmVyKzE9PT1pPyhjLm9yaWdpbmFsRW5kTGluZU51bWJlcj1uLGMubW9kaWZpZWRFbmRMaW5lTnVtYmVyPWksdGhpcy5zaG91bGRDb21wdXRlQ2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMmJmMuY2hhckNoYW5nZXMucHVzaChuZXcgcWUobixyLG4scyxpLGwsaSxvKSksITApOiExfX1mdW5jdGlvbiAkdChlLHQpe2NvbnN0IG49dnMoZSk7cmV0dXJuIG49PT0tMT90Om4rMX1mdW5jdGlvbiBPdChlLHQpe2NvbnN0IG49d3MoZSk7cmV0dXJuIG49PT0tMT90Om4rMn1mdW5jdGlvbiBrcihlKXtpZihlPT09MClyZXR1cm4oKT0+ITA7Y29uc3QgdD1EYXRlLm5vdygpO3JldHVybigpPT5EYXRlLm5vdygpLXQ8ZX1jbGFzcyBmZXtzdGF0aWMgdHJpdmlhbCh0LG4pe3JldHVybiBuZXcgZmUoW25ldyB6KFYub2ZMZW5ndGgodC5sZW5ndGgpLFYub2ZMZW5ndGgobi5sZW5ndGgpKV0sITEpfXN0YXRpYyB0cml2aWFsVGltZWRPdXQodCxuKXtyZXR1cm4gbmV3IGZlKFtuZXcgeihWLm9mTGVuZ3RoKHQubGVuZ3RoKSxWLm9mTGVuZ3RoKG4ubGVuZ3RoKSldLCEwKX1jb25zdHJ1Y3Rvcih0LG4pe3RoaXMuZGlmZnM9dCx0aGlzLmhpdFRpbWVvdXQ9bn19Y2xhc3MgentzdGF0aWMgaW52ZXJ0KHQsbil7Y29uc3Qgcj1bXTtyZXR1cm4gbmkodCwocyxpKT0+e3IucHVzaCh6LmZyb21PZmZzZXRQYWlycyhzP3MuZ2V0RW5kRXhjbHVzaXZlcygpOm5lLnplcm8saT9pLmdldFN0YXJ0cygpOm5ldyBuZShuLChzP3Muc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1zLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU6MCkrbikpKX0pLHJ9c3RhdGljIGZyb21PZmZzZXRQYWlycyh0LG4pe3JldHVybiBuZXcgeihuZXcgVih0Lm9mZnNldDEsbi5vZmZzZXQxKSxuZXcgVih0Lm9mZnNldDIsbi5vZmZzZXQyKSl9Y29uc3RydWN0b3IodCxuKXt0aGlzLnNlcTFSYW5nZT10LHRoaXMuc2VxMlJhbmdlPW59c3dhcCgpe3JldHVybiBuZXcgeih0aGlzLnNlcTJSYW5nZSx0aGlzLnNlcTFSYW5nZSl9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnNlcTFSYW5nZX0gPC0+ICR7dGhpcy5zZXEyUmFuZ2V9YH1qb2luKHQpe3JldHVybiBuZXcgeih0aGlzLnNlcTFSYW5nZS5qb2luKHQuc2VxMVJhbmdlKSx0aGlzLnNlcTJSYW5nZS5qb2luKHQuc2VxMlJhbmdlKSl9ZGVsdGEodCl7cmV0dXJuIHQ9PT0wP3RoaXM6bmV3IHoodGhpcy5zZXExUmFuZ2UuZGVsdGEodCksdGhpcy5zZXEyUmFuZ2UuZGVsdGEodCkpfWRlbHRhU3RhcnQodCl7cmV0dXJuIHQ9PT0wP3RoaXM6bmV3IHoodGhpcy5zZXExUmFuZ2UuZGVsdGFTdGFydCh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YVN0YXJ0KHQpKX1kZWx0YUVuZCh0KXtyZXR1cm4gdD09PTA/dGhpczpuZXcgeih0aGlzLnNlcTFSYW5nZS5kZWx0YUVuZCh0KSx0aGlzLnNlcTJSYW5nZS5kZWx0YUVuZCh0KSl9aW50ZXJzZWN0KHQpe2NvbnN0IG49dGhpcy5zZXExUmFuZ2UuaW50ZXJzZWN0KHQuc2VxMVJhbmdlKSxyPXRoaXMuc2VxMlJhbmdlLmludGVyc2VjdCh0LnNlcTJSYW5nZSk7aWYoISghbnx8IXIpKXJldHVybiBuZXcgeihuLHIpfWdldFN0YXJ0cygpe3JldHVybiBuZXcgbmUodGhpcy5zZXExUmFuZ2Uuc3RhcnQsdGhpcy5zZXEyUmFuZ2Uuc3RhcnQpfWdldEVuZEV4Y2x1c2l2ZXMoKXtyZXR1cm4gbmV3IG5lKHRoaXMuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSx0aGlzLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUpfX1jbGFzcyBuZXtjb25zdHJ1Y3Rvcih0LG4pe3RoaXMub2Zmc2V0MT10LHRoaXMub2Zmc2V0Mj1ufXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5vZmZzZXQxfSA8LT4gJHt0aGlzLm9mZnNldDJ9YH1kZWx0YSh0KXtyZXR1cm4gdD09PTA/dGhpczpuZXcgbmUodGhpcy5vZmZzZXQxK3QsdGhpcy5vZmZzZXQyK3QpfWVxdWFscyh0KXtyZXR1cm4gdGhpcy5vZmZzZXQxPT09dC5vZmZzZXQxJiZ0aGlzLm9mZnNldDI9PT10Lm9mZnNldDJ9fW5lLnplcm89bmV3IG5lKDAsMCksbmUubWF4PW5ldyBuZShOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7Y2xhc3MgWGV7aXNWYWxpZCgpe3JldHVybiEwfX1YZS5pbnN0YW5jZT1uZXcgWGU7Y2xhc3MgT2l7Y29uc3RydWN0b3IodCl7aWYodGhpcy50aW1lb3V0PXQsdGhpcy5zdGFydFRpbWU9RGF0ZS5ub3coKSx0aGlzLnZhbGlkPSEwLHQ8PTApdGhyb3cgbmV3IGNlKCJ0aW1lb3V0IG11c3QgYmUgcG9zaXRpdmUiKX1pc1ZhbGlkKCl7aWYoIShEYXRlLm5vdygpLXRoaXMuc3RhcnRUaW1lPHRoaXMudGltZW91dCkmJnRoaXMudmFsaWQpe3RoaXMudmFsaWQ9ITE7ZGVidWdnZXJ9cmV0dXJuIHRoaXMudmFsaWR9fWNsYXNzIEd0e2NvbnN0cnVjdG9yKHQsbil7dGhpcy53aWR0aD10LHRoaXMuaGVpZ2h0PW4sdGhpcy5hcnJheT1bXSx0aGlzLmFycmF5PW5ldyBBcnJheSh0Km4pfWdldCh0LG4pe3JldHVybiB0aGlzLmFycmF5W3Qrbip0aGlzLndpZHRoXX1zZXQodCxuLHIpe3RoaXMuYXJyYXlbdCtuKnRoaXMud2lkdGhdPXJ9fWZ1bmN0aW9uIGp0KGUpe3JldHVybiBlPT09MzJ8fGU9PT05fWNsYXNzIElle3N0YXRpYyBnZXRLZXkodCl7bGV0IG49dGhpcy5jaHJLZXlzLmdldCh0KTtyZXR1cm4gbj09PXZvaWQgMCYmKG49dGhpcy5jaHJLZXlzLnNpemUsdGhpcy5jaHJLZXlzLnNldCh0LG4pKSxufWNvbnN0cnVjdG9yKHQsbixyKXt0aGlzLnJhbmdlPXQsdGhpcy5saW5lcz1uLHRoaXMuc291cmNlPXIsdGhpcy5oaXN0b2dyYW09W107bGV0IHM9MDtmb3IobGV0IGk9dC5zdGFydExpbmVOdW1iZXItMTtpPHQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS0xO2krKyl7Y29uc3QgbD1uW2ldO2ZvcihsZXQgdT0wO3U8bC5sZW5ndGg7dSsrKXtzKys7Y29uc3QgYz1sW3VdLGg9SWUuZ2V0S2V5KGMpO3RoaXMuaGlzdG9ncmFtW2hdPSh0aGlzLmhpc3RvZ3JhbVtoXXx8MCkrMX1zKys7Y29uc3Qgbz1JZS5nZXRLZXkoYApgKTt0aGlzLmhpc3RvZ3JhbVtvXT0odGhpcy5oaXN0b2dyYW1bb118fDApKzF9dGhpcy50b3RhbENvdW50PXN9Y29tcHV0ZVNpbWlsYXJpdHkodCl7dmFyIG4scjtsZXQgcz0wO2NvbnN0IGk9TWF0aC5tYXgodGhpcy5oaXN0b2dyYW0ubGVuZ3RoLHQuaGlzdG9ncmFtLmxlbmd0aCk7Zm9yKGxldCBsPTA7bDxpO2wrKylzKz1NYXRoLmFicygoKG49dGhpcy5oaXN0b2dyYW1bbF0pIT09bnVsbCYmbiE9PXZvaWQgMD9uOjApLSgocj10Lmhpc3RvZ3JhbVtsXSkhPT1udWxsJiZyIT09dm9pZCAwP3I6MCkpO3JldHVybiAxLXMvKHRoaXMudG90YWxDb3VudCt0LnRvdGFsQ291bnQpfX1JZS5jaHJLZXlzPW5ldyBNYXA7Y2xhc3MgR2l7Y29tcHV0ZSh0LG4scj1YZS5pbnN0YW5jZSxzKXtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gZmUudHJpdmlhbCh0LG4pO2NvbnN0IGk9bmV3IEd0KHQubGVuZ3RoLG4ubGVuZ3RoKSxsPW5ldyBHdCh0Lmxlbmd0aCxuLmxlbmd0aCksbz1uZXcgR3QodC5sZW5ndGgsbi5sZW5ndGgpO2ZvcihsZXQgZz0wO2c8dC5sZW5ndGg7ZysrKWZvcihsZXQgeD0wO3g8bi5sZW5ndGg7eCsrKXtpZighci5pc1ZhbGlkKCkpcmV0dXJuIGZlLnRyaXZpYWxUaW1lZE91dCh0LG4pO2NvbnN0IHY9Zz09PTA/MDppLmdldChnLTEseCksTj14PT09MD8wOmkuZ2V0KGcseC0xKTtsZXQgUzt0LmdldEVsZW1lbnQoZyk9PT1uLmdldEVsZW1lbnQoeCk/KGc9PT0wfHx4PT09MD9TPTA6Uz1pLmdldChnLTEseC0xKSxnPjAmJng+MCYmbC5nZXQoZy0xLHgtMSk9PT0zJiYoUys9by5nZXQoZy0xLHgtMSkpLFMrPXM/cyhnLHgpOjEpOlM9LTE7Y29uc3QgXz1NYXRoLm1heCh2LE4sUyk7aWYoXz09PVMpe2NvbnN0IEw9Zz4wJiZ4PjA/by5nZXQoZy0xLHgtMSk6MDtvLnNldChnLHgsTCsxKSxsLnNldChnLHgsMyl9ZWxzZSBfPT09dj8oby5zZXQoZyx4LDApLGwuc2V0KGcseCwxKSk6Xz09PU4mJihvLnNldChnLHgsMCksbC5zZXQoZyx4LDIpKTtpLnNldChnLHgsXyl9Y29uc3QgdT1bXTtsZXQgYz10Lmxlbmd0aCxoPW4ubGVuZ3RoO2Z1bmN0aW9uIGYoZyx4KXsoZysxIT09Y3x8eCsxIT09aCkmJnUucHVzaChuZXcgeihuZXcgVihnKzEsYyksbmV3IFYoeCsxLGgpKSksYz1nLGg9eH1sZXQgZD10Lmxlbmd0aC0xLG09bi5sZW5ndGgtMTtmb3IoO2Q+PTAmJm0+PTA7KWwuZ2V0KGQsbSk9PT0zPyhmKGQsbSksZC0tLG0tLSk6bC5nZXQoZCxtKT09PTE/ZC0tOm0tLTtyZXR1cm4gZigtMSwtMSksdS5yZXZlcnNlKCksbmV3IGZlKHUsITEpfX1jbGFzcyBGcntjb21wdXRlKHQsbixyPVhlLmluc3RhbmNlKXtpZih0Lmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MClyZXR1cm4gZmUudHJpdmlhbCh0LG4pO2NvbnN0IHM9dCxpPW47ZnVuY3Rpb24gbCh4LHYpe2Zvcig7eDxzLmxlbmd0aCYmdjxpLmxlbmd0aCYmcy5nZXRFbGVtZW50KHgpPT09aS5nZXRFbGVtZW50KHYpOyl4KyssdisrO3JldHVybiB4fWxldCBvPTA7Y29uc3QgdT1uZXcgamk7dS5zZXQoMCxsKDAsMCkpO2NvbnN0IGM9bmV3IFFpO2Muc2V0KDAsdS5nZXQoMCk9PT0wP251bGw6bmV3IFByKG51bGwsMCwwLHUuZ2V0KDApKSk7bGV0IGg9MDtlOmZvcig7Oyl7aWYobysrLCFyLmlzVmFsaWQoKSlyZXR1cm4gZmUudHJpdmlhbFRpbWVkT3V0KHMsaSk7Y29uc3QgeD0tTWF0aC5taW4obyxpLmxlbmd0aCtvJTIpLHY9TWF0aC5taW4obyxzLmxlbmd0aCtvJTIpO2ZvcihoPXg7aDw9djtoKz0yKXtjb25zdCBOPWg9PT12Py0xOnUuZ2V0KGgrMSksUz1oPT09eD8tMTp1LmdldChoLTEpKzEsXz1NYXRoLm1pbihNYXRoLm1heChOLFMpLHMubGVuZ3RoKSxMPV8taDtpZihfPnMubGVuZ3RofHxMPmkubGVuZ3RoKWNvbnRpbnVlO2NvbnN0IHA9bChfLEwpO3Uuc2V0KGgscCk7Y29uc3QgUj1fPT09Tj9jLmdldChoKzEpOmMuZ2V0KGgtMSk7aWYoYy5zZXQoaCxwIT09Xz9uZXcgUHIoUixfLEwscC1fKTpSKSx1LmdldChoKT09PXMubGVuZ3RoJiZ1LmdldChoKS1oPT09aS5sZW5ndGgpYnJlYWsgZX19bGV0IGY9Yy5nZXQoaCk7Y29uc3QgZD1bXTtsZXQgbT1zLmxlbmd0aCxnPWkubGVuZ3RoO2Zvcig7Oyl7Y29uc3QgeD1mP2YueCtmLmxlbmd0aDowLHY9Zj9mLnkrZi5sZW5ndGg6MDtpZigoeCE9PW18fHYhPT1nKSYmZC5wdXNoKG5ldyB6KG5ldyBWKHgsbSksbmV3IFYodixnKSkpLCFmKWJyZWFrO209Zi54LGc9Zi55LGY9Zi5wcmV2fXJldHVybiBkLnJldmVyc2UoKSxuZXcgZmUoZCwhMSl9fWNsYXNzIFBye2NvbnN0cnVjdG9yKHQsbixyLHMpe3RoaXMucHJldj10LHRoaXMueD1uLHRoaXMueT1yLHRoaXMubGVuZ3RoPXN9fWNsYXNzIGppe2NvbnN0cnVjdG9yKCl7dGhpcy5wb3NpdGl2ZUFycj1uZXcgSW50MzJBcnJheSgxMCksdGhpcy5uZWdhdGl2ZUFycj1uZXcgSW50MzJBcnJheSgxMCl9Z2V0KHQpe3JldHVybiB0PDA/KHQ9LXQtMSx0aGlzLm5lZ2F0aXZlQXJyW3RdKTp0aGlzLnBvc2l0aXZlQXJyW3RdfXNldCh0LG4pe2lmKHQ8MCl7aWYodD0tdC0xLHQ+PXRoaXMubmVnYXRpdmVBcnIubGVuZ3RoKXtjb25zdCByPXRoaXMubmVnYXRpdmVBcnI7dGhpcy5uZWdhdGl2ZUFycj1uZXcgSW50MzJBcnJheShyLmxlbmd0aCoyKSx0aGlzLm5lZ2F0aXZlQXJyLnNldChyKX10aGlzLm5lZ2F0aXZlQXJyW3RdPW59ZWxzZXtpZih0Pj10aGlzLnBvc2l0aXZlQXJyLmxlbmd0aCl7Y29uc3Qgcj10aGlzLnBvc2l0aXZlQXJyO3RoaXMucG9zaXRpdmVBcnI9bmV3IEludDMyQXJyYXkoci5sZW5ndGgqMiksdGhpcy5wb3NpdGl2ZUFyci5zZXQocil9dGhpcy5wb3NpdGl2ZUFyclt0XT1ufX19Y2xhc3MgUWl7Y29uc3RydWN0b3IoKXt0aGlzLnBvc2l0aXZlQXJyPVtdLHRoaXMubmVnYXRpdmVBcnI9W119Z2V0KHQpe3JldHVybiB0PDA/KHQ9LXQtMSx0aGlzLm5lZ2F0aXZlQXJyW3RdKTp0aGlzLnBvc2l0aXZlQXJyW3RdfXNldCh0LG4pe3Q8MD8odD0tdC0xLHRoaXMubmVnYXRpdmVBcnJbdF09bik6dGhpcy5wb3NpdGl2ZUFyclt0XT1ufX1jbGFzcyBkdHtjb25zdHJ1Y3Rvcih0LG4scil7dGhpcy5saW5lcz10LHRoaXMuY29uc2lkZXJXaGl0ZXNwYWNlQ2hhbmdlcz1yLHRoaXMuZWxlbWVudHM9W10sdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmU9W10sdGhpcy5hZGRpdGlvbmFsT2Zmc2V0QnlMaW5lPVtdO2xldCBzPSExO24uc3RhcnQ+MCYmbi5lbmRFeGNsdXNpdmU+PXQubGVuZ3RoJiYobj1uZXcgVihuLnN0YXJ0LTEsbi5lbmRFeGNsdXNpdmUpLHM9ITApLHRoaXMubGluZVJhbmdlPW4sdGhpcy5maXJzdENoYXJPZmZzZXRCeUxpbmVbMF09MDtmb3IobGV0IGk9dGhpcy5saW5lUmFuZ2Uuc3RhcnQ7aTx0aGlzLmxpbmVSYW5nZS5lbmRFeGNsdXNpdmU7aSsrKXtsZXQgbD10W2ldLG89MDtpZihzKW89bC5sZW5ndGgsbD0iIixzPSExO2Vsc2UgaWYoIXIpe2NvbnN0IHU9bC50cmltU3RhcnQoKTtvPWwubGVuZ3RoLXUubGVuZ3RoLGw9dS50cmltRW5kKCl9dGhpcy5hZGRpdGlvbmFsT2Zmc2V0QnlMaW5lLnB1c2gobyk7Zm9yKGxldCB1PTA7dTxsLmxlbmd0aDt1KyspdGhpcy5lbGVtZW50cy5wdXNoKGwuY2hhckNvZGVBdCh1KSk7aTx0Lmxlbmd0aC0xJiYodGhpcy5lbGVtZW50cy5wdXNoKDEwKSx0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZVtpLXRoaXMubGluZVJhbmdlLnN0YXJ0KzFdPXRoaXMuZWxlbWVudHMubGVuZ3RoKX10aGlzLmFkZGl0aW9uYWxPZmZzZXRCeUxpbmUucHVzaCgwKX10b1N0cmluZygpe3JldHVybmBTbGljZTogIiR7dGhpcy50ZXh0fSJgfWdldCB0ZXh0KCl7cmV0dXJuIHRoaXMuZ2V0VGV4dChuZXcgVigwLHRoaXMubGVuZ3RoKSl9Z2V0VGV4dCh0KXtyZXR1cm4gdGhpcy5lbGVtZW50cy5zbGljZSh0LnN0YXJ0LHQuZW5kRXhjbHVzaXZlKS5tYXAobj0+U3RyaW5nLmZyb21DaGFyQ29kZShuKSkuam9pbigiIil9Z2V0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy5lbGVtZW50c1t0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuZWxlbWVudHMubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUodCl7Y29uc3Qgbj1Ucih0PjA/dGhpcy5lbGVtZW50c1t0LTFdOi0xKSxyPVRyKHQ8dGhpcy5lbGVtZW50cy5sZW5ndGg/dGhpcy5lbGVtZW50c1t0XTotMSk7aWYobj09PTcmJnI9PT04KXJldHVybiAwO2lmKG49PT04KXJldHVybiAxNTA7bGV0IHM9MDtyZXR1cm4gbiE9PXImJihzKz0xMCxuPT09MCYmcj09PTEmJihzKz0xKSkscys9RHIobikscys9RHIociksc310cmFuc2xhdGVPZmZzZXQodCl7aWYodGhpcy5saW5lUmFuZ2UuaXNFbXB0eSlyZXR1cm4gbmV3IEoodGhpcy5saW5lUmFuZ2Uuc3RhcnQrMSwxKTtjb25zdCBuPUdlKHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lLHI9PnI8PXQpO3JldHVybiBuZXcgSih0aGlzLmxpbmVSYW5nZS5zdGFydCtuKzEsdC10aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZVtuXSt0aGlzLmFkZGl0aW9uYWxPZmZzZXRCeUxpbmVbbl0rMSl9dHJhbnNsYXRlUmFuZ2UodCl7cmV0dXJuIFAuZnJvbVBvc2l0aW9ucyh0aGlzLnRyYW5zbGF0ZU9mZnNldCh0LnN0YXJ0KSx0aGlzLnRyYW5zbGF0ZU9mZnNldCh0LmVuZEV4Y2x1c2l2ZSkpfWZpbmRXb3JkQ29udGFpbmluZyh0KXtpZih0PDB8fHQ+PXRoaXMuZWxlbWVudHMubGVuZ3RofHwhUXQodGhpcy5lbGVtZW50c1t0XSkpcmV0dXJuO2xldCBuPXQ7Zm9yKDtuPjAmJlF0KHRoaXMuZWxlbWVudHNbbi0xXSk7KW4tLTtsZXQgcj10O2Zvcig7cjx0aGlzLmVsZW1lbnRzLmxlbmd0aCYmUXQodGhpcy5lbGVtZW50c1tyXSk7KXIrKztyZXR1cm4gbmV3IFYobixyKX1jb3VudExpbmVzSW4odCl7cmV0dXJuIHRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuZW5kRXhjbHVzaXZlKS5saW5lTnVtYmVyLXRoaXMudHJhbnNsYXRlT2Zmc2V0KHQuc3RhcnQpLmxpbmVOdW1iZXJ9aXNTdHJvbmdseUVxdWFsKHQsbil7cmV0dXJuIHRoaXMuZWxlbWVudHNbdF09PT10aGlzLmVsZW1lbnRzW25dfWV4dGVuZFRvRnVsbExpbmVzKHQpe3ZhciBuLHI7Y29uc3Qgcz0obj1WZSh0aGlzLmZpcnN0Q2hhck9mZnNldEJ5TGluZSxsPT5sPD10LnN0YXJ0KSkhPT1udWxsJiZuIT09dm9pZCAwP246MCxpPShyPUlpKHRoaXMuZmlyc3RDaGFyT2Zmc2V0QnlMaW5lLGw9PnQuZW5kRXhjbHVzaXZlPD1sKSkhPT1udWxsJiZyIT09dm9pZCAwP3I6dGhpcy5lbGVtZW50cy5sZW5ndGg7cmV0dXJuIG5ldyBWKHMsaSl9fWZ1bmN0aW9uIFF0KGUpe3JldHVybiBlPj05NyYmZTw9MTIyfHxlPj02NSYmZTw9OTB8fGU+PTQ4JiZlPD01N31jb25zdCBYaT17MDowLDE6MCwyOjAsMzoxMCw0OjIsNTozMCw2OjMsNzoxMCw4OjEwfTtmdW5jdGlvbiBEcihlKXtyZXR1cm4gWGlbZV19ZnVuY3Rpb24gVHIoZSl7cmV0dXJuIGU9PT0xMD84OmU9PT0xMz83Omp0KGUpPzY6ZT49OTcmJmU8PTEyMj8wOmU+PTY1JiZlPD05MD8xOmU+PTQ4JiZlPD01Nz8yOmU9PT0tMT8zOmU9PT00NHx8ZT09PTU5PzU6NH1mdW5jdGlvbiBKaShlLHQsbixyLHMsaSl7bGV0e21vdmVzOmwsZXhjbHVkZWRDaGFuZ2VzOm99PVppKGUsdCxuLGkpO2lmKCFpLmlzVmFsaWQoKSlyZXR1cm5bXTtjb25zdCB1PWUuZmlsdGVyKGg9PiFvLmhhcyhoKSksYz1LaSh1LHIscyx0LG4saSk7cmV0dXJuIHNpKGwsYyksbD1lMShsKSxsPWwuZmlsdGVyKGg9Pntjb25zdCBmPWgub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLnNsaWNlKHQpLm1hcChtPT5tLnRyaW0oKSk7cmV0dXJuIGYuam9pbihgCmApLmxlbmd0aD49MTUmJllpKGYsbT0+bS5sZW5ndGg+PTIpPj0yfSksbD10MShlLGwpLGx9ZnVuY3Rpb24gWWkoZSx0KXtsZXQgbj0wO2Zvcihjb25zdCByIG9mIGUpdChyKSYmbisrO3JldHVybiBufWZ1bmN0aW9uIFppKGUsdCxuLHIpe2NvbnN0IHM9W10saT1lLmZpbHRlcih1PT51Lm1vZGlmaWVkLmlzRW1wdHkmJnUub3JpZ2luYWwubGVuZ3RoPj0zKS5tYXAodT0+bmV3IEllKHUub3JpZ2luYWwsdCx1KSksbD1uZXcgU2V0KGUuZmlsdGVyKHU9PnUub3JpZ2luYWwuaXNFbXB0eSYmdS5tb2RpZmllZC5sZW5ndGg+PTMpLm1hcCh1PT5uZXcgSWUodS5tb2RpZmllZCxuLHUpKSksbz1uZXcgU2V0O2Zvcihjb25zdCB1IG9mIGkpe2xldCBjPS0xLGg7Zm9yKGNvbnN0IGYgb2YgbCl7Y29uc3QgZD11LmNvbXB1dGVTaW1pbGFyaXR5KGYpO2Q+YyYmKGM9ZCxoPWYpfWlmKGM+LjkmJmgmJihsLmRlbGV0ZShoKSxzLnB1c2gobmV3IGxlKHUucmFuZ2UsaC5yYW5nZSkpLG8uYWRkKHUuc291cmNlKSxvLmFkZChoLnNvdXJjZSkpLCFyLmlzVmFsaWQoKSlyZXR1cm57bW92ZXM6cyxleGNsdWRlZENoYW5nZXM6b319cmV0dXJue21vdmVzOnMsZXhjbHVkZWRDaGFuZ2VzOm99fWZ1bmN0aW9uIEtpKGUsdCxuLHIscyxpKXtjb25zdCBsPVtdLG89bmV3IE1pO2Zvcihjb25zdCBkIG9mIGUpZm9yKGxldCBtPWQub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyO208ZC5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTI7bSsrKXtjb25zdCBnPWAke3RbbS0xXX06JHt0W20rMS0xXX06JHt0W20rMi0xXX1gO28uYWRkKGcse3JhbmdlOm5ldyBEKG0sbSszKX0pfWNvbnN0IHU9W107ZS5zb3J0KGl0KGQ9PmQubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLGF0KSk7Zm9yKGNvbnN0IGQgb2YgZSl7bGV0IG09W107Zm9yKGxldCBnPWQubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyO2c8ZC5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLTI7ZysrKXtjb25zdCB4PWAke25bZy0xXX06JHtuW2crMS0xXX06JHtuW2crMi0xXX1gLHY9bmV3IEQoZyxnKzMpLE49W107by5mb3JFYWNoKHgsKHtyYW5nZTpTfSk9Pntmb3IoY29uc3QgTCBvZiBtKWlmKEwub3JpZ2luYWxMaW5lUmFuZ2UuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSsxPT09Uy5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlJiZMLm1vZGlmaWVkTGluZVJhbmdlLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrMT09PXYuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSl7TC5vcmlnaW5hbExpbmVSYW5nZT1uZXcgRChMLm9yaWdpbmFsTGluZVJhbmdlLnN0YXJ0TGluZU51bWJlcixTLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpLEwubW9kaWZpZWRMaW5lUmFuZ2U9bmV3IEQoTC5tb2RpZmllZExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsdi5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKSxOLnB1c2goTCk7cmV0dXJufWNvbnN0IF89e21vZGlmaWVkTGluZVJhbmdlOnYsb3JpZ2luYWxMaW5lUmFuZ2U6U307dS5wdXNoKF8pLE4ucHVzaChfKX0pLG09Tn1pZighaS5pc1ZhbGlkKCkpcmV0dXJuW119dS5zb3J0KGlpKGl0KGQ9PmQubW9kaWZpZWRMaW5lUmFuZ2UubGVuZ3RoLGF0KSkpO2NvbnN0IGM9bmV3IHVlLGg9bmV3IHVlO2Zvcihjb25zdCBkIG9mIHUpe2NvbnN0IG09ZC5tb2RpZmllZExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXItZC5vcmlnaW5hbExpbmVSYW5nZS5zdGFydExpbmVOdW1iZXIsZz1jLnN1YnRyYWN0RnJvbShkLm1vZGlmaWVkTGluZVJhbmdlKSx4PWguc3VidHJhY3RGcm9tKGQub3JpZ2luYWxMaW5lUmFuZ2UpLmdldFdpdGhEZWx0YShtKSx2PWcuZ2V0SW50ZXJzZWN0aW9uKHgpO2Zvcihjb25zdCBOIG9mIHYucmFuZ2VzKXtpZihOLmxlbmd0aDwzKWNvbnRpbnVlO2NvbnN0IFM9TixfPU4uZGVsdGEoLW0pO2wucHVzaChuZXcgbGUoXyxTKSksYy5hZGRSYW5nZShTKSxoLmFkZFJhbmdlKF8pfX1sLnNvcnQoaXQoZD0+ZC5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXIsYXQpKTtjb25zdCBmPW5ldyBqZShlKTtmb3IobGV0IGQ9MDtkPGwubGVuZ3RoO2QrKyl7Y29uc3QgbT1sW2RdLGc9Zi5maW5kTGFzdE1vbm90b25vdXMoUj0+Ui5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI8PW0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSx4PVZlKGUsUj0+Ui5tb2RpZmllZC5zdGFydExpbmVOdW1iZXI8PW0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSx2PU1hdGgubWF4KG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLWcub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLXgubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSxOPWYuZmluZExhc3RNb25vdG9ub3VzKFI9PlIub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyPG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksUz1WZShlLFI9PlIubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPG0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSksXz1NYXRoLm1heChOLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUtbS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLFMubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZS1tLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpO2xldCBMO2ZvcihMPTA7TDx2O0wrKyl7Y29uc3QgUj1tLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1MLTEseT1tLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1MLTE7aWYoUj5yLmxlbmd0aHx8eT5zLmxlbmd0aHx8Yy5jb250YWlucyh5KXx8aC5jb250YWlucyhSKXx8IVZyKHJbUi0xXSxzW3ktMV0saSkpYnJlYWt9TD4wJiYoaC5hZGRSYW5nZShuZXcgRChtLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlci1MLG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyKSksYy5hZGRSYW5nZShuZXcgRChtLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlci1MLG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyKSkpO2xldCBwO2ZvcihwPTA7cDxfO3ArKyl7Y29uc3QgUj1tLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUrcCx5PW0ubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStwO2lmKFI+ci5sZW5ndGh8fHk+cy5sZW5ndGh8fGMuY29udGFpbnMoeSl8fGguY29udGFpbnMoUil8fCFWcihyW1ItMV0sc1t5LTFdLGkpKWJyZWFrfXA+MCYmKGguYWRkUmFuZ2UobmV3IEQobS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLG0ub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZStwKSksYy5hZGRSYW5nZShuZXcgRChtLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3ApKSksKEw+MHx8cD4wKSYmKGxbZF09bmV3IGxlKG5ldyBEKG0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLUwsbS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3ApLG5ldyBEKG0ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLUwsbS5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlK3ApKSl9cmV0dXJuIGx9ZnVuY3Rpb24gVnIoZSx0LG4pe2lmKGUudHJpbSgpPT09dC50cmltKCkpcmV0dXJuITA7aWYoZS5sZW5ndGg+MzAwJiZ0Lmxlbmd0aD4zMDApcmV0dXJuITE7Y29uc3Qgcz1uZXcgRnIoKS5jb21wdXRlKG5ldyBkdChbZV0sbmV3IFYoMCwxKSwhMSksbmV3IGR0KFt0XSxuZXcgVigwLDEpLCExKSxuKTtsZXQgaT0wO2NvbnN0IGw9ei5pbnZlcnQocy5kaWZmcyxlLmxlbmd0aCk7Zm9yKGNvbnN0IGggb2YgbCloLnNlcTFSYW5nZS5mb3JFYWNoKGY9PntqdChlLmNoYXJDb2RlQXQoZikpfHxpKyt9KTtmdW5jdGlvbiBvKGgpe2xldCBmPTA7Zm9yKGxldCBkPTA7ZDxlLmxlbmd0aDtkKyspanQoaC5jaGFyQ29kZUF0KGQpKXx8ZisrO3JldHVybiBmfWNvbnN0IHU9byhlLmxlbmd0aD50Lmxlbmd0aD9lOnQpO3JldHVybiBpL3U+LjYmJnU+MTB9ZnVuY3Rpb24gZTEoZSl7aWYoZS5sZW5ndGg9PT0wKXJldHVybiBlO2Uuc29ydChpdChuPT5uLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixhdCkpO2NvbnN0IHQ9W2VbMF1dO2ZvcihsZXQgbj0xO248ZS5sZW5ndGg7bisrKXtjb25zdCByPXRbdC5sZW5ndGgtMV0scz1lW25dLGk9cy5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXItci5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGw9cy5tb2RpZmllZC5zdGFydExpbmVOdW1iZXItci5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlO2lmKGk+PTAmJmw+PTAmJmkrbDw9Mil7dFt0Lmxlbmd0aC0xXT1yLmpvaW4ocyk7Y29udGludWV9dC5wdXNoKHMpfXJldHVybiB0fWZ1bmN0aW9uIHQxKGUsdCl7Y29uc3Qgbj1uZXcgamUoZSk7cmV0dXJuIHQ9dC5maWx0ZXIocj0+e2NvbnN0IHM9bi5maW5kTGFzdE1vbm90b25vdXMobz0+by5vcmlnaW5hbC5zdGFydExpbmVOdW1iZXI8ci5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlKXx8bmV3IGxlKG5ldyBEKDEsMSksbmV3IEQoMSwxKSksaT1WZShlLG89Pm8ubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyPHIubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSk7cmV0dXJuIHMhPT1pfSksdH1mdW5jdGlvbiBCcihlLHQsbil7bGV0IHI9bjtyZXR1cm4gcj1xcihlLHQscikscj1xcihlLHQscikscj1uMShlLHQscikscn1mdW5jdGlvbiBxcihlLHQsbil7aWYobi5sZW5ndGg9PT0wKXJldHVybiBuO2NvbnN0IHI9W107ci5wdXNoKG5bMF0pO2ZvcihsZXQgaT0xO2k8bi5sZW5ndGg7aSsrKXtjb25zdCBsPXJbci5sZW5ndGgtMV07bGV0IG89bltpXTtpZihvLnNlcTFSYW5nZS5pc0VtcHR5fHxvLnNlcTJSYW5nZS5pc0VtcHR5KXtjb25zdCB1PW8uc2VxMVJhbmdlLnN0YXJ0LWwuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZTtsZXQgYztmb3IoYz0xO2M8PXUmJiEoZS5nZXRFbGVtZW50KG8uc2VxMVJhbmdlLnN0YXJ0LWMpIT09ZS5nZXRFbGVtZW50KG8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZS1jKXx8dC5nZXRFbGVtZW50KG8uc2VxMlJhbmdlLnN0YXJ0LWMpIT09dC5nZXRFbGVtZW50KG8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS1jKSk7YysrKTtpZihjLS0sYz09PXUpe3Jbci5sZW5ndGgtMV09bmV3IHoobmV3IFYobC5zZXExUmFuZ2Uuc3RhcnQsby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlLXUpLG5ldyBWKGwuc2VxMlJhbmdlLnN0YXJ0LG8uc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZS11KSk7Y29udGludWV9bz1vLmRlbHRhKC1jKX1yLnB1c2gobyl9Y29uc3Qgcz1bXTtmb3IobGV0IGk9MDtpPHIubGVuZ3RoLTE7aSsrKXtjb25zdCBsPXJbaSsxXTtsZXQgbz1yW2ldO2lmKG8uc2VxMVJhbmdlLmlzRW1wdHl8fG8uc2VxMlJhbmdlLmlzRW1wdHkpe2NvbnN0IHU9bC5zZXExUmFuZ2Uuc3RhcnQtby5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlO2xldCBjO2ZvcihjPTA7Yzx1JiYhKCFlLmlzU3Ryb25nbHlFcXVhbChvLnNlcTFSYW5nZS5zdGFydCtjLG8uc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZStjKXx8IXQuaXNTdHJvbmdseUVxdWFsKG8uc2VxMlJhbmdlLnN0YXJ0K2Msby5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK2MpKTtjKyspO2lmKGM9PT11KXtyW2krMV09bmV3IHoobmV3IFYoby5zZXExUmFuZ2Uuc3RhcnQrdSxsLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUpLG5ldyBWKG8uc2VxMlJhbmdlLnN0YXJ0K3UsbC5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlKSk7Y29udGludWV9Yz4wJiYobz1vLmRlbHRhKGMpKX1zLnB1c2gobyl9cmV0dXJuIHIubGVuZ3RoPjAmJnMucHVzaChyW3IubGVuZ3RoLTFdKSxzfWZ1bmN0aW9uIG4xKGUsdCxuKXtpZighZS5nZXRCb3VuZGFyeVNjb3JlfHwhdC5nZXRCb3VuZGFyeVNjb3JlKXJldHVybiBuO2ZvcihsZXQgcj0wO3I8bi5sZW5ndGg7cisrKXtjb25zdCBzPXI+MD9uW3ItMV06dm9pZCAwLGk9bltyXSxsPXIrMTxuLmxlbmd0aD9uW3IrMV06dm9pZCAwLG89bmV3IFYocz9zLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUrMTowLGw/bC5zZXExUmFuZ2Uuc3RhcnQtMTplLmxlbmd0aCksdT1uZXcgVihzP3Muc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZSsxOjAsbD9sLnNlcTJSYW5nZS5zdGFydC0xOnQubGVuZ3RoKTtpLnNlcTFSYW5nZS5pc0VtcHR5P25bcl09SXIoaSxlLHQsbyx1KTppLnNlcTJSYW5nZS5pc0VtcHR5JiYobltyXT1JcihpLnN3YXAoKSx0LGUsdSxvKS5zd2FwKCkpfXJldHVybiBufWZ1bmN0aW9uIElyKGUsdCxuLHIscyl7bGV0IGw9MTtmb3IoO2Uuc2VxMVJhbmdlLnN0YXJ0LWw+PXIuc3RhcnQmJmUuc2VxMlJhbmdlLnN0YXJ0LWw+PXMuc3RhcnQmJm4uaXNTdHJvbmdseUVxdWFsKGUuc2VxMlJhbmdlLnN0YXJ0LWwsZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlLWwpJiZsPDEwMDspbCsrO2wtLTtsZXQgbz0wO2Zvcig7ZS5zZXExUmFuZ2Uuc3RhcnQrbzxyLmVuZEV4Y2x1c2l2ZSYmZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK288cy5lbmRFeGNsdXNpdmUmJm4uaXNTdHJvbmdseUVxdWFsKGUuc2VxMlJhbmdlLnN0YXJ0K28sZS5zZXEyUmFuZ2UuZW5kRXhjbHVzaXZlK28pJiZvPDEwMDspbysrO2lmKGw9PT0wJiZvPT09MClyZXR1cm4gZTtsZXQgdT0wLGM9LTE7Zm9yKGxldCBoPS1sO2g8PW87aCsrKXtjb25zdCBmPWUuc2VxMlJhbmdlLnN0YXJ0K2gsZD1lLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmUraCxtPWUuc2VxMVJhbmdlLnN0YXJ0K2gsZz10LmdldEJvdW5kYXJ5U2NvcmUobSkrbi5nZXRCb3VuZGFyeVNjb3JlKGYpK24uZ2V0Qm91bmRhcnlTY29yZShkKTtnPmMmJihjPWcsdT1oKX1yZXR1cm4gZS5kZWx0YSh1KX1mdW5jdGlvbiByMShlLHQsbil7Y29uc3Qgcj1bXTtmb3IoY29uc3QgcyBvZiBuKXtjb25zdCBpPXJbci5sZW5ndGgtMV07aWYoIWkpe3IucHVzaChzKTtjb250aW51ZX1zLnNlcTFSYW5nZS5zdGFydC1pLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU8PTJ8fHMuc2VxMlJhbmdlLnN0YXJ0LWkuc2VxMlJhbmdlLmVuZEV4Y2x1c2l2ZTw9Mj9yW3IubGVuZ3RoLTFdPW5ldyB6KGkuc2VxMVJhbmdlLmpvaW4ocy5zZXExUmFuZ2UpLGkuc2VxMlJhbmdlLmpvaW4ocy5zZXEyUmFuZ2UpKTpyLnB1c2gocyl9cmV0dXJuIHJ9ZnVuY3Rpb24gczEoZSx0LG4pe2NvbnN0IHI9ei5pbnZlcnQobixlLmxlbmd0aCkscz1bXTtsZXQgaT1uZXcgbmUoMCwwKTtmdW5jdGlvbiBsKHUsYyl7aWYodS5vZmZzZXQxPGkub2Zmc2V0MXx8dS5vZmZzZXQyPGkub2Zmc2V0MilyZXR1cm47Y29uc3QgaD1lLmZpbmRXb3JkQ29udGFpbmluZyh1Lm9mZnNldDEpLGY9dC5maW5kV29yZENvbnRhaW5pbmcodS5vZmZzZXQyKTtpZighaHx8IWYpcmV0dXJuO2xldCBkPW5ldyB6KGgsZik7Y29uc3QgbT1kLmludGVyc2VjdChjKTtsZXQgZz1tLnNlcTFSYW5nZS5sZW5ndGgseD1tLnNlcTJSYW5nZS5sZW5ndGg7Zm9yKDtyLmxlbmd0aD4wOyl7Y29uc3Qgdj1yWzBdO2lmKCEodi5zZXExUmFuZ2UuaW50ZXJzZWN0cyhkLnNlcTFSYW5nZSl8fHYuc2VxMlJhbmdlLmludGVyc2VjdHMoZC5zZXEyUmFuZ2UpKSlicmVhaztjb25zdCBTPWUuZmluZFdvcmRDb250YWluaW5nKHYuc2VxMVJhbmdlLnN0YXJ0KSxfPXQuZmluZFdvcmRDb250YWluaW5nKHYuc2VxMlJhbmdlLnN0YXJ0KSxMPW5ldyB6KFMsXykscD1MLmludGVyc2VjdCh2KTtpZihnKz1wLnNlcTFSYW5nZS5sZW5ndGgseCs9cC5zZXEyUmFuZ2UubGVuZ3RoLGQ9ZC5qb2luKEwpLGQuc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZT49di5zZXExUmFuZ2UuZW5kRXhjbHVzaXZlKXIuc2hpZnQoKTtlbHNlIGJyZWFrfWcreDwoZC5zZXExUmFuZ2UubGVuZ3RoK2Quc2VxMlJhbmdlLmxlbmd0aCkqMi8zJiZzLnB1c2goZCksaT1kLmdldEVuZEV4Y2x1c2l2ZXMoKX1mb3IoO3IubGVuZ3RoPjA7KXtjb25zdCB1PXIuc2hpZnQoKTt1LnNlcTFSYW5nZS5pc0VtcHR5fHwobCh1LmdldFN0YXJ0cygpLHUpLGwodS5nZXRFbmRFeGNsdXNpdmVzKCkuZGVsdGEoLTEpLHUpKX1yZXR1cm4gaTEobixzKX1mdW5jdGlvbiBpMShlLHQpe2NvbnN0IG49W107Zm9yKDtlLmxlbmd0aD4wfHx0Lmxlbmd0aD4wOyl7Y29uc3Qgcj1lWzBdLHM9dFswXTtsZXQgaTtyJiYoIXN8fHIuc2VxMVJhbmdlLnN0YXJ0PHMuc2VxMVJhbmdlLnN0YXJ0KT9pPWUuc2hpZnQoKTppPXQuc2hpZnQoKSxuLmxlbmd0aD4wJiZuW24ubGVuZ3RoLTFdLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmU+PWkuc2VxMVJhbmdlLnN0YXJ0P25bbi5sZW5ndGgtMV09bltuLmxlbmd0aC0xXS5qb2luKGkpOm4ucHVzaChpKX1yZXR1cm4gbn1mdW5jdGlvbiBhMShlLHQsbil7bGV0IHI9bjtpZihyLmxlbmd0aD09PTApcmV0dXJuIHI7bGV0IHM9MCxpO2Rve2k9ITE7Y29uc3QgbD1bclswXV07Zm9yKGxldCBvPTE7bzxyLmxlbmd0aDtvKyspe2xldCBoPWZ1bmN0aW9uKGQsbSl7Y29uc3QgZz1uZXcgVihjLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsdS5zZXExUmFuZ2Uuc3RhcnQpO3JldHVybiBlLmdldFRleHQoZykucmVwbGFjZSgvXHMvZywiIikubGVuZ3RoPD00JiYoZC5zZXExUmFuZ2UubGVuZ3RoK2Quc2VxMlJhbmdlLmxlbmd0aD41fHxtLnNlcTFSYW5nZS5sZW5ndGgrbS5zZXEyUmFuZ2UubGVuZ3RoPjUpfTtjb25zdCB1PXJbb10sYz1sW2wubGVuZ3RoLTFdO2goYyx1KT8oaT0hMCxsW2wubGVuZ3RoLTFdPWxbbC5sZW5ndGgtMV0uam9pbih1KSk6bC5wdXNoKHUpfXI9bH13aGlsZShzKys8MTAmJmkpO3JldHVybiByfWZ1bmN0aW9uIGwxKGUsdCxuKXtsZXQgcj1uO2lmKHIubGVuZ3RoPT09MClyZXR1cm4gcjtsZXQgcz0wLGk7ZG97aT0hMTtjb25zdCBvPVtyWzBdXTtmb3IobGV0IHU9MTt1PHIubGVuZ3RoO3UrKyl7bGV0IGY9ZnVuY3Rpb24obSxnKXtjb25zdCB4PW5ldyBWKGguc2VxMVJhbmdlLmVuZEV4Y2x1c2l2ZSxjLnNlcTFSYW5nZS5zdGFydCk7aWYoZS5jb3VudExpbmVzSW4oeCk+NXx8eC5sZW5ndGg+NTAwKXJldHVybiExO2NvbnN0IE49ZS5nZXRUZXh0KHgpLnRyaW0oKTtpZihOLmxlbmd0aD4yMHx8Ti5zcGxpdCgvXHJcbnxccnxcbi8pLmxlbmd0aD4xKXJldHVybiExO2NvbnN0IFM9ZS5jb3VudExpbmVzSW4obS5zZXExUmFuZ2UpLF89bS5zZXExUmFuZ2UubGVuZ3RoLEw9dC5jb3VudExpbmVzSW4obS5zZXEyUmFuZ2UpLHA9bS5zZXEyUmFuZ2UubGVuZ3RoLFI9ZS5jb3VudExpbmVzSW4oZy5zZXExUmFuZ2UpLHk9Zy5zZXExUmFuZ2UubGVuZ3RoLEU9dC5jb3VudExpbmVzSW4oZy5zZXEyUmFuZ2UpLEk9Zy5zZXEyUmFuZ2UubGVuZ3RoLEc9Mio0MCs1MDtmdW5jdGlvbiB3KGIpe3JldHVybiBNYXRoLm1pbihiLEcpfXJldHVybiBNYXRoLnBvdyhNYXRoLnBvdyh3KFMqNDArXyksMS41KStNYXRoLnBvdyh3KEwqNDArcCksMS41KSwxLjUpK01hdGgucG93KE1hdGgucG93KHcoUio0MCt5KSwxLjUpK01hdGgucG93KHcoRSo0MCtJKSwxLjUpLDEuNSk+KEcqKjEuNSkqKjEuNSoxLjN9O2NvbnN0IGM9clt1XSxoPW9bby5sZW5ndGgtMV07ZihoLGMpPyhpPSEwLG9bby5sZW5ndGgtMV09b1tvLmxlbmd0aC0xXS5qb2luKGMpKTpvLnB1c2goYyl9cj1vfXdoaWxlKHMrKzwxMCYmaSk7Y29uc3QgbD1bXTtyZXR1cm4gcmkociwobyx1LGMpPT57bGV0IGg9dTtmdW5jdGlvbiBmKE4pe3JldHVybiBOLmxlbmd0aD4wJiZOLnRyaW0oKS5sZW5ndGg8PTMmJnUuc2VxMVJhbmdlLmxlbmd0aCt1LnNlcTJSYW5nZS5sZW5ndGg+MTAwfWNvbnN0IGQ9ZS5leHRlbmRUb0Z1bGxMaW5lcyh1LnNlcTFSYW5nZSksbT1lLmdldFRleHQobmV3IFYoZC5zdGFydCx1LnNlcTFSYW5nZS5zdGFydCkpO2YobSkmJihoPWguZGVsdGFTdGFydCgtbS5sZW5ndGgpKTtjb25zdCBnPWUuZ2V0VGV4dChuZXcgVih1LnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsZC5lbmRFeGNsdXNpdmUpKTtmKGcpJiYoaD1oLmRlbHRhRW5kKGcubGVuZ3RoKSk7Y29uc3QgeD16LmZyb21PZmZzZXRQYWlycyhvP28uZ2V0RW5kRXhjbHVzaXZlcygpOm5lLnplcm8sYz9jLmdldFN0YXJ0cygpOm5lLm1heCksdj1oLmludGVyc2VjdCh4KTtsLmxlbmd0aD4wJiZ2LmdldFN0YXJ0cygpLmVxdWFscyhsW2wubGVuZ3RoLTFdLmdldEVuZEV4Y2x1c2l2ZXMoKSk/bFtsLmxlbmd0aC0xXT1sW2wubGVuZ3RoLTFdLmpvaW4odik6bC5wdXNoKHYpfSksbH1jbGFzcyBVcntjb25zdHJ1Y3Rvcih0LG4pe3RoaXMudHJpbW1lZEhhc2g9dCx0aGlzLmxpbmVzPW59Z2V0RWxlbWVudCh0KXtyZXR1cm4gdGhpcy50cmltbWVkSGFzaFt0XX1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMudHJpbW1lZEhhc2gubGVuZ3RofWdldEJvdW5kYXJ5U2NvcmUodCl7Y29uc3Qgbj10PT09MD8wOkhyKHRoaXMubGluZXNbdC0xXSkscj10PT09dGhpcy5saW5lcy5sZW5ndGg/MDpIcih0aGlzLmxpbmVzW3RdKTtyZXR1cm4gMWUzLShuK3IpfWdldFRleHQodCl7cmV0dXJuIHRoaXMubGluZXMuc2xpY2UodC5zdGFydCx0LmVuZEV4Y2x1c2l2ZSkuam9pbihgCmApfWlzU3Ryb25nbHlFcXVhbCh0LG4pe3JldHVybiB0aGlzLmxpbmVzW3RdPT09dGhpcy5saW5lc1tuXX19ZnVuY3Rpb24gSHIoZSl7bGV0IHQ9MDtmb3IoO3Q8ZS5sZW5ndGgmJihlLmNoYXJDb2RlQXQodCk9PT0zMnx8ZS5jaGFyQ29kZUF0KHQpPT09OSk7KXQrKztyZXR1cm4gdH1jbGFzcyBvMXtjb25zdHJ1Y3Rvcigpe3RoaXMuZHluYW1pY1Byb2dyYW1taW5nRGlmZmluZz1uZXcgR2ksdGhpcy5teWVyc0RpZmZpbmdBbGdvcml0aG09bmV3IEZyfWNvbXB1dGVEaWZmKHQsbixyKXtpZih0Lmxlbmd0aDw9MSYmZWkodCxuLChwLFIpPT5wPT09UikpcmV0dXJuIG5ldyBmdChbXSxbXSwhMSk7aWYodC5sZW5ndGg9PT0xJiZ0WzBdLmxlbmd0aD09PTB8fG4ubGVuZ3RoPT09MSYmblswXS5sZW5ndGg9PT0wKXJldHVybiBuZXcgZnQoW25ldyBoZShuZXcgRCgxLHQubGVuZ3RoKzEpLG5ldyBEKDEsbi5sZW5ndGgrMSksW25ldyBCZShuZXcgUCgxLDEsdC5sZW5ndGgsdFswXS5sZW5ndGgrMSksbmV3IFAoMSwxLG4ubGVuZ3RoLG5bMF0ubGVuZ3RoKzEpKV0pXSxbXSwhMSk7Y29uc3Qgcz1yLm1heENvbXB1dGF0aW9uVGltZU1zPT09MD9YZS5pbnN0YW5jZTpuZXcgT2koci5tYXhDb21wdXRhdGlvblRpbWVNcyksaT0hci5pZ25vcmVUcmltV2hpdGVzcGFjZSxsPW5ldyBNYXA7ZnVuY3Rpb24gbyhwKXtsZXQgUj1sLmdldChwKTtyZXR1cm4gUj09PXZvaWQgMCYmKFI9bC5zaXplLGwuc2V0KHAsUikpLFJ9Y29uc3QgdT10Lm1hcChwPT5vKHAudHJpbSgpKSksYz1uLm1hcChwPT5vKHAudHJpbSgpKSksaD1uZXcgVXIodSx0KSxmPW5ldyBVcihjLG4pLGQ9aC5sZW5ndGgrZi5sZW5ndGg8MTcwMD90aGlzLmR5bmFtaWNQcm9ncmFtbWluZ0RpZmZpbmcuY29tcHV0ZShoLGYscywocCxSKT0+dFtwXT09PW5bUl0/bltSXS5sZW5ndGg9PT0wPy4xOjErTWF0aC5sb2coMStuW1JdLmxlbmd0aCk6Ljk5KTp0aGlzLm15ZXJzRGlmZmluZ0FsZ29yaXRobS5jb21wdXRlKGgsZik7bGV0IG09ZC5kaWZmcyxnPWQuaGl0VGltZW91dDttPUJyKGgsZixtKSxtPWExKGgsZixtKTtjb25zdCB4PVtdLHY9cD0+e2lmKGkpZm9yKGxldCBSPTA7UjxwO1IrKyl7Y29uc3QgeT1OK1IsRT1TK1I7aWYodFt5XSE9PW5bRV0pe2NvbnN0IEk9dGhpcy5yZWZpbmVEaWZmKHQsbixuZXcgeihuZXcgVih5LHkrMSksbmV3IFYoRSxFKzEpKSxzLGkpO2Zvcihjb25zdCBHIG9mIEkubWFwcGluZ3MpeC5wdXNoKEcpO0kuaGl0VGltZW91dCYmKGc9ITApfX19O2xldCBOPTAsUz0wO2Zvcihjb25zdCBwIG9mIG0pe2h0KCgpPT5wLnNlcTFSYW5nZS5zdGFydC1OPT09cC5zZXEyUmFuZ2Uuc3RhcnQtUyk7Y29uc3QgUj1wLnNlcTFSYW5nZS5zdGFydC1OO3YoUiksTj1wLnNlcTFSYW5nZS5lbmRFeGNsdXNpdmUsUz1wLnNlcTJSYW5nZS5lbmRFeGNsdXNpdmU7Y29uc3QgeT10aGlzLnJlZmluZURpZmYodCxuLHAscyxpKTt5LmhpdFRpbWVvdXQmJihnPSEwKTtmb3IoY29uc3QgRSBvZiB5Lm1hcHBpbmdzKXgucHVzaChFKX12KHQubGVuZ3RoLU4pO2NvbnN0IF89V3IoeCx0LG4pO2xldCBMPVtdO3JldHVybiByLmNvbXB1dGVNb3ZlcyYmKEw9dGhpcy5jb21wdXRlTW92ZXMoXyx0LG4sdSxjLHMsaSkpLGh0KCgpPT57ZnVuY3Rpb24gcCh5LEUpe2lmKHkubGluZU51bWJlcjwxfHx5LmxpbmVOdW1iZXI+RS5sZW5ndGgpcmV0dXJuITE7Y29uc3QgST1FW3kubGluZU51bWJlci0xXTtyZXR1cm4hKHkuY29sdW1uPDF8fHkuY29sdW1uPkkubGVuZ3RoKzEpfWZ1bmN0aW9uIFIoeSxFKXtyZXR1cm4hKHkuc3RhcnRMaW5lTnVtYmVyPDF8fHkuc3RhcnRMaW5lTnVtYmVyPkUubGVuZ3RoKzF8fHkuZW5kTGluZU51bWJlckV4Y2x1c2l2ZTwxfHx5LmVuZExpbmVOdW1iZXJFeGNsdXNpdmU+RS5sZW5ndGgrMSl9Zm9yKGNvbnN0IHkgb2YgXyl7aWYoIXkuaW5uZXJDaGFuZ2VzKXJldHVybiExO2Zvcihjb25zdCBFIG9mIHkuaW5uZXJDaGFuZ2VzKWlmKCEocChFLm1vZGlmaWVkUmFuZ2UuZ2V0U3RhcnRQb3NpdGlvbigpLG4pJiZwKEUubW9kaWZpZWRSYW5nZS5nZXRFbmRQb3NpdGlvbigpLG4pJiZwKEUub3JpZ2luYWxSYW5nZS5nZXRTdGFydFBvc2l0aW9uKCksdCkmJnAoRS5vcmlnaW5hbFJhbmdlLmdldEVuZFBvc2l0aW9uKCksdCkpKXJldHVybiExO2lmKCFSKHkubW9kaWZpZWQsbil8fCFSKHkub3JpZ2luYWwsdCkpcmV0dXJuITF9cmV0dXJuITB9KSxuZXcgZnQoXyxMLGcpfWNvbXB1dGVNb3Zlcyh0LG4scixzLGksbCxvKXtyZXR1cm4gSmkodCxuLHIscyxpLGwpLm1hcChoPT57Y29uc3QgZj10aGlzLnJlZmluZURpZmYobixyLG5ldyB6KGgub3JpZ2luYWwudG9PZmZzZXRSYW5nZSgpLGgubW9kaWZpZWQudG9PZmZzZXRSYW5nZSgpKSxsLG8pLGQ9V3IoZi5tYXBwaW5ncyxuLHIsITApO3JldHVybiBuZXcgcWkoaCxkKX0pfXJlZmluZURpZmYodCxuLHIscyxpKXtjb25zdCBsPW5ldyBkdCh0LHIuc2VxMVJhbmdlLGkpLG89bmV3IGR0KG4sci5zZXEyUmFuZ2UsaSksdT1sLmxlbmd0aCtvLmxlbmd0aDw1MDA/dGhpcy5keW5hbWljUHJvZ3JhbW1pbmdEaWZmaW5nLmNvbXB1dGUobCxvLHMpOnRoaXMubXllcnNEaWZmaW5nQWxnb3JpdGhtLmNvbXB1dGUobCxvLHMpO2xldCBjPXUuZGlmZnM7cmV0dXJuIGM9QnIobCxvLGMpLGM9czEobCxvLGMpLGM9cjEobCxvLGMpLGM9bDEobCxvLGMpLHttYXBwaW5nczpjLm1hcChmPT5uZXcgQmUobC50cmFuc2xhdGVSYW5nZShmLnNlcTFSYW5nZSksby50cmFuc2xhdGVSYW5nZShmLnNlcTJSYW5nZSkpKSxoaXRUaW1lb3V0OnUuaGl0VGltZW91dH19fWZ1bmN0aW9uIFdyKGUsdCxuLHI9ITEpe2NvbnN0IHM9W107Zm9yKGNvbnN0IGkgb2YgdGkoZS5tYXAobD0+dTEobCx0LG4pKSwobCxvKT0+bC5vcmlnaW5hbC5vdmVybGFwT3JUb3VjaChvLm9yaWdpbmFsKXx8bC5tb2RpZmllZC5vdmVybGFwT3JUb3VjaChvLm1vZGlmaWVkKSkpe2NvbnN0IGw9aVswXSxvPWlbaS5sZW5ndGgtMV07cy5wdXNoKG5ldyBoZShsLm9yaWdpbmFsLmpvaW4oby5vcmlnaW5hbCksbC5tb2RpZmllZC5qb2luKG8ubW9kaWZpZWQpLGkubWFwKHU9PnUuaW5uZXJDaGFuZ2VzWzBdKSkpfXJldHVybiBodCgoKT0+IXImJnMubGVuZ3RoPjAmJihzWzBdLm1vZGlmaWVkLnN0YXJ0TGluZU51bWJlciE9PXNbMF0ub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyfHxuLmxlbmd0aC1zW3MubGVuZ3RoLTFdLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUhPT10Lmxlbmd0aC1zW3MubGVuZ3RoLTFdLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUpPyExOkFyKHMsKGksbCk9Pmwub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyLWkub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZT09PWwubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLWkubW9kaWZpZWQuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSYmaS5vcmlnaW5hbC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlPGwub3JpZ2luYWwuc3RhcnRMaW5lTnVtYmVyJiZpLm1vZGlmaWVkLmVuZExpbmVOdW1iZXJFeGNsdXNpdmU8bC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIpKSxzfWZ1bmN0aW9uIHUxKGUsdCxuKXtsZXQgcj0wLHM9MDtlLm1vZGlmaWVkUmFuZ2UuZW5kQ29sdW1uPT09MSYmZS5vcmlnaW5hbFJhbmdlLmVuZENvbHVtbj09PTEmJmUub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9ZS5vcmlnaW5hbFJhbmdlLmVuZExpbmVOdW1iZXImJmUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIrcjw9ZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXImJihzPS0xKSxlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRDb2x1bW4tMT49bltlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLTFdLmxlbmd0aCYmZS5vcmlnaW5hbFJhbmdlLnN0YXJ0Q29sdW1uLTE+PXRbZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlci0xXS5sZW5ndGgmJmUub3JpZ2luYWxSYW5nZS5zdGFydExpbmVOdW1iZXI8PWUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyK3MmJmUubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXI8PWUubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyK3MmJihyPTEpO2NvbnN0IGk9bmV3IEQoZS5vcmlnaW5hbFJhbmdlLnN0YXJ0TGluZU51bWJlcityLGUub3JpZ2luYWxSYW5nZS5lbmRMaW5lTnVtYmVyKzErcyksbD1uZXcgRChlLm1vZGlmaWVkUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyK3IsZS5tb2RpZmllZFJhbmdlLmVuZExpbmVOdW1iZXIrMStzKTtyZXR1cm4gbmV3IGhlKGksbCxbZV0pfWNvbnN0IHpyPXtnZXRMZWdhY3k6KCk9Pm5ldyBIaSxnZXREZWZhdWx0OigpPT5uZXcgbzF9O2Z1bmN0aW9uIHZlKGUsdCl7Y29uc3Qgbj1NYXRoLnBvdygxMCx0KTtyZXR1cm4gTWF0aC5yb3VuZChlKm4pL259Y2xhc3MgT3tjb25zdHJ1Y3Rvcih0LG4scixzPTEpe3RoaXMuX3JnYmFCcmFuZD12b2lkIDAsdGhpcy5yPU1hdGgubWluKDI1NSxNYXRoLm1heCgwLHQpKXwwLHRoaXMuZz1NYXRoLm1pbigyNTUsTWF0aC5tYXgoMCxuKSl8MCx0aGlzLmI9TWF0aC5taW4oMjU1LE1hdGgubWF4KDAscikpfDAsdGhpcy5hPXZlKE1hdGgubWF4KE1hdGgubWluKDEscyksMCksMyl9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiB0LnI9PT1uLnImJnQuZz09PW4uZyYmdC5iPT09bi5iJiZ0LmE9PT1uLmF9fWNsYXNzIHJle2NvbnN0cnVjdG9yKHQsbixyLHMpe3RoaXMuX2hzbGFCcmFuZD12b2lkIDAsdGhpcy5oPU1hdGgubWF4KE1hdGgubWluKDM2MCx0KSwwKXwwLHRoaXMucz12ZShNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMubD12ZShNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpLHRoaXMuYT12ZShNYXRoLm1heChNYXRoLm1pbigxLHMpLDApLDMpfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4gdC5oPT09bi5oJiZ0LnM9PT1uLnMmJnQubD09PW4ubCYmdC5hPT09bi5hfXN0YXRpYyBmcm9tUkdCQSh0KXtjb25zdCBuPXQuci8yNTUscj10LmcvMjU1LHM9dC5iLzI1NSxpPXQuYSxsPU1hdGgubWF4KG4scixzKSxvPU1hdGgubWluKG4scixzKTtsZXQgdT0wLGM9MDtjb25zdCBoPShvK2wpLzIsZj1sLW87aWYoZj4wKXtzd2l0Y2goYz1NYXRoLm1pbihoPD0uNT9mLygyKmgpOmYvKDItMipoKSwxKSxsKXtjYXNlIG46dT0oci1zKS9mKyhyPHM/NjowKTticmVhaztjYXNlIHI6dT0ocy1uKS9mKzI7YnJlYWs7Y2FzZSBzOnU9KG4tcikvZis0O2JyZWFrfXUqPTYwLHU9TWF0aC5yb3VuZCh1KX1yZXR1cm4gbmV3IHJlKHUsYyxoLGkpfXN0YXRpYyBfaHVlMnJnYih0LG4scil7cmV0dXJuIHI8MCYmKHIrPTEpLHI+MSYmKHItPTEpLHI8MS82P3QrKG4tdCkqNipyOnI8MS8yP246cjwyLzM/dCsobi10KSooMi8zLXIpKjY6dH1zdGF0aWMgdG9SR0JBKHQpe2NvbnN0IG49dC5oLzM2MCx7czpyLGw6cyxhOml9PXQ7bGV0IGwsbyx1O2lmKHI9PT0wKWw9bz11PXM7ZWxzZXtjb25zdCBjPXM8LjU/cyooMStyKTpzK3ItcypyLGg9MipzLWM7bD1yZS5faHVlMnJnYihoLGMsbisxLzMpLG89cmUuX2h1ZTJyZ2IoaCxjLG4pLHU9cmUuX2h1ZTJyZ2IoaCxjLG4tMS8zKX1yZXR1cm4gbmV3IE8oTWF0aC5yb3VuZChsKjI1NSksTWF0aC5yb3VuZChvKjI1NSksTWF0aC5yb3VuZCh1KjI1NSksaSl9fWNsYXNzIFVle2NvbnN0cnVjdG9yKHQsbixyLHMpe3RoaXMuX2hzdmFCcmFuZD12b2lkIDAsdGhpcy5oPU1hdGgubWF4KE1hdGgubWluKDM2MCx0KSwwKXwwLHRoaXMucz12ZShNYXRoLm1heChNYXRoLm1pbigxLG4pLDApLDMpLHRoaXMudj12ZShNYXRoLm1heChNYXRoLm1pbigxLHIpLDApLDMpLHRoaXMuYT12ZShNYXRoLm1heChNYXRoLm1pbigxLHMpLDApLDMpfXN0YXRpYyBlcXVhbHModCxuKXtyZXR1cm4gdC5oPT09bi5oJiZ0LnM9PT1uLnMmJnQudj09PW4udiYmdC5hPT09bi5hfXN0YXRpYyBmcm9tUkdCQSh0KXtjb25zdCBuPXQuci8yNTUscj10LmcvMjU1LHM9dC5iLzI1NSxpPU1hdGgubWF4KG4scixzKSxsPU1hdGgubWluKG4scixzKSxvPWktbCx1PWk9PT0wPzA6by9pO2xldCBjO3JldHVybiBvPT09MD9jPTA6aT09PW4/Yz0oKHItcykvbyU2KzYpJTY6aT09PXI/Yz0ocy1uKS9vKzI6Yz0obi1yKS9vKzQsbmV3IFVlKE1hdGgucm91bmQoYyo2MCksdSxpLHQuYSl9c3RhdGljIHRvUkdCQSh0KXtjb25zdHtoOm4sczpyLHY6cyxhOml9PXQsbD1zKnIsbz1sKigxLU1hdGguYWJzKG4vNjAlMi0xKSksdT1zLWw7bGV0W2MsaCxmXT1bMCwwLDBdO3JldHVybiBuPDYwPyhjPWwsaD1vKTpuPDEyMD8oYz1vLGg9bCk6bjwxODA/KGg9bCxmPW8pOm48MjQwPyhoPW8sZj1sKTpuPDMwMD8oYz1vLGY9bCk6bjw9MzYwJiYoYz1sLGY9byksYz1NYXRoLnJvdW5kKChjK3UpKjI1NSksaD1NYXRoLnJvdW5kKChoK3UpKjI1NSksZj1NYXRoLnJvdW5kKChmK3UpKjI1NSksbmV3IE8oYyxoLGYsaSl9fWNsYXNzIEJ7c3RhdGljIGZyb21IZXgodCl7cmV0dXJuIEIuRm9ybWF0LkNTUy5wYXJzZUhleCh0KXx8Qi5yZWR9c3RhdGljIGVxdWFscyh0LG4pe3JldHVybiF0JiYhbj8hMDohdHx8IW4/ITE6dC5lcXVhbHMobil9Z2V0IGhzbGEoKXtyZXR1cm4gdGhpcy5faHNsYT90aGlzLl9oc2xhOnJlLmZyb21SR0JBKHRoaXMucmdiYSl9Z2V0IGhzdmEoKXtyZXR1cm4gdGhpcy5faHN2YT90aGlzLl9oc3ZhOlVlLmZyb21SR0JBKHRoaXMucmdiYSl9Y29uc3RydWN0b3IodCl7aWYodClpZih0IGluc3RhbmNlb2YgTyl0aGlzLnJnYmE9dDtlbHNlIGlmKHQgaW5zdGFuY2VvZiByZSl0aGlzLl9oc2xhPXQsdGhpcy5yZ2JhPXJlLnRvUkdCQSh0KTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBVZSl0aGlzLl9oc3ZhPXQsdGhpcy5yZ2JhPVVlLnRvUkdCQSh0KTtlbHNlIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2xvciBjdG9yIGFyZ3VtZW50Iik7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoIkNvbG9yIG5lZWRzIGEgdmFsdWUiKX1lcXVhbHModCl7cmV0dXJuISF0JiZPLmVxdWFscyh0aGlzLnJnYmEsdC5yZ2JhKSYmcmUuZXF1YWxzKHRoaXMuaHNsYSx0LmhzbGEpJiZVZS5lcXVhbHModGhpcy5oc3ZhLHQuaHN2YSl9Z2V0UmVsYXRpdmVMdW1pbmFuY2UoKXtjb25zdCB0PUIuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5yKSxuPUIuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5nKSxyPUIuX3JlbGF0aXZlTHVtaW5hbmNlRm9yQ29tcG9uZW50KHRoaXMucmdiYS5iKSxzPS4yMTI2KnQrLjcxNTIqbisuMDcyMipyO3JldHVybiB2ZShzLDQpfXN0YXRpYyBfcmVsYXRpdmVMdW1pbmFuY2VGb3JDb21wb25lbnQodCl7Y29uc3Qgbj10LzI1NTtyZXR1cm4gbjw9LjAzOTI4P24vMTIuOTI6TWF0aC5wb3coKG4rLjA1NSkvMS4wNTUsMi40KX1pc0xpZ2h0ZXIoKXtyZXR1cm4odGhpcy5yZ2JhLnIqMjk5K3RoaXMucmdiYS5nKjU4Nyt0aGlzLnJnYmEuYioxMTQpLzFlMz49MTI4fWlzTGlnaHRlclRoYW4odCl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG4+cn1pc0RhcmtlclRoYW4odCl7Y29uc3Qgbj10aGlzLmdldFJlbGF0aXZlTHVtaW5hbmNlKCkscj10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIG48cn1saWdodGVuKHQpe3JldHVybiBuZXcgQihuZXcgcmUodGhpcy5oc2xhLmgsdGhpcy5oc2xhLnMsdGhpcy5oc2xhLmwrdGhpcy5oc2xhLmwqdCx0aGlzLmhzbGEuYSkpfWRhcmtlbih0KXtyZXR1cm4gbmV3IEIobmV3IHJlKHRoaXMuaHNsYS5oLHRoaXMuaHNsYS5zLHRoaXMuaHNsYS5sLXRoaXMuaHNsYS5sKnQsdGhpcy5oc2xhLmEpKX10cmFuc3BhcmVudCh0KXtjb25zdHtyOm4sZzpyLGI6cyxhOml9PXRoaXMucmdiYTtyZXR1cm4gbmV3IEIobmV3IE8obixyLHMsaSp0KSl9aXNUcmFuc3BhcmVudCgpe3JldHVybiB0aGlzLnJnYmEuYT09PTB9aXNPcGFxdWUoKXtyZXR1cm4gdGhpcy5yZ2JhLmE9PT0xfW9wcG9zaXRlKCl7cmV0dXJuIG5ldyBCKG5ldyBPKDI1NS10aGlzLnJnYmEuciwyNTUtdGhpcy5yZ2JhLmcsMjU1LXRoaXMucmdiYS5iLHRoaXMucmdiYS5hKSl9bWFrZU9wYXF1ZSh0KXtpZih0aGlzLmlzT3BhcXVlKCl8fHQucmdiYS5hIT09MSlyZXR1cm4gdGhpcztjb25zdHtyOm4sZzpyLGI6cyxhOml9PXRoaXMucmdiYTtyZXR1cm4gbmV3IEIobmV3IE8odC5yZ2JhLnItaSoodC5yZ2JhLnItbiksdC5yZ2JhLmctaSoodC5yZ2JhLmctciksdC5yZ2JhLmItaSoodC5yZ2JhLmItcyksMSkpfXRvU3RyaW5nKCl7cmV0dXJuIHRoaXMuX3RvU3RyaW5nfHwodGhpcy5fdG9TdHJpbmc9Qi5Gb3JtYXQuQ1NTLmZvcm1hdCh0aGlzKSksdGhpcy5fdG9TdHJpbmd9c3RhdGljIGdldExpZ2h0ZXJDb2xvcih0LG4scil7aWYodC5pc0xpZ2h0ZXJUaGFuKG4pKXJldHVybiB0O3I9cnx8LjU7Y29uc3Qgcz10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCksaT1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9ciooaS1zKS9pLHQubGlnaHRlbihyKX1zdGF0aWMgZ2V0RGFya2VyQ29sb3IodCxuLHIpe2lmKHQuaXNEYXJrZXJUaGFuKG4pKXJldHVybiB0O3I9cnx8LjU7Y29uc3Qgcz10LmdldFJlbGF0aXZlTHVtaW5hbmNlKCksaT1uLmdldFJlbGF0aXZlTHVtaW5hbmNlKCk7cmV0dXJuIHI9cioocy1pKS9zLHQuZGFya2VuKHIpfX1CLndoaXRlPW5ldyBCKG5ldyBPKDI1NSwyNTUsMjU1LDEpKSxCLmJsYWNrPW5ldyBCKG5ldyBPKDAsMCwwLDEpKSxCLnJlZD1uZXcgQihuZXcgTygyNTUsMCwwLDEpKSxCLmJsdWU9bmV3IEIobmV3IE8oMCwwLDI1NSwxKSksQi5ncmVlbj1uZXcgQihuZXcgTygwLDI1NSwwLDEpKSxCLmN5YW49bmV3IEIobmV3IE8oMCwyNTUsMjU1LDEpKSxCLmxpZ2h0Z3JleT1uZXcgQihuZXcgTygyMTEsMjExLDIxMSwxKSksQi50cmFuc3BhcmVudD1uZXcgQihuZXcgTygwLDAsMCwwKSksZnVuY3Rpb24oZSl7KGZ1bmN0aW9uKHQpeyhmdW5jdGlvbihuKXtmdW5jdGlvbiByKG0pe3JldHVybiBtLnJnYmEuYT09PTE/YHJnYigke20ucmdiYS5yfSwgJHttLnJnYmEuZ30sICR7bS5yZ2JhLmJ9KWA6ZS5Gb3JtYXQuQ1NTLmZvcm1hdFJHQkEobSl9bi5mb3JtYXRSR0I9cjtmdW5jdGlvbiBzKG0pe3JldHVybmByZ2JhKCR7bS5yZ2JhLnJ9LCAke20ucmdiYS5nfSwgJHttLnJnYmEuYn0sICR7K20ucmdiYS5hLnRvRml4ZWQoMil9KWB9bi5mb3JtYXRSR0JBPXM7ZnVuY3Rpb24gaShtKXtyZXR1cm4gbS5oc2xhLmE9PT0xP2Boc2woJHttLmhzbGEuaH0sICR7KG0uaHNsYS5zKjEwMCkudG9GaXhlZCgyKX0lLCAkeyhtLmhzbGEubCoxMDApLnRvRml4ZWQoMil9JSlgOmUuRm9ybWF0LkNTUy5mb3JtYXRIU0xBKG0pfW4uZm9ybWF0SFNMPWk7ZnVuY3Rpb24gbChtKXtyZXR1cm5gaHNsYSgke20uaHNsYS5ofSwgJHsobS5oc2xhLnMqMTAwKS50b0ZpeGVkKDIpfSUsICR7KG0uaHNsYS5sKjEwMCkudG9GaXhlZCgyKX0lLCAke20uaHNsYS5hLnRvRml4ZWQoMil9KWB9bi5mb3JtYXRIU0xBPWw7ZnVuY3Rpb24gbyhtKXtjb25zdCBnPW0udG9TdHJpbmcoMTYpO3JldHVybiBnLmxlbmd0aCE9PTI/IjAiK2c6Z31mdW5jdGlvbiB1KG0pe3JldHVybmAjJHtvKG0ucmdiYS5yKX0ke28obS5yZ2JhLmcpfSR7byhtLnJnYmEuYil9YH1uLmZvcm1hdEhleD11O2Z1bmN0aW9uIGMobSxnPSExKXtyZXR1cm4gZyYmbS5yZ2JhLmE9PT0xP2UuRm9ybWF0LkNTUy5mb3JtYXRIZXgobSk6YCMke28obS5yZ2JhLnIpfSR7byhtLnJnYmEuZyl9JHtvKG0ucmdiYS5iKX0ke28oTWF0aC5yb3VuZChtLnJnYmEuYSoyNTUpKX1gfW4uZm9ybWF0SGV4QT1jO2Z1bmN0aW9uIGgobSl7cmV0dXJuIG0uaXNPcGFxdWUoKT9lLkZvcm1hdC5DU1MuZm9ybWF0SGV4KG0pOmUuRm9ybWF0LkNTUy5mb3JtYXRSR0JBKG0pfW4uZm9ybWF0PWg7ZnVuY3Rpb24gZihtKXtjb25zdCBnPW0ubGVuZ3RoO2lmKGc9PT0wfHxtLmNoYXJDb2RlQXQoMCkhPT0zNSlyZXR1cm4gbnVsbDtpZihnPT09Nyl7Y29uc3QgeD0xNipkKG0uY2hhckNvZGVBdCgxKSkrZChtLmNoYXJDb2RlQXQoMikpLHY9MTYqZChtLmNoYXJDb2RlQXQoMykpK2QobS5jaGFyQ29kZUF0KDQpKSxOPTE2KmQobS5jaGFyQ29kZUF0KDUpKStkKG0uY2hhckNvZGVBdCg2KSk7cmV0dXJuIG5ldyBlKG5ldyBPKHgsdixOLDEpKX1pZihnPT09OSl7Y29uc3QgeD0xNipkKG0uY2hhckNvZGVBdCgxKSkrZChtLmNoYXJDb2RlQXQoMikpLHY9MTYqZChtLmNoYXJDb2RlQXQoMykpK2QobS5jaGFyQ29kZUF0KDQpKSxOPTE2KmQobS5jaGFyQ29kZUF0KDUpKStkKG0uY2hhckNvZGVBdCg2KSksUz0xNipkKG0uY2hhckNvZGVBdCg3KSkrZChtLmNoYXJDb2RlQXQoOCkpO3JldHVybiBuZXcgZShuZXcgTyh4LHYsTixTLzI1NSkpfWlmKGc9PT00KXtjb25zdCB4PWQobS5jaGFyQ29kZUF0KDEpKSx2PWQobS5jaGFyQ29kZUF0KDIpKSxOPWQobS5jaGFyQ29kZUF0KDMpKTtyZXR1cm4gbmV3IGUobmV3IE8oMTYqeCt4LDE2KnYrdiwxNipOK04pKX1pZihnPT09NSl7Y29uc3QgeD1kKG0uY2hhckNvZGVBdCgxKSksdj1kKG0uY2hhckNvZGVBdCgyKSksTj1kKG0uY2hhckNvZGVBdCgzKSksUz1kKG0uY2hhckNvZGVBdCg0KSk7cmV0dXJuIG5ldyBlKG5ldyBPKDE2KngreCwxNip2K3YsMTYqTitOLCgxNipTK1MpLzI1NSkpfXJldHVybiBudWxsfW4ucGFyc2VIZXg9ZjtmdW5jdGlvbiBkKG0pe3N3aXRjaChtKXtjYXNlIDQ4OnJldHVybiAwO2Nhc2UgNDk6cmV0dXJuIDE7Y2FzZSA1MDpyZXR1cm4gMjtjYXNlIDUxOnJldHVybiAzO2Nhc2UgNTI6cmV0dXJuIDQ7Y2FzZSA1MzpyZXR1cm4gNTtjYXNlIDU0OnJldHVybiA2O2Nhc2UgNTU6cmV0dXJuIDc7Y2FzZSA1NjpyZXR1cm4gODtjYXNlIDU3OnJldHVybiA5O2Nhc2UgOTc6cmV0dXJuIDEwO2Nhc2UgNjU6cmV0dXJuIDEwO2Nhc2UgOTg6cmV0dXJuIDExO2Nhc2UgNjY6cmV0dXJuIDExO2Nhc2UgOTk6cmV0dXJuIDEyO2Nhc2UgNjc6cmV0dXJuIDEyO2Nhc2UgMTAwOnJldHVybiAxMztjYXNlIDY4OnJldHVybiAxMztjYXNlIDEwMTpyZXR1cm4gMTQ7Y2FzZSA2OTpyZXR1cm4gMTQ7Y2FzZSAxMDI6cmV0dXJuIDE1O2Nhc2UgNzA6cmV0dXJuIDE1fXJldHVybiAwfX0pKHQuQ1NTfHwodC5DU1M9e30pKX0pKGUuRm9ybWF0fHwoZS5Gb3JtYXQ9e30pKX0oQnx8KEI9e30pKTtmdW5jdGlvbiAkcihlKXtjb25zdCB0PVtdO2Zvcihjb25zdCBuIG9mIGUpe2NvbnN0IHI9TnVtYmVyKG4pOyhyfHxyPT09MCYmbi5yZXBsYWNlKC9ccy9nLCIiKSE9PSIiKSYmdC5wdXNoKHIpfXJldHVybiB0fWZ1bmN0aW9uIFh0KGUsdCxuLHIpe3JldHVybntyZWQ6ZS8yNTUsYmx1ZTpuLzI1NSxncmVlbjp0LzI1NSxhbHBoYTpyfX1mdW5jdGlvbiBKZShlLHQpe2NvbnN0IG49dC5pbmRleCxyPXRbMF0ubGVuZ3RoO2lmKCFuKXJldHVybjtjb25zdCBzPWUucG9zaXRpb25BdChuKTtyZXR1cm57c3RhcnRMaW5lTnVtYmVyOnMubGluZU51bWJlcixzdGFydENvbHVtbjpzLmNvbHVtbixlbmRMaW5lTnVtYmVyOnMubGluZU51bWJlcixlbmRDb2x1bW46cy5jb2x1bW4rcn19ZnVuY3Rpb24gYzEoZSx0KXtpZighZSlyZXR1cm47Y29uc3Qgbj1CLkZvcm1hdC5DU1MucGFyc2VIZXgodCk7aWYobilyZXR1cm57cmFuZ2U6ZSxjb2xvcjpYdChuLnJnYmEucixuLnJnYmEuZyxuLnJnYmEuYixuLnJnYmEuYSl9fWZ1bmN0aW9uIE9yKGUsdCxuKXtpZighZXx8dC5sZW5ndGghPT0xKXJldHVybjtjb25zdCBzPXRbMF0udmFsdWVzKCksaT0kcihzKTtyZXR1cm57cmFuZ2U6ZSxjb2xvcjpYdChpWzBdLGlbMV0saVsyXSxuP2lbM106MSl9fWZ1bmN0aW9uIEdyKGUsdCxuKXtpZighZXx8dC5sZW5ndGghPT0xKXJldHVybjtjb25zdCBzPXRbMF0udmFsdWVzKCksaT0kcihzKSxsPW5ldyBCKG5ldyByZShpWzBdLGlbMV0vMTAwLGlbMl0vMTAwLG4/aVszXToxKSk7cmV0dXJue3JhbmdlOmUsY29sb3I6WHQobC5yZ2JhLnIsbC5yZ2JhLmcsbC5yZ2JhLmIsbC5yZ2JhLmEpfX1mdW5jdGlvbiBZZShlLHQpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyI/Wy4uLmUubWF0Y2hBbGwodCldOmUuZmluZE1hdGNoZXModCl9ZnVuY3Rpb24gaDEoZSl7Y29uc3QgdD1bXSxyPVllKGUsL1xiKHJnYnxyZ2JhfGhzbHxoc2xhKShcKFswLTlccywuXCVdKlwpKXwoIykoW0EtRmEtZjAtOV17M30pXGJ8KCMpKFtBLUZhLWYwLTldezR9KVxifCgjKShbQS1GYS1mMC05XXs2fSlcYnwoIykoW0EtRmEtZjAtOV17OH0pXGIvZ20pO2lmKHIubGVuZ3RoPjApZm9yKGNvbnN0IHMgb2Ygcil7Y29uc3QgaT1zLmZpbHRlcihjPT5jIT09dm9pZCAwKSxsPWlbMV0sbz1pWzJdO2lmKCFvKWNvbnRpbnVlO2xldCB1O2lmKGw9PT0icmdiIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccypcKSQvZ207dT1PcihKZShlLHMpLFllKG8sYyksITEpfWVsc2UgaWYobD09PSJyZ2JhIil7Y29uc3QgYz0vXlwoXHMqKDI1WzAtNV18MlswLTRdWzAtOV18MVswLTldezJ9fFsxLTldWzAtOV18WzAtOV0pXHMqLFxzKigyNVswLTVdfDJbMC00XVswLTldfDFbMC05XXsyfXxbMS05XVswLTldfFswLTldKVxzKixccyooMjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV17Mn18WzEtOV1bMC05XXxbMC05XSlccyosXHMqKDBbLl1bMC05XSt8Wy5dWzAtOV0rfFswMV1bLl18WzAxXSlccypcKSQvZ207dT1PcihKZShlLHMpLFllKG8sYyksITApfWVsc2UgaWYobD09PSJoc2wiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKlwpJC9nbTt1PUdyKEplKGUscyksWWUobyxjKSwhMSl9ZWxzZSBpZihsPT09ImhzbGEiKXtjb25zdCBjPS9eXChccyooMzZbMF18M1swLTVdWzAtOV18WzEyXVswLTldWzAtOV18WzEtOV0/WzAtOV0pXHMqLFxzKigxMDB8XGR7MSwyfVsuXVxkKnxcZHsxLDJ9KSVccyosXHMqKDEwMHxcZHsxLDJ9Wy5dXGQqfFxkezEsMn0pJVxzKixccyooMFsuXVswLTldK3xbLl1bMC05XSt8WzAxXVsuXXxbMDFdKVxzKlwpJC9nbTt1PUdyKEplKGUscyksWWUobyxjKSwhMCl9ZWxzZSBsPT09IiMiJiYodT1jMShKZShlLHMpLGwrbykpO3UmJnQucHVzaCh1KX1yZXR1cm4gdH1mdW5jdGlvbiBmMShlKXtyZXR1cm4hZXx8dHlwZW9mIGUuZ2V0VmFsdWUhPSJmdW5jdGlvbiJ8fHR5cGVvZiBlLnBvc2l0aW9uQXQhPSJmdW5jdGlvbiI/W106aDEoZSl9Y29uc3QganI9L1xiTUFSSzpccyooLiopJC9kLGQxPS9eLSt8LSskL2c7ZnVuY3Rpb24gbTEoZSx0KXt2YXIgbjtsZXQgcj1bXTtpZih0LmZpbmRSZWdpb25TZWN0aW9uSGVhZGVycyYmKCEoKG49dC5mb2xkaW5nUnVsZXMpPT09bnVsbHx8bj09PXZvaWQgMCkmJm4ubWFya2Vycykpe2NvbnN0IHM9ZzEoZSx0KTtyPXIuY29uY2F0KHMpfWlmKHQuZmluZE1hcmtTZWN0aW9uSGVhZGVycyl7Y29uc3Qgcz1iMShlKTtyPXIuY29uY2F0KHMpfXJldHVybiByfWZ1bmN0aW9uIGcxKGUsdCl7Y29uc3Qgbj1bXSxyPWUuZ2V0TGluZUNvdW50KCk7Zm9yKGxldCBzPTE7czw9cjtzKyspe2NvbnN0IGk9ZS5nZXRMaW5lQ29udGVudChzKSxsPWkubWF0Y2godC5mb2xkaW5nUnVsZXMubWFya2Vycy5zdGFydCk7aWYobCl7Y29uc3Qgbz17c3RhcnRMaW5lTnVtYmVyOnMsc3RhcnRDb2x1bW46bFswXS5sZW5ndGgrMSxlbmRMaW5lTnVtYmVyOnMsZW5kQ29sdW1uOmkubGVuZ3RoKzF9O2lmKG8uZW5kQ29sdW1uPm8uc3RhcnRDb2x1bW4pe2NvbnN0IHU9e3JhbmdlOm8sLi4uUXIoaS5zdWJzdHJpbmcobFswXS5sZW5ndGgpKSxzaG91bGRCZUluQ29tbWVudHM6ITF9Oyh1LnRleHR8fHUuaGFzU2VwYXJhdG9yTGluZSkmJm4ucHVzaCh1KX19fXJldHVybiBufWZ1bmN0aW9uIGIxKGUpe2NvbnN0IHQ9W10sbj1lLmdldExpbmVDb3VudCgpO2ZvcihsZXQgcj0xO3I8PW47cisrKXtjb25zdCBzPWUuZ2V0TGluZUNvbnRlbnQocik7XzEocyxyLHQpfXJldHVybiB0fWZ1bmN0aW9uIF8xKGUsdCxuKXtqci5sYXN0SW5kZXg9MDtjb25zdCByPWpyLmV4ZWMoZSk7aWYocil7Y29uc3Qgcz1yLmluZGljZXNbMV1bMF0rMSxpPXIuaW5kaWNlc1sxXVsxXSsxLGw9e3N0YXJ0TGluZU51bWJlcjp0LHN0YXJ0Q29sdW1uOnMsZW5kTGluZU51bWJlcjp0LGVuZENvbHVtbjppfTtpZihsLmVuZENvbHVtbj5sLnN0YXJ0Q29sdW1uKXtjb25zdCBvPXtyYW5nZTpsLC4uLlFyKHJbMV0pLHNob3VsZEJlSW5Db21tZW50czohMH07KG8udGV4dHx8by5oYXNTZXBhcmF0b3JMaW5lKSYmbi5wdXNoKG8pfX19ZnVuY3Rpb24gUXIoZSl7ZT1lLnRyaW0oKTtjb25zdCB0PWUuc3RhcnRzV2l0aCgiLSIpO3JldHVybiBlPWUucmVwbGFjZShkMSwiIikse3RleHQ6ZSxoYXNTZXBhcmF0b3JMaW5lOnR9fWNsYXNzIHgxIGV4dGVuZHMgb2l7Z2V0IHVyaSgpe3JldHVybiB0aGlzLl91cml9Z2V0IGVvbCgpe3JldHVybiB0aGlzLl9lb2x9Z2V0VmFsdWUoKXtyZXR1cm4gdGhpcy5nZXRUZXh0KCl9ZmluZE1hdGNoZXModCl7Y29uc3Qgbj1bXTtmb3IobGV0IHI9MDtyPHRoaXMuX2xpbmVzLmxlbmd0aDtyKyspe2NvbnN0IHM9dGhpcy5fbGluZXNbcl0saT10aGlzLm9mZnNldEF0KG5ldyBKKHIrMSwxKSksbD1zLm1hdGNoQWxsKHQpO2Zvcihjb25zdCBvIG9mIGwpKG8uaW5kZXh8fG8uaW5kZXg9PT0wKSYmKG8uaW5kZXg9by5pbmRleCtpKSxuLnB1c2gobyl9cmV0dXJuIG59Z2V0TGluZXNDb250ZW50KCl7cmV0dXJuIHRoaXMuX2xpbmVzLnNsaWNlKDApfWdldExpbmVDb3VudCgpe3JldHVybiB0aGlzLl9saW5lcy5sZW5ndGh9Z2V0TGluZUNvbnRlbnQodCl7cmV0dXJuIHRoaXMuX2xpbmVzW3QtMV19Z2V0V29yZEF0UG9zaXRpb24odCxuKXtjb25zdCByPUZ0KHQuY29sdW1uLHduKG4pLHRoaXMuX2xpbmVzW3QubGluZU51bWJlci0xXSwwKTtyZXR1cm4gcj9uZXcgUCh0LmxpbmVOdW1iZXIsci5zdGFydENvbHVtbix0LmxpbmVOdW1iZXIsci5lbmRDb2x1bW4pOm51bGx9d29yZHModCl7Y29uc3Qgbj10aGlzLl9saW5lcyxyPXRoaXMuX3dvcmRlbml6ZS5iaW5kKHRoaXMpO2xldCBzPTAsaT0iIixsPTAsbz1bXTtyZXR1cm57KltTeW1ib2wuaXRlcmF0b3JdKCl7Zm9yKDs7KWlmKGw8by5sZW5ndGgpe2NvbnN0IHU9aS5zdWJzdHJpbmcob1tsXS5zdGFydCxvW2xdLmVuZCk7bCs9MSx5aWVsZCB1fWVsc2UgaWYoczxuLmxlbmd0aClpPW5bc10sbz1yKGksdCksbD0wLHMrPTE7ZWxzZSBicmVha319fWdldExpbmVXb3Jkcyh0LG4pe2NvbnN0IHI9dGhpcy5fbGluZXNbdC0xXSxzPXRoaXMuX3dvcmRlbml6ZShyLG4pLGk9W107Zm9yKGNvbnN0IGwgb2YgcylpLnB1c2goe3dvcmQ6ci5zdWJzdHJpbmcobC5zdGFydCxsLmVuZCksc3RhcnRDb2x1bW46bC5zdGFydCsxLGVuZENvbHVtbjpsLmVuZCsxfSk7cmV0dXJuIGl9X3dvcmRlbml6ZSh0LG4pe2NvbnN0IHI9W107bGV0IHM7Zm9yKG4ubGFzdEluZGV4PTA7KHM9bi5leGVjKHQpKSYmc1swXS5sZW5ndGghPT0wOylyLnB1c2goe3N0YXJ0OnMuaW5kZXgsZW5kOnMuaW5kZXgrc1swXS5sZW5ndGh9KTtyZXR1cm4gcn1nZXRWYWx1ZUluUmFuZ2UodCl7aWYodD10aGlzLl92YWxpZGF0ZVJhbmdlKHQpLHQuc3RhcnRMaW5lTnVtYmVyPT09dC5lbmRMaW5lTnVtYmVyKXJldHVybiB0aGlzLl9saW5lc1t0LnN0YXJ0TGluZU51bWJlci0xXS5zdWJzdHJpbmcodC5zdGFydENvbHVtbi0xLHQuZW5kQ29sdW1uLTEpO2NvbnN0IG49dGhpcy5fZW9sLHI9dC5zdGFydExpbmVOdW1iZXItMSxzPXQuZW5kTGluZU51bWJlci0xLGk9W107aS5wdXNoKHRoaXMuX2xpbmVzW3JdLnN1YnN0cmluZyh0LnN0YXJ0Q29sdW1uLTEpKTtmb3IobGV0IGw9cisxO2w8cztsKyspaS5wdXNoKHRoaXMuX2xpbmVzW2xdKTtyZXR1cm4gaS5wdXNoKHRoaXMuX2xpbmVzW3NdLnN1YnN0cmluZygwLHQuZW5kQ29sdW1uLTEpKSxpLmpvaW4obil9b2Zmc2V0QXQodCl7cmV0dXJuIHQ9dGhpcy5fdmFsaWRhdGVQb3NpdGlvbih0KSx0aGlzLl9lbnN1cmVMaW5lU3RhcnRzKCksdGhpcy5fbGluZVN0YXJ0cy5nZXRQcmVmaXhTdW0odC5saW5lTnVtYmVyLTIpKyh0LmNvbHVtbi0xKX1wb3NpdGlvbkF0KHQpe3Q9TWF0aC5mbG9vcih0KSx0PU1hdGgubWF4KDAsdCksdGhpcy5fZW5zdXJlTGluZVN0YXJ0cygpO2NvbnN0IG49dGhpcy5fbGluZVN0YXJ0cy5nZXRJbmRleE9mKHQpLHI9dGhpcy5fbGluZXNbbi5pbmRleF0ubGVuZ3RoO3JldHVybntsaW5lTnVtYmVyOjErbi5pbmRleCxjb2x1bW46MStNYXRoLm1pbihuLnJlbWFpbmRlcixyKX19X3ZhbGlkYXRlUmFuZ2UodCl7Y29uc3Qgbj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjp0LnN0YXJ0Q29sdW1ufSkscj10aGlzLl92YWxpZGF0ZVBvc2l0aW9uKHtsaW5lTnVtYmVyOnQuZW5kTGluZU51bWJlcixjb2x1bW46dC5lbmRDb2x1bW59KTtyZXR1cm4gbi5saW5lTnVtYmVyIT09dC5zdGFydExpbmVOdW1iZXJ8fG4uY29sdW1uIT09dC5zdGFydENvbHVtbnx8ci5saW5lTnVtYmVyIT09dC5lbmRMaW5lTnVtYmVyfHxyLmNvbHVtbiE9PXQuZW5kQ29sdW1uP3tzdGFydExpbmVOdW1iZXI6bi5saW5lTnVtYmVyLHN0YXJ0Q29sdW1uOm4uY29sdW1uLGVuZExpbmVOdW1iZXI6ci5saW5lTnVtYmVyLGVuZENvbHVtbjpyLmNvbHVtbn06dH1fdmFsaWRhdGVQb3NpdGlvbih0KXtpZighSi5pc0lQb3NpdGlvbih0KSl0aHJvdyBuZXcgRXJyb3IoImJhZCBwb3NpdGlvbiIpO2xldHtsaW5lTnVtYmVyOm4sY29sdW1uOnJ9PXQscz0hMTtpZihuPDEpbj0xLHI9MSxzPSEwO2Vsc2UgaWYobj50aGlzLl9saW5lcy5sZW5ndGgpbj10aGlzLl9saW5lcy5sZW5ndGgscj10aGlzLl9saW5lc1tuLTFdLmxlbmd0aCsxLHM9ITA7ZWxzZXtjb25zdCBpPXRoaXMuX2xpbmVzW24tMV0ubGVuZ3RoKzE7cjwxPyhyPTEscz0hMCk6cj5pJiYocj1pLHM9ITApfXJldHVybiBzP3tsaW5lTnVtYmVyOm4sY29sdW1uOnJ9OnR9fWNsYXNzIFNle2NvbnN0cnVjdG9yKHQsbil7dGhpcy5faG9zdD10LHRoaXMuX21vZGVscz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5PW4sdGhpcy5fZm9yZWlnbk1vZHVsZT1udWxsfWRpc3Bvc2UoKXt0aGlzLl9tb2RlbHM9T2JqZWN0LmNyZWF0ZShudWxsKX1fZ2V0TW9kZWwodCl7cmV0dXJuIHRoaXMuX21vZGVsc1t0XX1fZ2V0TW9kZWxzKCl7Y29uc3QgdD1bXTtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9kZWxzKS5mb3JFYWNoKG49PnQucHVzaCh0aGlzLl9tb2RlbHNbbl0pKSx0fWFjY2VwdE5ld01vZGVsKHQpe3RoaXMuX21vZGVsc1t0LnVybF09bmV3IHgxKE5lLnBhcnNlKHQudXJsKSx0LmxpbmVzLHQuRU9MLHQudmVyc2lvbklkKX1hY2NlcHRNb2RlbENoYW5nZWQodCxuKXtpZighdGhpcy5fbW9kZWxzW3RdKXJldHVybjt0aGlzLl9tb2RlbHNbdF0ub25FdmVudHMobil9YWNjZXB0UmVtb3ZlZE1vZGVsKHQpe3RoaXMuX21vZGVsc1t0XSYmZGVsZXRlIHRoaXMuX21vZGVsc1t0XX1hc3luYyBjb21wdXRlVW5pY29kZUhpZ2hsaWdodHModCxuLHIpe2NvbnN0IHM9dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIHM/VmkuY29tcHV0ZVVuaWNvZGVIaWdobGlnaHRzKHMsbixyKTp7cmFuZ2VzOltdLGhhc01vcmU6ITEsYW1iaWd1b3VzQ2hhcmFjdGVyQ291bnQ6MCxpbnZpc2libGVDaGFyYWN0ZXJDb3VudDowLG5vbkJhc2ljQXNjaWlDaGFyYWN0ZXJDb3VudDowfX1hc3luYyBmaW5kU2VjdGlvbkhlYWRlcnModCxuKXtjb25zdCByPXRoaXMuX2dldE1vZGVsKHQpO3JldHVybiByP20xKHIsbik6W119YXN5bmMgY29tcHV0ZURpZmYodCxuLHIscyl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KSxsPXRoaXMuX2dldE1vZGVsKG4pO3JldHVybiFpfHwhbD9udWxsOlNlLmNvbXB1dGVEaWZmKGksbCxyLHMpfXN0YXRpYyBjb21wdXRlRGlmZih0LG4scixzKXtjb25zdCBpPXM9PT0iYWR2YW5jZWQiP3pyLmdldERlZmF1bHQoKTp6ci5nZXRMZWdhY3koKSxsPXQuZ2V0TGluZXNDb250ZW50KCksbz1uLmdldExpbmVzQ29udGVudCgpLHU9aS5jb21wdXRlRGlmZihsLG8sciksYz11LmNoYW5nZXMubGVuZ3RoPjA/ITE6dGhpcy5fbW9kZWxzQXJlSWRlbnRpY2FsKHQsbik7ZnVuY3Rpb24gaChmKXtyZXR1cm4gZi5tYXAoZD0+e3ZhciBtO3JldHVybltkLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixkLm9yaWdpbmFsLmVuZExpbmVOdW1iZXJFeGNsdXNpdmUsZC5tb2RpZmllZC5zdGFydExpbmVOdW1iZXIsZC5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLChtPWQuaW5uZXJDaGFuZ2VzKT09PW51bGx8fG09PT12b2lkIDA/dm9pZCAwOm0ubWFwKGc9PltnLm9yaWdpbmFsUmFuZ2Uuc3RhcnRMaW5lTnVtYmVyLGcub3JpZ2luYWxSYW5nZS5zdGFydENvbHVtbixnLm9yaWdpbmFsUmFuZ2UuZW5kTGluZU51bWJlcixnLm9yaWdpbmFsUmFuZ2UuZW5kQ29sdW1uLGcubW9kaWZpZWRSYW5nZS5zdGFydExpbmVOdW1iZXIsZy5tb2RpZmllZFJhbmdlLnN0YXJ0Q29sdW1uLGcubW9kaWZpZWRSYW5nZS5lbmRMaW5lTnVtYmVyLGcubW9kaWZpZWRSYW5nZS5lbmRDb2x1bW5dKV19KX1yZXR1cm57aWRlbnRpY2FsOmMscXVpdEVhcmx5OnUuaGl0VGltZW91dCxjaGFuZ2VzOmgodS5jaGFuZ2VzKSxtb3Zlczp1Lm1vdmVzLm1hcChmPT5bZi5saW5lUmFuZ2VNYXBwaW5nLm9yaWdpbmFsLnN0YXJ0TGluZU51bWJlcixmLmxpbmVSYW5nZU1hcHBpbmcub3JpZ2luYWwuZW5kTGluZU51bWJlckV4Y2x1c2l2ZSxmLmxpbmVSYW5nZU1hcHBpbmcubW9kaWZpZWQuc3RhcnRMaW5lTnVtYmVyLGYubGluZVJhbmdlTWFwcGluZy5tb2RpZmllZC5lbmRMaW5lTnVtYmVyRXhjbHVzaXZlLGgoZi5jaGFuZ2VzKV0pfX1zdGF0aWMgX21vZGVsc0FyZUlkZW50aWNhbCh0LG4pe2NvbnN0IHI9dC5nZXRMaW5lQ291bnQoKSxzPW4uZ2V0TGluZUNvdW50KCk7aWYociE9PXMpcmV0dXJuITE7Zm9yKGxldCBpPTE7aTw9cjtpKyspe2NvbnN0IGw9dC5nZXRMaW5lQ29udGVudChpKSxvPW4uZ2V0TGluZUNvbnRlbnQoaSk7aWYobCE9PW8pcmV0dXJuITF9cmV0dXJuITB9YXN5bmMgY29tcHV0ZU1vcmVNaW5pbWFsRWRpdHModCxuLHIpe2NvbnN0IHM9dGhpcy5fZ2V0TW9kZWwodCk7aWYoIXMpcmV0dXJuIG47Y29uc3QgaT1bXTtsZXQgbDtuPW4uc2xpY2UoMCkuc29ydCgodSxjKT0+e2lmKHUucmFuZ2UmJmMucmFuZ2UpcmV0dXJuIFAuY29tcGFyZVJhbmdlc1VzaW5nU3RhcnRzKHUucmFuZ2UsYy5yYW5nZSk7Y29uc3QgaD11LnJhbmdlPzA6MSxmPWMucmFuZ2U/MDoxO3JldHVybiBoLWZ9KTtsZXQgbz0wO2ZvcihsZXQgdT0xO3U8bi5sZW5ndGg7dSsrKVAuZ2V0RW5kUG9zaXRpb24obltvXS5yYW5nZSkuZXF1YWxzKFAuZ2V0U3RhcnRQb3NpdGlvbihuW3VdLnJhbmdlKSk/KG5bb10ucmFuZ2U9UC5mcm9tUG9zaXRpb25zKFAuZ2V0U3RhcnRQb3NpdGlvbihuW29dLnJhbmdlKSxQLmdldEVuZFBvc2l0aW9uKG5bdV0ucmFuZ2UpKSxuW29dLnRleHQrPW5bdV0udGV4dCk6KG8rKyxuW29dPW5bdV0pO24ubGVuZ3RoPW8rMTtmb3IobGV0e3JhbmdlOnUsdGV4dDpjLGVvbDpofW9mIG4pe2lmKHR5cGVvZiBoPT0ibnVtYmVyIiYmKGw9aCksUC5pc0VtcHR5KHUpJiYhYyljb250aW51ZTtjb25zdCBmPXMuZ2V0VmFsdWVJblJhbmdlKHUpO2lmKGM9Yy5yZXBsYWNlKC9cclxufFxufFxyL2cscy5lb2wpLGY9PT1jKWNvbnRpbnVlO2lmKE1hdGgubWF4KGMubGVuZ3RoLGYubGVuZ3RoKT5TZS5fZGlmZkxpbWl0KXtpLnB1c2goe3JhbmdlOnUsdGV4dDpjfSk7Y29udGludWV9Y29uc3QgZD1WcyhmLGMsciksbT1zLm9mZnNldEF0KFAubGlmdCh1KS5nZXRTdGFydFBvc2l0aW9uKCkpO2Zvcihjb25zdCBnIG9mIGQpe2NvbnN0IHg9cy5wb3NpdGlvbkF0KG0rZy5vcmlnaW5hbFN0YXJ0KSx2PXMucG9zaXRpb25BdChtK2cub3JpZ2luYWxTdGFydCtnLm9yaWdpbmFsTGVuZ3RoKSxOPXt0ZXh0OmMuc3Vic3RyKGcubW9kaWZpZWRTdGFydCxnLm1vZGlmaWVkTGVuZ3RoKSxyYW5nZTp7c3RhcnRMaW5lTnVtYmVyOngubGluZU51bWJlcixzdGFydENvbHVtbjp4LmNvbHVtbixlbmRMaW5lTnVtYmVyOnYubGluZU51bWJlcixlbmRDb2x1bW46di5jb2x1bW59fTtzLmdldFZhbHVlSW5SYW5nZShOLnJhbmdlKSE9PU4udGV4dCYmaS5wdXNoKE4pfX1yZXR1cm4gdHlwZW9mIGw9PSJudW1iZXIiJiZpLnB1c2goe2VvbDpsLHRleHQ6IiIscmFuZ2U6e3N0YXJ0TGluZU51bWJlcjowLHN0YXJ0Q29sdW1uOjAsZW5kTGluZU51bWJlcjowLGVuZENvbHVtbjowfX0pLGl9YXN5bmMgY29tcHV0ZUxpbmtzKHQpe2NvbnN0IG49dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIG4/Ymkobik6bnVsbH1hc3luYyBjb21wdXRlRGVmYXVsdERvY3VtZW50Q29sb3JzKHQpe2NvbnN0IG49dGhpcy5fZ2V0TW9kZWwodCk7cmV0dXJuIG4/ZjEobik6bnVsbH1hc3luYyB0ZXh0dWFsU3VnZ2VzdCh0LG4scixzKXtjb25zdCBpPW5ldyBldCxsPW5ldyBSZWdFeHAocixzKSxvPW5ldyBTZXQ7ZTpmb3IoY29uc3QgdSBvZiB0KXtjb25zdCBjPXRoaXMuX2dldE1vZGVsKHUpO2lmKGMpe2Zvcihjb25zdCBoIG9mIGMud29yZHMobCkpaWYoIShoPT09bnx8IWlzTmFOKE51bWJlcihoKSkpJiYoby5hZGQoaCksby5zaXplPlNlLl9zdWdnZXN0aW9uc0xpbWl0KSlicmVhayBlfX1yZXR1cm57d29yZHM6QXJyYXkuZnJvbShvKSxkdXJhdGlvbjppLmVsYXBzZWQoKX19YXN5bmMgY29tcHV0ZVdvcmRSYW5nZXModCxuLHIscyl7Y29uc3QgaT10aGlzLl9nZXRNb2RlbCh0KTtpZighaSlyZXR1cm4gT2JqZWN0LmNyZWF0ZShudWxsKTtjb25zdCBsPW5ldyBSZWdFeHAocixzKSxvPU9iamVjdC5jcmVhdGUobnVsbCk7Zm9yKGxldCB1PW4uc3RhcnRMaW5lTnVtYmVyO3U8bi5lbmRMaW5lTnVtYmVyO3UrKyl7Y29uc3QgYz1pLmdldExpbmVXb3Jkcyh1LGwpO2Zvcihjb25zdCBoIG9mIGMpe2lmKCFpc05hTihOdW1iZXIoaC53b3JkKSkpY29udGludWU7bGV0IGY9b1toLndvcmRdO2Z8fChmPVtdLG9baC53b3JkXT1mKSxmLnB1c2goe3N0YXJ0TGluZU51bWJlcjp1LHN0YXJ0Q29sdW1uOmguc3RhcnRDb2x1bW4sZW5kTGluZU51bWJlcjp1LGVuZENvbHVtbjpoLmVuZENvbHVtbn0pfX1yZXR1cm4gb31hc3luYyBuYXZpZ2F0ZVZhbHVlU2V0KHQsbixyLHMsaSl7Y29uc3QgbD10aGlzLl9nZXRNb2RlbCh0KTtpZighbClyZXR1cm4gbnVsbDtjb25zdCBvPW5ldyBSZWdFeHAocyxpKTtuLnN0YXJ0Q29sdW1uPT09bi5lbmRDb2x1bW4mJihuPXtzdGFydExpbmVOdW1iZXI6bi5zdGFydExpbmVOdW1iZXIsc3RhcnRDb2x1bW46bi5zdGFydENvbHVtbixlbmRMaW5lTnVtYmVyOm4uZW5kTGluZU51bWJlcixlbmRDb2x1bW46bi5lbmRDb2x1bW4rMX0pO2NvbnN0IHU9bC5nZXRWYWx1ZUluUmFuZ2UobiksYz1sLmdldFdvcmRBdFBvc2l0aW9uKHtsaW5lTnVtYmVyOm4uc3RhcnRMaW5lTnVtYmVyLGNvbHVtbjpuLnN0YXJ0Q29sdW1ufSxvKTtpZighYylyZXR1cm4gbnVsbDtjb25zdCBoPWwuZ2V0VmFsdWVJblJhbmdlKGMpO3JldHVybiBUdC5JTlNUQU5DRS5uYXZpZ2F0ZVZhbHVlU2V0KG4sdSxjLGgscil9bG9hZEZvcmVpZ25Nb2R1bGUodCxuLHIpe2NvbnN0IGw9e2hvc3Q6dXMociwobyx1KT0+dGhpcy5faG9zdC5maHIobyx1KSksZ2V0TWlycm9yTW9kZWxzOigpPT50aGlzLl9nZXRNb2RlbHMoKX07cmV0dXJuIHRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5Pyh0aGlzLl9mb3JlaWduTW9kdWxlPXRoaXMuX2ZvcmVpZ25Nb2R1bGVGYWN0b3J5KGwsbiksUHJvbWlzZS5yZXNvbHZlKHZ0KHRoaXMuX2ZvcmVpZ25Nb2R1bGUpKSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJVbmV4cGVjdGVkIHVzYWdlIikpfWZtcih0LG4pe2lmKCF0aGlzLl9mb3JlaWduTW9kdWxlfHx0eXBlb2YgdGhpcy5fZm9yZWlnbk1vZHVsZVt0XSE9ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJNaXNzaW5nIHJlcXVlc3RIYW5kbGVyIG9yIG1ldGhvZDogIit0KSk7dHJ5e3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fZm9yZWlnbk1vZHVsZVt0XS5hcHBseSh0aGlzLl9mb3JlaWduTW9kdWxlLG4pKX1jYXRjaChyKXtyZXR1cm4gUHJvbWlzZS5yZWplY3Qocil9fX1TZS5fZGlmZkxpbWl0PTFlNSxTZS5fc3VnZ2VzdGlvbnNMaW1pdD0xZTQsdHlwZW9mIGltcG9ydFNjcmlwdHM9PSJmdW5jdGlvbiImJihnbG9iYWxUaGlzLm1vbmFjbz1SaSgpKTtsZXQgSnQ9ITE7ZnVuY3Rpb24gcDEoZSl7aWYoSnQpcmV0dXJuO0p0PSEwO2NvbnN0IHQ9bmV3IERzKG49PntnbG9iYWxUaGlzLnBvc3RNZXNzYWdlKG4pfSxuPT5uZXcgU2UobixlKSk7Z2xvYmFsVGhpcy5vbm1lc3NhZ2U9bj0+e3Qub25tZXNzYWdlKG4uZGF0YSl9fWdsb2JhbFRoaXMub25tZXNzYWdlPWU9PntKdHx8cDEobnVsbCl9fSkoKTsK",m=l=>Uint8Array.from(atob(l),Z=>Z.charCodeAt(0)),d=typeof self<"u"&&self.Blob&&new Blob([m(c)],{type:"text/javascript;charset=utf-8"});function W(l){let Z;try{if(Z=d&&(self.URL||self.webkitURL).createObjectURL(d),!Z)throw"";const b=new Worker(Z,{name:l==null?void 0:l.name});return b.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(Z)}),b}catch(b){return new Worker("data:text/javascript;base64,"+c,{name:l==null?void 0:l.name})}finally{Z&&(self.URL||self.webkitURL).revokeObjectURL(Z)}}export{W as default};
|